ChromeOS currently has Linux support in beta so I installed it recently to give it a try. To my surprise I was presented with BASH in what looks like a Debian environment. Leaving for work the next morning it dawned on me that I should be able to get Qemu in the Debian environment. If I can get Qemu then I can likely install Windows 98 SE in a Qemu virtual machine (VM).
Why? Why not?
What's a virtual machine?
A virtual machine is like running a computer on another computer. It's a useful way of running multiple "computers" on one piece of hardware. More information on Wikipedia.
Linux app support
Linux support has been available in beta since ChromeOS 66. You'll need to enable this from the settings menu, with more details on the Chromebook support site. Once Linux support is installed you'll be presented with a Debian shell (in this case a BASH terminal).
In the Debian shell, start with
sudo apt update && sudo apt upgrade to ensure the Debian environment is up to date. Next install Qemu via
sudo apt install qemu.
Make your working directory and copy the CD
For tidiness we'll store all our files in a directory. In the Debian shell create a new directory with
mkdir Win98SE. Move into the new directory with
My Chromebook doesn't have an optical drive and I didn't fancy trying to pass a drive through to the Debian VM (and then through to Qemu) anyway. I took an image of my Windows 98SE installation CD in ISO format. This then needs to be transferred into the Debian environment. For this I'll use secure copy,
scp, to copy the file over from another system on my network.
[email protected]:/home/user/Win98SE.iso ./Win98SE.iso
Create the Qemu file system
qemu-img to create a hard disk file. The
create argument does as you'd expect while
-f specifies the file format (
qcow2) followed by the file name and disk size. Given Windows 98SE has a tiny installation size compared to a modern Windows environment so 600MB should be more than enough.
Start the Qemu virtual machine
In order to install Windows we'll need to be running the Qemu VM. This is accomplished by using
qemu-system-x86_64 and specifying a number of arguments. Making sure you're in the
Win98SE directory we created earlier, start the VM:
-k en-gbsets a keyboard layout, in this case to United Kingdom English (Qwerty)
-cdromattaches an optical drive to the VM and
Win98SE.isois inserted into it
-boot order=dinstructs the VM to boot from the optical drive (D:\ in Windows' context)
-drive file=Win98SE.cowattaches our hard disk file to the VM
-m 512provides the VM with 512MB of RAM (more than a lot of Windows 98 machines I ever used had)
-display sdluses the SDL display driver to render our VM's display, acting as the monitor
The VM will now boot and we can commence installation of Windows 98SE.
Troubleshooting: cursor keys not working
Initially I didn't specify
-k en-gb and I thought nothing of it - I could still type alphanumerics characters. Unfortunately my cursor keys didn't work so I couldn't select menu options. Specifying the keyboard layout fixed the cursor key issues. Thanks go to this AskUbuntu question for the tip off.
I won't take you through the Windows installation process - it's not that exciting - but here's a few screenshots in case you're interested. On my Asus Chromebook C423NA Touch the installation took around 50 minutes. I even got a Blue Screen Of Death (BSOD) during the installation but the process continued.
After the installation I was saddened to find solitaire wasn't installed. By dredging up old memories of how to customise and manage this old operating system, I got solitaire installed. Job done!
Adding an alias
To make it easier to start Windows 98SE in the future I'll add an alias. Aliases in BASH mean we can create a shorthand for a longer command (or potentially override a command altogether).
- Open the Debian terminal
cdto ensure we're in our home directory
.bashrc is a script that gets run each time we start the terminal, so we can define our aliases here
- Scroll down to find lines starting with
ito enter insert mode so we can edit the file, then create a new line and add our alias:
alias w98se='qemu-system-x86_64 -k en-gb -cdrom ~/Win98SE/Win98SE.iso -boot order=c -drive file=~/Win98SE/Win98SE.cow -m 512 -display sdl'
Note the boot order is set to c. I want the 98SE CD available (in case I choose to customise the OS) but I don't want to try and boot from it
- Save and exit by pressing
Close the terminal. From the next time the terminal is opened we can start the VM simply by typing
There's a nice explanation of how to run Windows 98 in Qemu on Wikibooks.
Banner image taken from the Windows 98SE splash screen.