triple boot system breaks XP "cannot find hal.dll"

Bug #158568 reported by tyrolian
4
Affects Status Importance Assigned to Milestone
linux-source-2.6.22 (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

Binary package hint: linux-source-2.6.22

Yesterday I installed the Ubuntu 7.10 Alternate-i386.iso on a dual-boot system with WIN2K and XP. Ubuntu, WIN2K, and the boot menu system all seem to work fine but XP immediately aborts with a message like "Cannot find windows/system32/hal.dll". I can check XP's file system with WIN2K and can verify that hal.dll is where it belongs and is not corrupted. The Windows boot.ini file did not get modified before, during, or after the install..

I am reporting this as a bug because I have seen this exact problem about 1.5 years ago when installing Ubuntu 6.06 on another system with completely different hardware. Both systems each have one Western Digital 80GB hard-drive but the old one is IDE and the new one is SATA. The thing that is the same is that both systems initially had WIN2K on the C: partition, XP on the D: partition, and an E: partition for data. During the Ubuntu installs, the E:partition was erased and two new partitions for Ubuntu were created to take it's place. The same exact problem happened with the old system except that XP worked fine and WIN2K was broken with a similar "Cannot find winnt/system32/hal.dll".

I was able to fix the old system without loosing anything and it has worked fine as a triple boot system ever since. I can't remember exactly what I did but it involved sorting the partitions so that all Windows boot partitions were either in a primary partition or the first one in the extended partition. WIN2K was able to boot in safe mode after that and was fixed completely after "enabling the last known good configuration". I was able to fix it because it was a known problem and was able to find help online. I am surprised the problem is still around.

Here is the results of fdisk -l on my new system (I still have not fixed it):

Disk /dev/sda: 80.0 GB, 80032038912 bytes
255 heads, 63 sectors/track, 9730 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x9b129b12

   Device Boot Start End Blocks Id System
/dev/sda1 * 1 3692 29655958+ 7 HPFS/NTFS
/dev/sda2 3693 7485 30467272+ f W95 Ext'd (LBA)
/dev/sda3 7486 9730 18032962+ 83 Linux
/dev/sda5 3693 7381 29631861 7 HPFS/NTFS
/dev/sda6 7382 7485 835348+ 82 Linux swap / Solaris

My broken XP partition is at sda5 which is apparently a logical partition. It is my understanding that Windows knows nothing about logical or extended partitions and only works with primary partitions. I assume the Windows boot loader goes to the first sector in a primary partition to find files but a logical partition is not connected to the first sector.

 So why does Ubuntu still put bootable Windows partitions in logical partitions? It should at least warn people about potential problems if it must do this and explain how to fix the problem. A search online for "ubuntu" and "hal.dll" shows there is a lot of confusion and misinformation about this problem. At first glance it looks like a Windows problem but apparently if you try to do a Windows repair it says the hard drive is corrupted and it cannot fix it. Some people have found that wiping Ubuntu off the hard-drive will fix the problem. Others have resorted to re-formating and re-installing XP.

Revision history for this message
tyrolian (dfyler) wrote :

Update: Well I fixed the above mentioned new system with broken XP and it was much easier than I thought. A simple edit of the boot.ini file was all that was required. I guess I was wrong about XP being in a unworkable partition (yes, I am another noob who fell for bad information). I still consider it a bug, though, that Ubuntu trashed XP without warning.

I found the fix at: http://ubuntuforums.org/showthread.php?t=78509
Ubuntu 7.10 can read and write NTFS files directly so it is easy to edit boot.ini.

Revision history for this message
Leann Ogasawara (leannogasawara) wrote :

Per you last comments, I'm closing this report. Thanks.

Changed in linux-source-2.6.22:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.