Old systems welcome
Why
Old systems still do work: accounting software, machine control programs, tools that only run on one Windows version. Many moved into VMware years ago. To run them on keelOS without changing the guest, keelOS gives them the virtual hardware ESXi and QEMU/KVM give them.
What was added
- SeaBIOS as firmware for legacy BIOS guests, as in QEMU/KVM:
"bootrom": "bios". - Three new devices written from the hardware manuals: a PIIX3 IDE controller (disks and ATAPI CD), an AMD PCnet network card, and a UHCI USB controller with a tablet, so the pointer follows the mouse in a remote console.
- VGA and VBE display, from the BIOS text screen through the installer's 16-colour mode to high resolution.
- Fixes to behaviour that newer systems never exercise: the PIT with a count of 0, spurious 8259 interrupts, read-only PCI registers, VGA write modes, task switches, and others.
- APICv is on by default. XP's device installation step took over 9½ minutes without it and 2½ minutes with it; KVM takes 2.
All three devices support suspend and resume. A template sets up the right hardware: keel vm create --template windowsxp.
What was tested
- Windows XP Professional SP2: desktop, network, restart, shutdown, suspend and resume, RDP.
- Windows Server 2003 R2 (Japanese): desktop, network, restart, shutdown.
- Windows 7 SP1 x64: pointer follows the mouse, no unknown devices.
- Windows 10 on BIOS, Haiku, and FreeBSD and Debian on BIOS also boot.
- XP halfway through installation, while copying files: the host restarted, the VM paused 35.8 seconds and went on copying.
Limits
- Windows XP is the oldest system supported. DOS, Windows 3.x and Windows 9x are out of scope: they need floppy, sound and fast VGA, which emulators such as DOSBox and 86Box do better.
- BIOS guests have no boot order: SeaBIOS tries the hard disk before the CD.
- ESXi's LSI Logic SCSI, PVSCSI, VMXNET3 and E1000e are not emulated yet. A tool to import VMs from ESXi is next.