Installing Windows 98SE on a Chromebook (VM)
Linux support on the Chromebook meant I could install Qemu. What better thing to do than install Windows 98SE?
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).
Install Qemu
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 cd Win98SE
.
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.
scp
[email protected]:/home/user/Win98SE.iso ./Win98SE.iso
Create the Qemu file system
We use 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-gb
sets a keyboard layout, in this case to United Kingdom English (Qwerty)-cdrom
attaches an optical drive to the VM andWin98SE.iso
is inserted into it-boot order=d
instructs the VM to boot from the optical drive (D:\ in Windows' context)-drive file=Win98SE.cow
attaches our hard disk file to the VM-m 512
provides the VM with 512MB of RAM (more than a lot of Windows 98 machines I ever used had)-display sdl
uses 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.
Windows installation
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
- Type
cd
to ensure we're in our home directory - Type
vi .bashrc
.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
#alias
- Press
i
to 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
escape
then:
thenwq
followed byenter
Close the terminal. From the next time the terminal is opened we can start the VM simply by typing w98se
.
External resources
There's a nice explanation of how to run Windows 98 in Qemu on Wikibooks.
Banner image taken from the Windows 98SE splash screen.