It's funny, the first Virtual PC article I wrote was all about running a Windows 95 virtual machine on Windows 2000. Now, how ever many years later I'm trying Windows 2000 in a virtual machine.
In many ways Windows 2000 was the best operating system Microsoft developed. If it supported modern hardware and continued to receive updates there would be no reason to upgrade. I'd argue it's even better than the most recent version of Ubuntu but I get enough hate mail already. And yes I have used Ubuntu quite a bit. Anyway, Microsoft doesn't make money by supporting old operating systems. An annual support contract wouldn't pay the rent so they have to nudge consumers into buying expensive upgrades every 2-3 years.
Of course the obvious question is - what's the point of a Windows 2000 virtual machine anyway? It's a fair question. The answer isn't "application compatibility" because I've never found a program that runs in Windows 2000 but not XP. Windows 7 comes with a free virtual copy of XP so that would be a pointless goal.
Nope, this is all about my deep love for Visual Studio 6 - the greatest development IDE ever created, maybe the greatest that will ever be created. Visual Basic 6 in particular is the most fun language and IDE combination I've ever used. Whenever I need a quick utility program I always turn to Visual Basic 6 first. Visual C++ 6 is also quite handy for windowless utilities and has the best hex editor I've encountered.
On every new PC I've assembled since since 1998 the first thing I've done is install Visual Studio 6. It's starting to get tiresome. I'd like one handy virtual machine dedicated to running Visual Studio 6 that can be used for the next 13+ years.
The toughest decision was which OS to use - Windows 98, Windows NT, or Windows 2000? Sure, Visual Studio 6 was originally designed for Windows 98 so I guess that would be the OS of choice for the authentic experience. It has enough limitations to rule out though. Windows NT would have been a good choice. I ran Visual Studio 6 on it from 1998-1999 and it was just fine. In the end, NT seemed too obsolete even for me.
I'm not even slightly concerned that Visual Basic 6 applications might not work on future versions of Windows. The Visual Basic 6 runtime shipped with Windows 7 so that keeps it supported until at least 2019. I have no doubt it will be in Windows 8 too. I should write even more programs in it.
And last but not least - I'd like this whole virtual machine to fit on an 8gb USB drive so I can use it on different PCs and laptops. Every "Black Friday" I can't resist buying insanely cheap USB drives and last year 8gb ones were practically free. Since I probably first installed it on a PC with a 10gb hard drive this shouldn't be a problem.
Alright, enough filler - let's get to the installations:
Here are all the install CDs. Note, these are all original copies and not bootlegs. I'm not saying this to sound all preachy, I just like to make it clear that none of my virtualization articles are advocating piracy. I will also note that to speed-up installation I first ripped all of these to .iso images. That's an optional step that I'd recommend.
While Microsoft still has them online - go download Visual Studio 6 service pack 6 and Windows 2000 (Professional or Server) service pack 4.
Here's a picture of all the install files I ended-up with. You should notice that both Visual Studio service pack 5 and 6 are present and that service pack 5 is way larger than service pack 6. This is because service pack 5 contains a roll-up of all previous service packs while service pack 6 is only incremental to service pack 5. You'll need to install both. As far as I can tell, there is no roll-up distribution of service pack 6. I assume because it came out after Visual Studio .NET and Microsoft was trying not to care about Visual Studio 6.
An 8gb flash drive actually has 7.8-7.9gb free and is formatted FAT32. FAT32 = no files larger than 4gb supported. That means we'll have to create two 3.5gb hard drives. One will store a "clean" Windows 2000 Server install and the other will be for Visual Studio. There will be a ton of space left over for other development tools and source code. I guess it's also some kind of benefit that we could back either of these images up on a DVD too.
This leaves us about 0.5gb for the machine configuration and saved state. Let's start the initial RAM at 128mb to make sure it fits on the drive too. If we have room left over we'll bump it to 256. I think my very first PC that ran Windows 2000 Professional and Visual Studio had 64mb and was perfectly fast. The minimum for Windows 2000 Server is 128mb but we won't be running IIS most of the time.
I honestly lost track of how much RAM is in my current Windows 7 PC which is embarrassing since I built it.
To speed things up a little go ahead and disable any non-essential services. If you only disable one service make sure it's System Event Notification Service which as far as I can tell does nothing other than randomly cause explorer to crash.
Now we have an interesting dilemma, we need to copy over some service packs but Virtual PC doesn't support drag and drop extensions for anything before XP. A really simple way to get around this is to mount the virtual hard drive in Windows 7 and copy the files in explorer.
Side note - this feature alone convinced me to upgrade to Windows 7. I can keep images of all my old hard drives on a 1TB drive and easily access any old files.
One minor pain is that you need to shut down the virtual machine - not hibernate but actually shut down Windows. I can't explain the inner workings of NTFS but it won't register the file changes while Windows is running.
Another option is to create a shared folder and copy over the network. Either way, install Windows 2000 service pack 4 next. There were a couple security and bug fixes released after service pack 4 that you can use your own judgement on installing.