Success! multi-boot 98/XP/Linux on RAID 0 - hal.dll error solved

cleverhandle

Diamond Member
Dec 17, 2001
3,566
3
81
I'm trying to multiboot 98/XP/Linux on an onboard IDE RAID 0 array. Originally, I had 98 on partition 1 of the array, XP on partition 2, and free space at the end. Linux was on a separate disk, which I could boot to either with a floppy or by changing my boot order to find LILO on the linux partition's MBR. After getting my kernel configured to understand the array, I used cfdisk to create two partitions (linux and swap) in the remaining space on the array. Then I setup the reiserfs and swap, and unpacked a backup onto the new linux partition.

It was during some rebooting at this point (I think it was after the partitioning but before unpacking the backup) that I noticed a problem - if I switched back to booting off the array, I could no longer boot XP - I got an error that Windows\System32\hal.dll was corrupted or missing and that I should reinstall it. I thought this was a little strange, since I hadn't actually touched the windows partitions or even any of the boot records on the array. I continued on regardless... probably not too bright.

Eventually got Linux booting entirely off the array using LILO in the array MBR - exactly what I was shooting for. So now LILO points to the linux partition (#3) and the 98 partition (#1). Linux works fine, and the 98 option feeds back into the XP boot loader, as I expected to. I can still boot to 98, but choosing XP gives me the same hal.dll error message. I've tried booting to the recovery console and copying hal.dll back to the system32 directory, as the error message suggested, but that didn't help. I've also tried letting the XP disc try to auto-repair the installation, but no luck there either. I haven't tried fixing the MBR because I don't think it's broken - I got the same error before and after installing LILO to the MBR. So I just need to figure out this hal.dll error - I don't understand how my partitioning of the array's free space could cause a windows file error. Any ideas?
 

cleverhandle

Diamond Member
Dec 17, 2001
3,566
3
81
Got it! I managed to massage the system back into working by wiping the linux partitions I had created and running fixmbr from the console. On the next boot, XP loaded, though it treated the old XP partition as a previous installation to be "upgraded" and I needed to reinstall all the windows stuff. Nonetheless, it kept my settings and files, so I'll just need to reinstall a couple drivers and all will be back to normal.

So now... how to get the original plan to work? Well, some poking around on the web suggested that part of the problem is that XP's installation creates an extended partition spanning the remainder of the disk and creates the system partition as a logical partition within that. (see footnote 1) And apparently, XP really doesn't like any other program (including PM) or OS messing around inside that extended partition. So after recovering XP, I created the linux partition using Disk Management but didn't format it or assign it a drive letter. I still needed to use linux cfdisk to change the type of partition back to 83, but this didn't seem to bother XP at all.

At this point, I was a little concerned. I had hoped to install LILO to the partition boot record so as to leave the MBR as untouched as possible, and then change the active partition flag using fdisk. But that only works if the partition is primary, so I had no choice but to install LILO to the MBR. But it worked regardless - seems that the key is just to let XP "recognize" any partitions within the extension by using its native tools first. So now, all is well - three OS's, all booting entirely off the array. Pretty shweet, even if the RAID performance gain is minimal. :p

Hope this is of use to others who are setting up XP/linux multi-boots...




footnote 1: Why the heck does this XP set up partitions this way? When XP was installed, there was only one other primary partition on the disk (the first one, for 98). Why not just create a primary system partition? Does this have something to do with that Dynamic Disk thing? If so, would disabling DD avoid these problems?