Recovering a (decades old) Windows 2000 Server for Virtualization

January 19, 2015 tumblr_ng6jdrPxNr1qb2wfro1_1280

I hate to admit, but much of my business runs on 20-year-old code. In the years since, I've been negligent to upgrade the code, the hosting machine, or anything else for that matter. It simply worked. Until it didn't.

I've had a self-hosted web server in my office forever. From my first T1 connection to the most recently discontinued DSL line, we've had static IP addresses, and hosted a web server, DNS server, and more in the last few decades. It was our last internet provider switch that finally disallowed having more than one IP address, and I've since moved all my hosting to Amazon S3 static hosting. The code base and server moved inside the firewall and happily churned away for another 6 months without any hiccups. Until last December, when it simply died one day when the power supply finally failed.

virtualbox

Since my ancient code also held my customer database and other vital info, this had to be recovered quickly. You'll have to install the open-source and free VirtualBox from Oracle. It supports a ton of old OS formats, and is exactly what this is for. When you install VirtualBox, it will also install some command-line utilities we'll be using to convert our old disk into an easily duplicated disk image.

We pulled the ancient 4U rack-mount server and opened it up; the dusty contents above is what we met. After a careful removal of the old boot IDE hard drive, I reinstalled it into a new USB hard drive case and attached it to my Mac.

Hopefully, you can simply mount the drive. Thankfully, it was not the hard drive that failed in my old web server, so the old boot drive simply showed up when I plugged it into my desktop computer. You'll need to figure out the BSD drive number (in my case, it was disk1), by opening the Terminal window and typing this code:

diskutil list

You'll get a list of all disks attached to your computer, their partitions sizes and names. Drive numbers are assigned by the OS on a first come, first serve basis. The drive will have a name like 'diskN' (with the N being a number). Generate a .vdi image using this terminal code:

sudo cat /dev/disk1 | VBoxManage convertfromraw stdin ~/DiskImage.vdi 15879634944

It requires administrator authentication (type your password!), but once it's done, it'll place a file 'DiskImage.vdi' in my home directory. This took a while with my old IDE drive (understandably slow), but when it was done, I had a bootable Windows 2000 clone of my old web server. Since I could run it virtually, I could load it on any available machine and with some tweaking, have it return to acting as a web server and run my ancient code. There are some port-forwarding settings you need to make with VirtualBox, but now I have an older Mac Mini running a virtual Windows 2000 web host with all of my ancient customer data from as far back as 1995! Now I can also backup my entire operating system onto a USB key and know confidently that I have all my recent, updated data with me.

While I lose out on the fact that my old machine is no longer permanently networked, it's acceptable in this day and age of always-on internet. I'm also looking into putting this disk image on a networked virtualization machine, so I can continue to serve up 20-year-old web pages! Big thanks to this forum on VirtualBox.org for advice which I found worked for me!.