Solved! RE: Win2k dual boot recovery help

Alan Dayley plug-discuss@lists.plug.phoenix.az.us
Tue, 01 Oct 2002 13:56:53 -0700


At 01:09 PM 10/1/02 -0700, you wrote:
>History:
>- computer arrives with Win2k installed on NTFS
>- Shrink original partition and create 2 additional partitions using 
>Partition Magic
>- Install Win98 on FAT32 on one of the partitions so that Win2k provides 
>choice between them
>- Install RH 7.3 on the third partition, choosing to put GRUB in the MBR
>- Now have computer that provides "Red Hat" and "DOS" choices in GRUB
>- Choosing Red Hat boots Linux.  Cool.
>- Choosing DOS brings up the Win2k boot menu, providing Win2k and Win98 
>choices.
>- Choosing Win98 there boots Win98.  Fine.
>- Choosing Win2k there produces:
>"Windows 2000 could not start because the following file is missing or 
>corrupt: <windows 2000 root>/system32/ntoskrnl.exe.
>Please re-install a copy of the above file."
>
>I know I need to do "fdisk /mbr" from a Windows boot disk to get Win2k 
>back alive (at least I am pretty sure that's what must be done).  But, 
>what do I do after that to make the Linux partition selectable and 
>bootable since that operation will wipe out GRUB?
>
>At this point, it may be just as easy to re-install the Linux after fixing 
>the Win2k boot problem.  I just wanted to learn how to do it without 
>re-installing.
>
>Alan

I found the solution after more specific googling.

Win2k (and NT) count the number of active partitions, somehow.  The 
c:\boot.ini (a hidden system file) keeps track of the boot partitions 
available and points to them by number.  Installing the Linux root and swap 
partitions as additional primary partitions changes the partition 
count.  Now the boot.ini parameter for Win2k is pointing at the wrong 
partition number!  The solution for my situation, as described above, was:

- Boot to Win98
- Bring up a DOS prompt window
- Change to the c:\ directory
- Issue this command "attrib -r -a -h -s boot.ini" to change the file to a 
normal file.
- edit boot.ini
- Change every line that looks like 
"multi(0)disk(0)rdisk(0)partition(2)\winnt=..." to 
"multi(0)disk(0)rdisk(0)partition(4)\winnt=..."
Adding 2 to the value of the partition index number.
- Save the boot.ini file
- Issue this command "attrib +r +a +h +s boot.ini" to change the file back 
to a hidden system file.
- Reboot

Now the system comes up into GRUB with two choices, Linux and 
DOS.  Choosing the DOS entry brings up the Windows 2000 boot menu from 
which either Windows 2000 or Windows 98 can be booted.

Thanks for the help!

Alan