Windows 98 remains a nostalgia-rich OS for hobbyists, retro gamers, and preservationists. QCOW2 (QEMU Copy-On-Write v2) is a flexible virtual disk format widely used with QEMU/KVM that supports sparse storage, snapshots, and compression. Combining the two lets you run Windows 98 inside modern virtualized environments while keeping disk images compact, portable, and snapshot-capable. This article explains why you might choose QCOW2 for Windows 98, practical setup steps, performance and compatibility considerations, and preservation tips.
Working with vintage systems like Windows 98 in a virtual environment can be a fun way to relive old computing experiences or explore software development history. However, be aware that older systems may have significant security implications if exposed to modern networks or exploits. Isolate them appropriately.
To create a Windows 98 environment using a qcow2 disk image, you'll primarily use QEMU, an open-source emulator. The qcow2 format is QEMU's native "Copy on Write" format, which is efficient because it only grows in size as you add data to the virtual disk. 1. Create the qcow2 Disk Image
First, you need to generate the virtual hard drive file. A size of 1GB to 4GB is usually perfect for Windows 98.
Open your terminal or command prompt and run:qemu-img create -f qcow2 win98.qcow2 2G 2. Boot and Install Windows 98
You will need a Windows 98 SE (Second Edition) ISO file. To begin the installation, use a command similar to the one below to launch the VM and boot from the "CD-ROM":
qemu-system-i386 -m 256 -hda win98.qcow2 -cdrom win98se.iso -boot d -cpu pentium3 -vga cirrus -net nic,model=pcnet -net user Key Configuration Tips:
Memory (-m): Set this between 128MB and 256MB. Going over 512MB often causes Windows 98 to crash during boot.
VGA (-vga): Using cirrus is highly compatible with the default drivers in Windows 98.
Sound (-soundhw): Use sb16 (Sound Blaster 16) for the best chance of audio working immediately. 3. The Installation Steps Once the VM starts, follow these classic setup steps: QEMU config for Windows 98 that will work with v86? #945
To run Windows 98 using a QCOW2 image in QEMU, you need to create a virtual hard disk and then boot from an installation ISO. Windows 98 typically requires a legacy machine type and specific emulated hardware to work correctly. 1. Create the QCOW2 Disk Image
First, generate a virtual hard drive. A size between 512 MB and 2 GB is standard. Windows 98 may have issues with disks larger than 2 GB unless you specifically enable large disk support during the FDISK process. qemu-img create -f qcow2 win98.qcow2 2G Use code with caution. Copied to clipboard 2. Launch the Installation
Use qemu-system-i386 to start the VM. You should use the i440fx (pc) machine type rather than the modern Q35, as it has better legacy support. Recommended Command:
qemu-system-i386 -m 256 -cpu pentium3 -M pc -hda win98.qcow2 \ -cdrom win98se.iso -boot d -vga cirrus -soundhw sb16 \ -net nic,model=pcnet -net user -display sdl Use code with caution. Copied to clipboard 3. Essential VM Settings
To ensure a stable experience, keep these configurations in mind:
Memory (-m): 128 MB to 256 MB is the "sweet spot". Going above 512 MB can cause Windows 9x to crash or fail to boot without manual patches.
CPU (-cpu): Emulating a pentium2 or pentium3 provides the best compatibility.
Graphics (-vga): The cirrus driver is natively supported by Windows 98. For higher resolutions and 32-bit color later, consider using SoftGPU.
Sound (-soundhw): Use sb16 (Sound Blaster 16) for the most reliable audio. windows 98 qcow2
Mouse: To fix "sticky" mouse issues, add -device usb-tablet if your host supports it, though you may need a USB driver for Windows 98 to make it work. 4. Post-Installation Drivers
After the initial Windows setup, you will likely need extra drivers for modern performance:
Video: Install the Universal VESA or SoftGPU driver for better resolutions.
Network: The pcnet or ne2k_pci models usually work out of the box with the drivers included on the Windows 98 CD.
KVM: If you are on a Linux host, adding -enable-kvm significantly speeds up the VM, but it can sometimes cause stability issues with Windows 9x.
The flicker of the virtual machine console felt like a time machine. There, encapsulated in a single file named win98_gaming.qcow2 , lived an entire era of computing history. For Elias, this wasn't just an exercise in virtualization
; it was a digital rescue mission. He had spent the afternoon configuring QEMU, carefully allocating 64 MB of RAM—a luxury compared to the minimum 16 MB
the OS originally demanded—and setting up the emulated SoundBlaster 16 card.
format was the secret sauce. Unlike the rigid raw images of the past, this "QEMU Copy-On-Write" format allowed him to use thin provisioning. The disk image started small, only growing as Elias filled it with abandonware classics and the iconic teal wallpaper
. He could take snapshots before installing experimental drivers, knowing that if the dreaded Blue Screen of Death appeared, he was only one click away from a perfect state. startup sound
chimed—a majestic, synthesized wave of nostalgia—the pixelated "Start" button appeared. Inside this Linux-hosted container, Windows 98 SE was breathing again. Elias opened the command prompt, the familiar
blinking expectantly. In this sandbox, the year was forever 1998, the internet was a lawless frontier, and the only limit to his digital world was the size of a single virtualized file. How to Build Your Own "Time Machine" If you want to create your own image for a Windows 98 setup, here are the essential steps: Create the Image QEMU-img tool to create a sparse file. qemu-img create -f qcow2 win98.qcow2 2G Gather Your Media : You’ll need a Windows 98 SE ISO
and potentially a boot floppy image if your ISO isn't bootable. Launch the VM
: Run the emulation with a focus on older hardware compatibility.
qemu-system-i386 -m 64 -hda win98.qcow2 -cdrom win98se.iso -soundhw sb16 -vga cirrus -boot d
: Once installed, look for "Universal VESA" drivers to get higher resolutions beyond standard VGA. If you’d like, I can help you: Troubleshoot
driver issues (like getting sound or high-color graphics working). the technical benefits of over other formats like
your QEMU command for better performance on your specific OS. Let me know which part of the setup you're stuck on! Windows 98 remains a nostalgia-rich OS for hobbyists,
# Add to QEMU command:
-rtc base=localtime \
-global isa-fdc.driveA= \
-cpu host,migratable=no,rdtscp=off,svm=off,vmx=off,hypervisor=off \
-smp 1,sockets=1,cores=1,threads=1
| Problem | Solution |
|--------|----------|
| “Windows Protection Error” on boot | Add MaxPhysPage=30000 to system.ini [386Enh] |
| No sound in DOS games | Use -soundhw sb16 and run SET BLASTER=A220 I5 D1 H5 |
| USB not working | QEMU USB tablet + generic OHCI driver in Win98 |
| Mouse freezes | Use -usb -device usb-mouse instead of PS/2 |
The email from the client was short and panicked: "We have a legal hold on the design files for the 1998 Metro interface. The only machine that can read the proprietary format crashed. If we don't open these .prs files by tomorrow, we lose the case."
I called the client immediately. "What kind of machine are we talking about?"
"A custom workstation," the client said. "It ran Windows 98. The hard drive is making a clicking noise. It’s dead."
I rubbed my temples. Finding a replacement hard drive for a 25-year-old proprietary workstation was possible, but not in 24 hours. Installing Windows 98 on modern hardware was a nightmare of driver incompatibilities and BIOS settings.
"Send me the drive," I said. "But I’m not fixing the hardware. I’m moving your house to a new neighborhood."
The Setup
Three hours later, a courier handed me a heavy, dusty tower. I didn't bother plugging in a monitor or keyboard. I popped the side panel, removed the failing IDE drive, and hooked it up to a USB-to-IDE adapter. My Linux workstation recognized it immediately, though the partition table was badly damaged.
I wasn't going to repair the file system on the metal. That was too risky. I needed a pristine environment.
I opened a terminal. I didn't reach for a Windows 10 ISO. I needed the specific environment the software was built for. I needed Windows 98.
The Command
I typed the search query into my browser: windows 98 qcow2.
For a sysadmin, this specific search string is a lifeline. It bypasses the need to hunt down a physical CD-ROM, rip it, and convert it. It looks for a pre-configured, copy-on-write disk image format (qcow2) used by QEMU and KVM. Ideally, I was looking for a ready-made image that had the OS installed, saving me an hour of installation time.
I found a trusted archive containing Win98.qcow2. I downloaded it and placed it in my working directory.
Now came the surgery. I wasn't going to use that fresh image as my primary drive; I was going to use it as the "donor" for the operating system.
I created a new, larger disk image to house the system and the recovered data:
qemu-img create -f qcow2 recovery_drive.qcow2 10G
Then, I cloned the fresh Windows 98 install onto the new drive:
qemu-img dd if=Win98.qcow2 of=recovery_drive.qcow2
Finally, I needed to attach the client's failing drive as a secondary drive. I used ddrescue to image the physical drive into a raw image file first, to minimize stress on the dying hardware, then converted that raw image to qcow2 format. # Add to QEMU command:
-rtc base=localtime \
-global isa-fdc
qemu-img convert -O qcow2 failing_drive.raw failing_drive.qcow2
The Boot
I launched the virtual machine.
qemu-system-i386 -m 512 -hda recovery_drive.qcow2 -hdb failing_drive.qcow2 -enable-kvm
The window popped up. The familiar BIOS POST text scrolled by, followed by the iconic Windows 98 splash screen.
I held my breath. Windows 98 was notoriously finicky about hardware changes. Moving from a custom 1998 workstation to a virtualized Intel Icelake architecture could trigger a blue screen instantly.
The desktop loaded. It was a clean, default Windows 98 desktop.
I double-clicked My Computer.
Drive C: was the fresh Windows install. Drive D: was the client's old drive.
I navigated to D:\Projects\Metro. The folder opened instantly. The proprietary .prs files were there. The file system corruption that prevented the old hardware from booting hadn't affected the actual user data.
The Export
The files were visible, but I couldn't just drag and drop them to my Linux host because Windows 98 doesn't understand modern network protocols or USB mass storage easily.
I had a trick up my sleeve. I shut down the VM and mounted the qcow2 image directly on my Linux host using guestmount.
guestmount -a recovery_drive.qcow2 -m /dev/sda1 /mnt/vm
I copied the files from the mounted image to a shared network folder. The client received the files twenty minutes later.
The Aftermath
The client asked, "Can you send back the working computer?"
"It never left," I replied. "You have the files. The computer is a 20MB file on my server called windows 98 qcow2."
QCOW2 files can be used on other platforms with slight adjustments:
You have two options: build it yourself or download a pre-made image.
Once your base win98se.qcow2 is perfect, leverage the QCOW2 superpowers.