I've not had a PC quick enough to really use PC-on-PC virtualisation in anger before, until
ednun gave me the carcase of his old one. AMD Athlon64 X2 4800+, 2G RAM, no drives or graphics.
I've upped it to 4G, a couple of old 120GB EIDE hard disks, a DVD burner, a replacement graphics card (freebie from a friend) & a new Arctic Cooling Freezer7 Pro heatsink/fan from eBay to replace the old, clogged-up AMD OEM one. Total budget, just under £20; result, quick dual-core 64-bit machine with 64-bit Linux running very nicely.
For some work stuff. I've been using Linux-under-Linux in VirtualBox, which works rather well - but it's a kinda specialised need. There are still a few things that either don't work all that well in Linux or which I can't readily do, though. Spotify runs under WINE but crackles & pops then stops playing after 2-3 minutes & never emits another cheep. My
CIX reader,
Ameol, also runs OK under WINE, but windows don't scroll correctly. I don't think there's any Linux software to sync my mobile phone or update its firmware, although I'm not sure I'd want to try the latter from within a VM anyway, just in case...
So I decided to try running Windows in a VM under Linux just for occasional access to a handful of Windows apps, without rebooting into my Windows 2000 & Windows 7RC partitions. (Makes mental note: better replace that Win7 one before the RC expires.)
I've always had reservations about running a "full-sized" copy of Windows this way. It seems very wasteful of resources to me. That is, running one full-fat full-function OS under another full-fat OS, just for access to a couple of apps. (Also, you need a licence, if the guest is a modern, commercial product, not some ancient piece of abandonware.)
So I thought I'd try some "legacy" versions of Windows to see how well they worked. I have a fairly good archive here, from Windows 3.1 up to Win7.
1st up: Windows 98.
Second Edition, of course. I'm not mad.
I could have tried Win95, but I thought it might be a bit too old & limited. 98SE will run IE6, though, and even today it's still the minimum level for a few modern apps.
Snag 1: it doesn't boot from its own CD very reliably. So I had to go looking for a Win98SE boot floppy image.
Bootdisk.com is always a great aid in times of such need, but most of its images are self-extracting disk-writing .EXE files, which aren't much use to me on Linux. I guess they might have worked under WINE, but frankly, if I am downloading an image, I want to boot the VM from the image, not from a physical disk. It's dramatically quicker & means I don't have to muck around trying to find a usable floppy diskette.
I found one, down at the bottom of
this page under the heading "Non-Windows Based Image Files W/ImageApp". Download, extract, though away everything except the 1.4MB ".img" file, point VBox at it, boot and we're in business.
It installed lightning-fast. Even in a VM, a ~4GHz PC is a very high spec for a 12Y old OS. But once running, I had problems. 98 doesn't understand the emulated VESA graphics card of the VM, so I got 640×480 in 16 colours. It doesn't idle the CPU when it's not in use, meaning the VM took 100% of whatever CPU bandwidth Linux allotted to it. Between these, it wasn't all too quick, either. It did go straight online without problems, so I was able to download the VESA graphics drivers and "Rain" CPU-idling tools the VirtualBox helpfile advised. Then it at least looked half-decent, but still, with no way of resizing the desktop other than Display | Properties, capturing the mouse pointer every time I used it & with no way to transfer files directly to or from the host,
On trying to install VirtualBox's guest additions, I was told Win98 wasn't supported. Nor is WinME, not that I planned to try that. No, the oldest supported guest Windows is NT 4.
So, result: a lightweight OS (by modern PC standards) in a VM, but not much actual use.
2nd up: Windows NT 4 Workstation
Since NT4 was the oldest, lowest level of Windows that the VBox guest additions explicitly support, I thought I'd try that.
NT4 has one benefit: it boots from its own install CD with no need for floppies, almost like a grown-up operating system. ;¬) So, new VM, tell it it's for NT4, bump up the RAM a bit - 128MB is a lot for NT4, which runs quite happily on 486s. (Most Pentium-1-class PCs top out at 64MB. If they take more, it probably slows 'em down 'cause they can't cache it all.)
Boot NT, install it. Reboot after stage 1, finish setup, reboot. It installed fairly slowly, as it was from a real physical CD, but with a very smart caching disk controller (for reference, called "a complete Ubuntu 9.10 PC").
Et voilà. NT4 Workstation (no "Home" or "Professional" in those days). No service packs. And since NT4 has a Task Manager I can even see how much RAM its using. 24MB. That is pretty damned slim these days. XP typically idles at around 200MB - 10× as much! - and Vista or Win7 at 400-600MB.
But, worst of all, Internet Explorer 2.
IE2 is not much use these days. It can't open its own homepage, as MS have moved it to a new JavaScript-infested one that IE2 can't understand. It can't even open Google. Not even the lightweight mobile Google.
I was stymied. After a little rooting, I found a CD with SP4 and IE4 on it. This at least gave me a web browser that, with a lot of patience and clicking "no" to "aieee help Grommit it's the wrong script and it's gone wrong" errors, I could use to download Firefox 2. With Firefox, I could then go on an epic quest to find SP6a - it's almost disappeared from the Web now - and then IE6.
IE6 is also damned hard to find nowadays. Even
http://browsers.evolt.org/ only has
the web installer and it can't find the install files online.
OldVersion.com to the rescue with a
full installer for IE 6.0 - no .01, no SP1, but enough to get you going. Once IE6.0 is on, the web-installer for 6.01SP1 will run successfully. Reboot again.
Lot of reboots, actually. Only of the VM, but still. Install, including 2 reboots. Install SP4+IE4, reboot. Install SP6a, reboot. Install IE6, reboot. Install 6.01SP1, reboot.
So, after much work, I had SP6a and IE6. That's fairly current for NT4 and meant I could install the guest additions.
At which point, snag. Oh, they work, but there's a list of limitations. No shared-folders access. No dynamic window-resizing. No seamless mode. And of course NT4 has its own limitations anyway: no FAT32 support, for instance, and no USB support.
So, it worked, and it was slim & lightweight on a PC of about 100× the specification that NT ever asked for - but it wasn't much use.
3rd time lucky: TinyXP
I thought about Win2K next, but I have something that could, in principle, be even lighter:
TinyXP r9. TinyXP is a 3rd party distro of XP, with most of the fat trimmed away. I know that by modern standards, XP is quite lithe anyway, but compared to NT4 it's pretty lardy, with things like chat clients, file-and-settings-transfer-wizards, movie-editing as non-optional components that you can't remove without extreme effort.
I normally use TinyXP for restoring life to old PCs which had XP anyway, but where the owners have long ago lost the install media - if they ever got any. It's XP Pro, pre-activated, with SP3. The 700MB ISO offers a whole pile of different editions: you can have each with or without the Micros~1 Internet client apps (IE, Outlook Express, Windows Media Player) and also with out without the special bundled "Driver Packs" which feature a whole pile of preloaded drivers for hardware that doesn't work on a 2001-vintage OS out of the box: wireless cards and whatnot. On top of these pairings, you can choose "standard" TinyXP - which comes with an assortment of the Accessories, some extra admin tools to do stuff like enable hibernation support, and a GUI theme - or "TinyXP BARE."
I'd never tried BARE before, but a "bare" install sounded just right for a VM environment.
First go, I picked the version with all the drivers by mistake, leading to loads of unZipping. I hit the VM reset button - no hard disk to crash here, it's all just software - and tried again with the "TinyXP BARE (no IE/OE/WMP, no driverpack)" option.
Up comes the familiar XP installer screen. It doesn't ask any questions, TinyXP - everything's filled in for you. Just let 'er rip.
"Expected time: 39 minutes", it says. "I bloody hope not," I thought. I'm installing from an ISO file to a VM, with about 2½GB of disk cache. But no, wait, what's this? Expected time: 29 minutes. The progress bar jumps to half way. Expected time: 22 minutes. The progress bar jumps to 90%. Expected time: 19 minutes. 9 minutes. 2 minutes. Reboot.
It took only slightly more time than it took to type the description of the process.
And bosh. Never mind 39 minutes, it was about 3.9 minutes from boot install disk to desktop. It boots up in about 10sec. Hit Shift-Control-Esc and holy crap, lookit that: 49MB of RAM in use.
That's less than twice NT4 once it's all patched and updated!
It's tiny, too. Almost no accessories - Notepad & a couple of other things. Paint, oddly enough. (Why?) The Start menu is startlingly empty.
Install the guest additions - takes 30sec or so, the CD image even auto-runs - reboot the VM and now I can resize the Linux VM window and the XP desktop auto-resizes. Hit the key for seamless mode and the XP desktop disappears. My XP taskbar is across the bottom of my Linux desktop, with the Windows Task Manager floating on my Linux desktop as a window in its own right. Amazing.
Question, though. With no IE, how do I update this thing? I can't get to Windows Update - no browser. I can't activate automatic updates, because that's one of the things that the creator of the distro, eXPerience, trimmed away, along with Windows Security Centre.
Bugger.
OK, out with the USB key and try to install IE8 from the offline installer. Crashes out as soon as it starts work. Bugger again.
Try IE6 offline installer. (I keep a copy to hand, but in the NT VM, there was no way to access a file on the host machine on a USB key - nor any way to get the copy I downloaded out of the VM.) Won't run. "You already have a later version of Internet Explorer installed." No I bloody well don't.
Stymied.
So, re-mount the ISO, try again. Install "TinyXP BARE (with IE/OE/WMP, no driverpacks)". Takes slightly longer but not by much. Post-install it makes a few tweaks and one last reboot.
And it's remarkably similar, only now I have IE6. First, reset to UK keyboard & locale. Then remove OE & WMP. Then install IE8 - works fine. Go to
WindowsUpdate. Install the various WindowsUpdate components. Lots of reboots.
Now, there's one snag with TinyXP. It works fine, needs no activation and includes a Windows Genuine Authentication (WGA) crack. But, MS is onto them and has updated WGA. WGA is a "recommended update" and once you've installed it, TinyXP fails and goes into reduced-functionality mode.
WindowsUpdate tries to install WGA, it fails and so do all the updates after that point.
However, there are plenty of newer WGA cracks out there. I've used 2 but currently I use one called "WGA Killer v6" which I got off
IsoHunt. It not only restores your machine to full functionality, but it also installs a background service that watches for future attempts to install WGA & quietly nukes 'em.
Run this, TinyXP is restored to its full minuscule vigor. Rerun WindowsUpdate a few times - oddly, 1 or 2 reboots of the VM result in it not acquiring an IP address from VirtualBox. It takes quite a few goes for all the updates to install, but eventually, they all do. No more recommended updates.
After this, XP's memory footprint has gone up from 51MB to about 60MB. That's still pretty damned small, though!
Just for a quick test, I share my Linux downloads folder and install Spotify straight from the Linux file I downloaded to try in WINE. Works first time, connects and in seconds is streaming Florence + the Machine at me. (Bluesy indie pop from a tall, very leggy, skinny redhead. Oh go on then.)
Sound quality is perfect (unlike in WINE) and it multitasks smoothly with the rest of my Linux desktop. (Also unlike WINE, it keeps playing indefinitely. WINE is an awesome bit of code - I use the adjective advisedly - but media streaming is not what it's best suited for, not just yet.)
I shall be trying a few more Windows apps on this in the near future, but for now, I am very impressed with the combination of VirtualBox and TinyXP. I didn't expect to get a seamless mode, like VMware Fusion or Parallels Desktop on Mac OS X, from a piece of freeware. Performance is excellent and TinyXP works with it flawlessly and very efficiently.
OK, so, it must be mentioned, strictly, TinyXP is pirated software. Personally I do have an actual Windows licence or 2 knocking around somewhere, but XP is still, just about, on retail sale. It's a current product, not abandonware. (I don't think Micros~1 are going to complain at any lunatuc installing Windows 98 or NT in 2010!)
Oddly, though, Micros~1 have not gone to any great efforts to expunge it from the Torrent indices. Perhaps they realise that every person running a knockoff freebie copy of TinyXP on their PC is another user not running Linux, is another person staying within the Windows ecosystem rather than using Free software.
But this way - TinyXP under Ubuntu - you get the best of both worlds. Ubuntu is genuinely free, comes with a whole pile of free apps, and installs very easily with no mucking around hunting for drivers and so on. It and all its apps update in a single operation. It comes with a built-in Bittorrent client to download a naughty free copy of TinyXP.
Then you go to Virtualbox.org and download a free copy; they even provide an Ubuntu package. This version is rather more complete than the Open Source Edition -- VirtualBox OSE -- that's in the Ubuntu repositories. Install it, create a VM and call it "Windows XP" or something like that. VirtualBox deduces from the name that you intend to run XP in there & creates a suitably-proportioned VM. Point this at the ISO of TinyXP you dowloaded and go. Once it's installed, ten times faster than any real PC money could buy, install the Guest Additions - it's an option in the VM's menu bar.
Then comes the pain of WindowsUpdate, but with Windows, I'm afraid there's no way around that. But at least you can go and do something else on your Linux machine while it's running, rebooting, running again, rebooting, running again, rebooting, &c. You can't do that when it's your real, one-and-only OS. You can't go off and cook a quick 3-course dinner, either, 'cos it needs regular interaction to say "yes" and so on.
But once it's done, you reboot one last time, then you can flip into Seamless mode and run Windows apps straight from your Linux desktop. No pain, no hassle. No need to install drivers - the OS inside the virtual machine sees a very vanilla PC so all the drivers are in the box. Sound, networking, graphics, USB, everything. It is a very great deal easier and quicker than installing TinyXP - or any other version of XP - onto real hardware, with all the vicissitudes of SATA drivers, chipset drivers, sound drivers, NIC drivers, graphics drivers.
If you're careful, since the VM won't be used for any real websurfing, you don't even really need any antivirus in there. Personally I haven't stumbled across an IE-only website in about a decade, but if you are going to use the copy of IE in the VM, you probably should install the MS Security Essentials in there. (Tiny -- ~8MB download -- lightweight free combined antispyware and antivirus. Supersedes Windows Defender. Great stuff. Recommended for all Windows users from XP to Windows 7.)
I have to confess, it was all a great deal quicker, easier and less hassle than I was expecting, and much less hassle than Win9x or NT would have been - together with much better integration with the host OS than any older version of Windows could offer.
Not quite the level of the experience of Snow Leopard on a Macintel, but on the other hand, it's free and runs on cheapo commodity hardware. A PC to do this justice - dual-core, 3-4GB RAM - would probably cost less than £400 these days. I'm just lucky that mine cost me about £25. Thanks, Ed!