Appliances
UnoDOS can run another operating system inside a window on the desktop. An appliance is a Linux system that UnoDOS boots itself, on the same machine, at the same time - with a screen you can see, a keyboard it answers, and a connection of its own on your real network. Chromium runs in one.
What it actually does
Open Appliances from the Start menu or its desktop icon. It has three views, and Tab moves between them: a list of the appliances this machine has, the console of the one that is running, and its display.
The console is the guest's serial port. What you type goes in at exactly the place a real keystroke would arrive, so the guest's own driver wakes up and its own shell reads the byte. Nothing is being simulated at the top: a Linux shell reads your command and answers it.
F12 leaves the display and gives the keyboard back to the desktop.
The browser appliance
The appliance that makes the point is a small Alpine system running Chromium in a kiosk compositor. It takes its own address from your router, resolves names, validates certificates and renders live pages - inside a window on the UnoDOS desktop.
You can drive it from the host. Ctrl+L focuses the address bar, and what you type goes to the guest's browser letter by letter through the emulated keyboard.
One appliance, different applications
Which application the appliance runs is a small description file rather than a different build, so the same kernel and the same machinery run something else by naming it. GIMP is the second one, and it needed nothing from the hypervisor that the browser had not already needed.
What your machine needs
Hardware virtualisation, which most PCs made since about 2010 have but many ship with turned off. The status line above the buttons tells you which it is, in one sentence, when you try to start an appliance. If it is off, turn on Intel VT-x or AMD-V (sometimes SVM Mode) in the firmware setup and start again.
Memory is the other requirement. UnoDOS sets aside a block of it for guests while it is starting up, and how much it can spare depends on the machine. On a machine with too little to set aside there is no guest at all, and the status line says so.
Making an appliance
New adds a row, and each row is four things you can edit:
| Field | What it is |
|---|---|
| Name | What you want to call it |
| Kernel | A Linux bzImage on a UnoDOS volume |
| Initrd | An initial ramdisk, usually a small busybox image. May be empty. |
| Disk | A disk image file, which the guest sees as a drive. May be empty. |
Copy the kernel and initrd onto the UnoDOS disk the same way you would copy anything else, then name
them here. Start boots it, Console switches to its console and
Stop shuts it down. A brand-new appliance with its paths left empty boots whatever is
already staged in EFI\UNODOS\VM, so it starts rather than failing at you.
Your appliances are kept in EFI\UNODOS\VM\VMS.CFG, one line each, as plain text. It
is deliberately a file you can read and fix in the Editor rather than something only the app
understands, and it holds up to eight appliances.
Foreign apps, and what works today
The same machinery is meant to end somewhere specific: you double-click an Android .APK
in Files, an icon appears on the desktop, and opening it opens a window. No launcher, and nothing on
screen that says "Android".
One consequence is worth knowing even at this stage: the package file is not copied onto the UnoDOS disk, because the filesystem underneath writes whole files only and a large package would have to be held in memory all at once. The installed app remembers where you put the package, so deleting or unplugging it leaves an app that reports its package is missing.
What it cannot do yet
- One appliance at a time. Start refuses while another is running rather than quietly replacing it. This is a real limit of how the guest is set up, not an oversight.
- Guest disks are read-only. The guest can mount a disk image and read it; it cannot write to it. Writing needs a change further down in the filesystem code.
- The pointer drifts. The emulated mouse reports movement rather than position, so the guest's pointer and yours gradually disagree and a target moves as you reach for it. The keyboard does not have this problem.
- No kernel is included. UnoDOS does not ship a Linux to run, so a fresh appliance has nothing to boot until you put a kernel on the disk.
- Proven on Intel. Everything above has been demonstrated on Intel VT-x. The AMD side is written and builds, but has not yet been seen to run a guest, so on an AMD machine treat this as untested rather than supported.
- The guest gets a slice, not a core. It runs a short budget of time each frame alongside the desktop, so it is unhurried by design. It is for a shell, a browser and a service, not for work you are timing.
- The guest has a coarse clock. It settles on a 10 ms timer rather than anything finer, which is fine for everything above and wrong for anything that measures itself.