Win98, WinXP, and Intrepid Partitions

I needed one of the computers in my home network to have a small partition for experimenting (e.g. installing Jaunty alphas etc), a large working partition using stable Intrepid, a small swap partition, a small Windows 98 partition for running legacy children’s games (there are multiple that Windows XP cannot run even in legacy mode), and a slightly larger Windows XP partition for newer children’s games.

I didn’t do everything in the correct order but here is the way it should have been done 😉 . Install Windows 98 into the empty space on the HDD. It is the most primitive OS so it doesn’t play nicely with anything else if you install it after something else. NB I did things the wrong way but I managed to fix my Ubuntu installation with a live CD, the command line, and the following commands to restore the grub bootloader (NB it may be hd0,4 or whatever if that is where your main os is)):
sudo grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

NB the space between root (and setup) and the parentheses. See comment in response to: http://linuxpoison.blogspot.com/2008/09/how-to-restore-grub-with-ubuntu-live-cd.html.

NB if you can’t find the correct hd details try (from the grub prompt):
find /grub/stage1
or
find /boot/grub/stage1

If you have to reinstall win98 (perhaps you have shifted the hard drive into another computer) it is easiest to wipe the partition it is in first. And to prevent confusion, temporarily reformat the windows XP partition to NTFS to stop win98 recognising it and getting dangerously confused. Set back to FAT32 or whatever afterwards if you wish.

Anyway, after installing 98, use Gparted http://gparted.sourceforge.net/ (brilliant) to shrink the FAT32 partition to the desired size, and create another one for Windows XP. Install XP there. XP is advanced enough to allow you to select a specific partition to install into.

Rebooting into XP presented me with:

"Windows could not start because the following file is missing or corrupt:
system32hal.dll.
Please re-install a copy of the above file."

The solution in my case was found in http://pcsupport.about.com/od/findbyerrormessage/a/missinghaldll.htm in item 4 – repair boot.ini http://pcsupport.about.com/od/fixtheproblem/ht/repairbootini.htm and involved booting into the Windows XP CD, and selecting R for repair. It detects something like F:Windows and you get to a command prompt.

bootcfg /rebuild
y (to the question about adding to boot list)
“Windows XP” or similar to next question about Load Identifier (basically give a label useful to you)
/Fastdetect
as answer to final request: “Enter OS Load options”.

Exit to leave recovery console and restart computer.

And I thought proprietary systems were meant to be easy, intuitive and polished 😉 . Continue installing XP.

Then create an extended partition into which you will want various ext3 logical partitions – a large one for the main Intrepid OS, a small one for the experimental OS, and a small swap file partition for swap file duties.

NB once the main OS has been installed, edit grub
sudo gedit /boot/grub/menu.lst
to recognise the two windows partitions (using the separate windows boot.ini process), and the experimental linux partition. I set the partition flags for the two FAT32 partitions to boot. I’m not sure what effect this had.

Further details re: boot.ini:

Open Windows XP, open Control Panel > System Properties > Advanced > Startup and Recovery > Setup and click the button to edit boot.ini (see http://vlaurie.com/computers2/Articles/dualboot.htm). NB once it is open save a copy somewhere before saving changes. You have to click on OK as you leave to save the changes. Test first with simple name changes to options e.g. “Windows XP plus extra word” to see that your changes are taking effect. More detailed configuration information is in http://vlaurie.com/computers2/Articles/bootini.htm.

I needed my Audigy2 disk plus a video card drive for the ATI Radeon 9600 (from the web) to get Windows 98 working with decent sound and video (needed for the legacy games). NB if your drivers break Windows 98, enter it in safe mode and uninstall them. Then you can start again. Have your Windows 98 disk on hand. Later on I had a similar situation with a different video card – a Nvidia Geforec FX5200 – the driver is here.

Of course, I can mount all the other partitions from within Linux if I need to transfer files etc.

Here is a reference to some good material on partitions etc http://users.bigpond.net.au/hermanzone/.

Finally, I wanted a way to run old DOS games like the brilliant cosmo. I could run them using pif files but there was no sound (cosmo expected the PC speaker to be available). I used dosbox instead. Install via synaptic of course. You can check out which games work best at: http://www.dosbox.com/comp_list.php?letter=a. One final problem – no arrow keys! The solution is at https://bugs.launchpad.net/ubuntu/+source/dosbox/+bug/283273 and involves starting dosbox (type dosbox in the terminal), and inside dosbox running:
config -writeconf dosbox.conf
Then open the newly-created ~/dosbox.conf and change
usescancodes=true
to
usescancodes=false

Finally, because children will be amongst the users of the computer, install ubuntu-tweak http://ubuntu-tweak.com/ then Applications > System Tools > Ubuntu Tweak > Desktop > Gnome > and tick the option to lockdown all panels. Brilliant.

Extra instructions for additional Linux partitions:

The linux partitions need entries like the following (possibly with an extra UUID item) within menu.lst:

title Debian GNU/Linux, kernel 2.6.27-9-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.27-9-generic root=UUID=5b6e4... ro quiet splash
initrd /boot/initrd.img-2.6.27-9-generic
boot

But where do you get the values for the UUID?

sudo blkid

/dev/sda1: UUID=”5b6e4…” TYPE=”ext3″
/dev/sda5: TYPE=”swap” UUID=”3880…”

and possibly a whole lot more entries besides if you have multiple boot partitions. As for the /boot/vmlinuz and /boot/initd.img kernel values, have a look inside the mounted partitions to get the version details correct.

NB It is a good idea to give each partition a useful label e.g. win98, winXP etc – perhaps within the Partition Manager via System > Administration > Partition Manager if installed (although you can’t alter the partition you are using I think) or using GParted via a CD.

Grab the splash details from the previous installation because the last Linux in controls the boot menu.