[ Think Pad R40 ]
My decisions regarding disk layout, partitioning, and drive lettering in windows 2000 may have contributed to some mysterious and troublesome problems later. Below is a description of the traps I set for myself, why they happened (my best guess anyway) and how to avoid them in future installations. Some (most?) of this is guesswork. Please help me fill in the blanks if you have additional or more specific information.
In order to get win98, win2k, Solaris, and Linux all on the same smallish hard drive - and humor the partition type requirements of each, I set things up like this: (win drive letters shown)
primary 0 C: win98
primary 1 D: win2k
primary 2 solaris
logical 0 linux boot
logical 1 linux
logical 2 linux swap
logical 3 F: fat32 scratch directory - accessible from all OSs
(The CD-RW/DVD drive is E:)
I had thought that win98 and 2k required installation in a primary partition, but my System Commander documentation indicates that they can be installed into any primary or logical partition as long as their boot files are installed into a primary partition (the 1st??). Solaris requires a primary partition.
Win98 was installed first, then win2k. I wanted win98 to be in the C: partition and win2k to be D: (for purely cosmetic reasons) so I installed them before I created the other partitions. If the fat32 scratch partiton had existed before win2k was installed, it would have been assigned the D: letter. For some whacky reason, windows passes out the drive (partition) letters in this order: primary 0, logical 0 .... logical n, primary 1 if fat/ntfs ... . primary n. If there is a 2nd hard drive, it gets worse: hd0/primary0, hd1/primary 1 (if fat/ntfs), hd0/all logicals (if fat/ntfs), hd1/all logicals (etc), then back to hd0 and hd1 for additional primaries - i don't know if it assigns all remaining primaries on hd0 before hd1, or bounces between them. Cripe, what a mess.
Anyway, I should have built all partions before installing win2k, and just let it install as F: (after the DVD drive) or whatever screwy drive letter Bill G and co. wanted it to use. The way I did it works OK -- as long as the disk geometry never changes. Unfortunately, installing Solaris or Later versions of Linux diddles the partiton table's CHS values (cylinder, head, sector), presumably (?) because they use LBA addressing. If the CHS values don't get restored before win2k gets booted again, win2k will fail to boot, and may not be recoverable.
Apparently, the changed CHS values cause win2k to think that the disk ID has changed (guessing here) and it tries to use what would have been its default drive letter (F: in this case) as the system root. It will get as far as the login screen then go to "loading settings" then to "saving settings" and back to the login screen. If win2k is configured to do an auto login, it just loops. It may also display a "missing page file" message. This behavior can also occur after cloning a drive.
It may be possible to fix things (at least for the next reboot) by booting to DOS and doing FDISK /MBR, which clears the disk IDs and forces win2k to reassign them. This worked for me after cloning a similar drive on my P4 deskside, and I was able to reboot win2k once, but on the next reboot I got a "ntoskrnl.exe file is missing or corrupt" error, and that was all she wrote.
I just went through this again on the R40. Installing Solaris 10 FCS diddled the partition tables and the partition IDs. I corrected them, before booting win2k, but even so it went into the "loading settings/saving settings" death spiral when booted. Doing a FDISK /MBR got win2k's attention, but didn't let it fix the problem. At that point I went back to System Commander and changed the ID of the extended partition to something nonsensical so windows wouldn't see the FAT32 partition (which should cause win2k's default drive letter to match the one it had when installed). Did FDISK /MBR again, rebooted win2k - twice - and it was back to good health. I then went back and changed the extended partition ID to its appropriate value, and everything was up and running as before.
Note: Solaris 10 FCS uses an ID of 0xBF, not the old 0x82. This is probably a good thing since it avoids the collision with Linux swap. Unfortunately, System Commander refuses to boot it successfully with the new ID. Not sure if it is really SC's fault. I changed it back to 0x82, and both SC and Solaris are happy.
The long and short of it is to build all the partitons first (even if just place holders) and let win2k pick its own screwy drive letter -- or arrange the partitons so that the default letter is the desired one. I could have made the win2k install default to D: by making it the first logical partion, rather than the second primary. In this way, even if modified CHS values (or whatever) confuse win2k, it will default to the drive letter under which it was installed - and still boot properly.
This approach may avoid fatal win2k failure to boot after installing Solaris or Linux, or after cloning, and explains the problems I have been fighting for some time.
What happens if the win2k install is in some drive letter above D: and a CD/DVD drive (which may be D, E, F, whatever) gets added|reomved|fails I have no clue. If it causes the win2k default drive letter to change it may cause the above problem. I haven't tested it.
[ Think Pad R40 ]