Older edutainment content from the mid-90s through early-2000s will run most accurately in their natural habitat. We can provide that with a virtual machine.
Setup
Prerequisites
This guide assumes you have licenses and installation media for both Windows XP and the content you wish to run.
Host dependencies
To get the best performance, first ensure that virtualization is enabled in your BIOS settings. Look for an option named either VT-x or AMD-V, and once booted, you'll know if it's set up by running kvm-ok:
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Then install QEMU with sudo apt install qemu-system.
Guest installation
Generally speaking, follow Computernewb's guide for installing Windows XP in QEMU, but with the following in mind:
- If the child PC does not support KVM, disable it by removing
-accel kvm. If this is the case, you may want to install the content on a different Linux PC that supports KVM first and then copy the VM back to the child PC afterwards. - Add the AC97 virtual sound device for out-of-the-box support with
-audio pa,model=ac97. - I highly recommend disabling networking if your content doesn't require it as Windows XP is out of date and very insecure. Just remove
-nic user,model=virtiofrom the QEMU command lines. - 32-bit Windows uses local, not UTC, time in the hardware clock. Add
-rtc base=localtimeso that the time is correct. - During installation, if you have a volume license key, you should use that to avoid Windows eventually nagging you about activation.
I'd recommend copying the VM once Windows is fully installed for reuse when setting up other content.
Guest application installation
As the VM is mostly isolated from the host, the best way to install content is by providing it as an ISO via the -cdrom argument. If your content did not originally come as a CD, you can create an ISO from a directory with genisofs.
Once booted, install the content normally and ensure it runs.
Guest application hardening
You can take a few steps to make the content as seamless as possible despite running in a VM.
First, configure the content to open full screen. If it is retro enough, you may need to set 640x480 resolution by right clicking its executable and choosing it in the compatibility options.
Then, set it to open automatically on boot and shut down the VM when it exits. This can be done by placing a my-content.cmd in Start -> Programs -> Startup:
cd "C:\Program Files\Path To Your Installed Content Here\"
start /wait content-binary-here.exe
shutdown /s /t 0
If you need to reconfigure the application after the fact, you can open Task Manager with Ctrl+Shift+Esc once the VM boots and kill the cmdlet. While this does mean that the child may also discover this inadvertently, the potential attack surface is very small because nothing else is installed on the VM and it does not have network access.
Finally, on the host, create a script to boot the VM like the following alongside the rest of the VM's files, changing the -cdrom argument as appropriate.
#!/usr/bin/env bash
cd "$(dirname "$0")"
qemu-system-i386 -M q35,usb=on,acpi=on,hpet=off -global q35-pcihost.x-pci-hole64-fix=false -m 4G -cpu host -accel kvm -drive if=virtio,file=winxp.qcow2 -device usb-tablet -device VGA,vgamem_mb=64 -monitor stdio -rtc base=localtime -audio pa,model=ac97 -display gtk,gl=on,show-menubar=off -cdrom content-disc.iso
The -display option hides all of the QEMU UI while making mouse and keyboard capture work as seamlessly as possible. Leave gl=on in place even if the activity does not use 3D acceleration -- touchscreen mapping does not work well with it off.
Configuration
For now, VMs run this way are run as type = "process":
[[entries]]
id = "cluefinders"
label = "Cluefinders"
input_compat = "touch_to_mouse"
[entries.kind]
type = "process"
command = "~/Games/cluefinders/2-run.sh"
# all additional entry options are supported here
Child-friendly content examples
- Reader Rabbit and Cluefinders series -- as The Learning Company has been gutted following a series of acquisitions, their content is now effectively abandonware. It may instead be found on the Internet Archive.
- Microsoft 3D Pinball (no installation required beyond Windows itself)