That old legacy system is gone, never to be heard from again. Right? But what do you do on the fateful day that someone needs to access data that’s trapped in an old legacy application? If modern applications can’t read the data, you need to run the legacy system. And that’s where system emulation comes in.
The open-source PC emulator QEMU is included by default in most mainline Linux distributions, but you can also download versions of QEMU for other Linux distributions. If you run Windows or macOS, the QEMU website provides packages for those platforms, too. QEMU provides excellent system-level compatibility and support, making it an ideal and lightweight virtual machine environment.
![The Windows 11 logo on a blue background](https://static1.howtogeekimages.com/wordpress/wp-content/uploads/2022/08/windows_11_new_hero_7.jpg)
Related
How to Run Windows 11 in a Virtual Machine
Windows 11 doesn’t make itself easy to install, that is for sure.
Set Up a Virtual Disk
You’ll need a place to install the legacy system inside QEMU, and for that you’ll need a virtual C: drive. In DOS, just as in Windows, drives are represented as letters. A: and B: are the first and second floppy disk drives, and C: is the first hard drive. Other media, including other hard drives or CD-ROM drives, are assigned D:, E:, and so on.
Under QEMU, virtual drives are image files. To initialize a file that you can use as a virtual C: drive, use the qemu-img
command. To create an image file that’s about 200MB, type this:
$ qemu-img create image.img 200M
You should get an output reading something like “Formatting ‘image.img’, fmt=raw size=209715200” in your terminal.
The Parts of a QEMU Command
Unlike PC emulator systems like VMware or VirtualBox, you need to “build” your virtual system by instructing QEMU to add each component of the virtual machine. QEMU uses command line options to define everything. This can make QEMU difficult to use at first, but this provides flexibility in creating exactly the virtual machine that you want. To get started, you only need to know a few parameters to start a virtual machine:
1. The Command to Start QEMU
To emulate a legacy PC system (from before Windows 7, typically), use qemu-system-i386
. To emulate a more modern system, use qemu-system-x86_64
instead.
2. The Virtual Disk
Use -hda imagefile
to tell QEMU to use imagefile as the hard drive image. This should be the same virtual disk you defined with the qemu-img
command.
3. The Boot ISO
Set -cdrom isofile
to define the CD-ROM or DVD image file. For example, this might be the bootable ISO image to install Linux, Windows, or another operating system.
4. The Memory Amount
Set the amount of memory in the virtual machine with the -m size
option. If you do not explicitly set this, QEMU defaults to 128 MB. You can also append a suffix of M
or G
to specify the memory in MB or GB.
5. The Boot Order
Use -boot [options]
to specify the order that QEMU should look for bootable devices. For example, set -boot order=dc
to tell QEMU to try the CDROM ( d
) first, then the hard drive ( c
).
Put It All Together
Now that we have the essentials to start a virtual machine with QEMU, we can put it all together on a single command line to create and boot your virtual machine!
Let’s try it with an example: installing a copy of the FreeDOS operating system. FreeDOS is an open source DOS-compatible operating system that you can use to run legacy business software and other DOS applications. Any program that works on MS-DOS should also run on FreeDOS.
First, download a copy of the FreeDOSinstall CD-ROM from the FreeDOS website. At the time of writing, the latest version is FreeDOS 1.3, so our file will be named FD13LIVE.iso.
Then, if you didn’t do it earlier, go ahead and define a virtual disk with the qemu-img
command:
$ qemu-img create image.img 200M
Use that virtual disk in the command line to start QEMU:
$ qemu-system-i386 -hda image.img -cdrom FD13LIVE.iso -m 16M -boot order=dc
And follow the prompts to install FreeDOS:
Note that you may be prompted to reboot after partitioning your C: drive. After doing that, restart the installation process to complete it.
And now you have a running DOS system!
QEMU and FreeDOS make it easy to run old DOS programs under other operating systems, including Linux. Once you’ve set up QEMU as the virtual machine emulator and installed FreeDOS, you should be all set to run your favorite classic DOS programs from Linux.