ReactOS is a project which aims to create an open source operating system which is binary-compatible with Windows. Although it is still cautiously labelled “alpha”, its basic use is about as reliable as Windows once was.
This post runs through the steps to install ReactOS 0.3.15 as a KVM guest on Linux.
Preparation
Before attempting anything, check that you a CPU supports Intel VT or AMD-V. This command will return the number of CPU cores with svm or vmx flags:
cat /proc/cpuinfo | grep -E 'svm|vmx' | wc -l
Now download the ReactOS 0.3.15 disk from reactos.org, extract it to get the .iso, and fetch some packages if you don’t have them installed:
apt-get install libvirt-bin kvm qemu-utils
Prepare a disk image to install to. If your hardware is slower, then a raw image is a better idea than the qcow2:
qemu-img --help
qemu-img create -f qcow2 reactos.img 4G
The working directory now has:
mike@mikebox:~/vm/reactos$ ls -Ahl
total 77M
-rw-r--r-- 1 mike mike 77M May 19 2013 ReactOS-BootCD.iso
-rw-r--r-- 1 mike mike 193K Jan 30 21:05 reactos.img
Installation and first boot
The kvm command will pop up a window with the guest operating system. To boot from the install disk, run:
kvm -hda reactos.img --cdrom ReactOS-BootCD.iso -vga std -localtime -net nic,model=ne2k_pci -net user
The meaning of each of these options is:
- -hda reactos.img
- Sets the HDD image file.
- --cdrom ReactOS-BootCD.iso
- Sets the CDROM image file. Because reactos.img is blank, this will boot.
- -vga std
- Sets the VGA card.
- -localtime
- Emulates a system clock in local time, rather than UTC.
- -net nic,model=ne2k_pci
- Sets the network card to something ReactOS will recognise.
- -net user
- Enables user-mode networking. Your computer will emulate a network and pass on TCP and UDP connections. This is the easiest mode to use, but ICMP packets (such as pings) will not work, and the VM will not be accessible from other computers.
Installation was fast, error-free, and did not require a network connection. The first screen capture below was taken at 16:04:49, and the desktop was captured at 16:06:07 (1 minute 18 seconds later). Most of that time would have been wasted waiting for user input.
After copying files, the installer reboots to a more user-friendly mode (similar to the Windows installer):
The installed system
After installation, the --cdrom option can be dropped:
kvm -hda reactos.img -vga std -localtime -net nic,model=ne2k_pci -net user
The first thing I did was correct the colour depth, and then attempt to install VLC. This did not turn out well (the console screen is QEMU-monitor):
I used command prompt to verify that networking was fine (note the lack of ICMP in user-mode networking):
The Firefox 22 install worked, but it went awry after that. Several reboots later I gave up:
The built-in programs were much more usable:
PuTTY installed flawlessly, and I was able to SSH to the host computer:
An example of a frozen program causing graphics glitches (Windows up to XP does this as well):
And an obligatory screenshot of the “Properties for System” dialog, showing the build as 20130518-r59037:
Conclusion
ReactOS is a cool idea and project, but the OS is still very glitchy. The built-in apps are stable and familiar-looking, but you would require a lot of patience (and a lot of rebooting) to use a ReactOS system for more than a few minutes.
Being open source is a big plus, as there is no need to activate the installation or enter software keys. GNU/Linux users will already be accustomed to this.