Hi, Bill.
My memory on drive letter assignment sequence is about as hazy as
Sharon's, but I happen to have some literature on it handy, so here's the
long version of the explanation. ;^}
"Drive" letters are not permanently assigned. Each time you reboot,
former drive letters are forgotten and the BIOS assigns letters from
scratch using its built-in algorithm, which can't be changed except by the
folks who write the BIOS. What was Drive X: this morning might be Drive
Y: this afternoon if you added or removed HDDs, or added or removed
volumes on existing HDDs. For x86 computers, the BIOS algorithm has not
changed in many years; I've read about the order more than once, but don't
remember it. As I recall, all primary partitions on the first HDD are
assigned letters first, then primary partitions on other HDDs, then
logical drives in extended partitions, then driver-managed devices, such
as CD/DVD drives, USB drives, cameras, etc.
Once Windows loads, it may re-assign the letters, using its own built-in
rules, which may be different from the BIOS assignments, and Win98 rules
are different from WinXP rules. But we have some control over these
letters, if we choose to use that control. By using Disk Management in
WinXP or Device Manager in Win98, we can assign letters of our choice and
Windows will attempt to use those same letters on each reboot thereafter.
"Drive letter" is actually a misnomer because letters are not assigned to
physical drives. After we create primary partitions on an HDD, each of
those partitions is assigned a letter, so we sometimes call it a partition
letter, but that's not strictly true, either. We can create an extended
partition, then create multiple logical drives within that extended
partition. The extended partition itself does get a "drive" letter, but
each of the logical drives within it gets a letter. Each primary
partition and each logical drive is a "volume" and each volume is assigned
a "drive letter". In boot.ini, volumes are referred to as
rdisk(#)partition(#). HDDs are numbered starting with zero. "Partition"
actually means "volume" in this case and numbering starts with one on each
HDD. On a physical drive with one primary partition followed by an
extended partition, the second logical drive would be "partition(3)".
You can read about the drive letter assignment rules here:
http://www.microsoft.com/resources/...indows/XP/all/reskit/en-us/prork_overview.asp
Here's a quote pasted from that chapter of the Windows XP Professional
Resource kit:
<begin Paste>
After you create each volume, Setup assigns it a drive letter. The drive
letter that Setup chooses depends on whether other basic volumes, dynamic
volumes, and removable disks have drive letters already assigned. For all
volumes and removable disks without drive letters, Setup assigns drive
letters by using the following method:
1. Scans all fixed hard disks as they are enumerated. Assigns drive
letters starting with any active primary partition (if one exists);
otherwise, scans the first primary partition on each disk. Assigns the
next available letter starting with C.
2. Scans all fixed hard disks and removable disks, and assigns drive
letters to all logical drives in an extended partition or the removable
disk(s) as enumerated. Assigns the next available letter starting with C.
3. Scans all fixed hard disks and assigns drive letters to all remaining
primary partitions. Assigns the next available letter starting with C.
4. Scans floppy drives and assigns the next available drive letter
starting with A.
5. Scans CD-ROM drives and assigns the next available letter starting with
D.
Windows XP Professional and Windows 2000 assign drive letters differently
from how Windows 98, Windows Me, and Windows NT 4.0 assign drive letters.
Therefore, if the computer starts multiple operating systems, the drive
letters might vary depending on which operating system is running. For
more information about how Windows XP Professional and Windows 2000 assign
drive letters, see the Microsoft Knowledge Base link on the Web Resources
page at
http://www.microsoft.com/windows/reskits/webresources. Search the
Knowledge Base by using the keywords "LDM" and "cmdcons."
<end Paste>
This explains why inserting your second HDD, with its priimary partitions,
changed the letter for the second partition on your first HDD. As Rule 1
says, after assigning C: to the active primary partition on HDD0, it
assigns D: to the first primary partition on HDD1. Then it returned to
HDD0 and looked for logical drives in an extended partition (Rule 2). You
haven't told us which of your volumes are logical drives, but since each
HDD can have a maximum of 4 partitions, and your HDD0 is using 5 volumes,
some of them must be logicals. You apparently have either 1, 2 or 3
primary partitions, plus an extended partition, plus 4, 3 or 2 logical
drives within the extended partition. Rule 2 would assign letters to each
logical drive. Then Rule 3 would assign letters to any remaining primary
partitions, before moving on to Rule 5 to assign letters to your CD/DVDs.
As you will notice, there is no reference to Win98SE in the file,
While WinXP and Win9x/ME may be installed into any volume in your computer
(which will become the "boot volume" for THAT Windows installation only),
the boot process always starts in the "system partition" (the active
primary partition on the first physical HDD), which is almost always Drive
C:. The Root of this system partition (C:\) holds the few "system files"
for both WinXP (NTLDR, NTDETECT.COM and Boot.ini) and Win9x/ME (io.sys and
msdos.sys). The boot sector of C: is different for NT-based operating
systems than for those based on MS-DOS. When the computer boots, the
DOS-style boot sector automatically looks for C:\io.sys to boot MS-DOS or
Win9x/ME, depending on the contents of C:\msdos.sys. If WinXP Setup
detects Win9x/ME already installed, it saves a copy of the DOS-style boot
sector in a new file, C:\bootsect.dos, then overwrites the boot sector
with the NT version. Thereafter, when the computer boots, the NT boot
sector looks for C:\NTLDR, which finds C:\boot.ini and puts the operating
system menu onscreen. If we choose WinXP, it finds the WinXP boot folder
by rdisk(#)partition(#) and loads WinXP from there. If we choose
Win9x/ME, it loads C:\bootsect.dos and turns control over to it so that it
can find and load C:\io.sys and C:\msdos.sys. So the line that loads
Win98 for you is that bottom line in boot.ini: C:\ = "Microsoft Windows"
(but there should be NO space before or after the "="). Note that this
line does not use drive or partition number; it always refers to C:\, the
Root of the system partition.
That may be more information than you wanted, Bill, but it's hard to
explain this stuff without leaving loose ends dangling. And, too often,
the fine point that is left out is exactly the little detail that makes
the difference in the current situation.
RC
Bill Post said:
Hope this don't turn up as a double post.
I posted it a couple of hours ago and as of yet it's not showing up.
I built a system about 3 yrs. ago with a single 40 gig. hard drive.
Using FDISK, I partitioned the drive into 5 partitions, C,D,E,F,G,
Drive No. is "0"
Installed Win.98SE on D partition, then installed XP Home Edition on C
partition.
Default OS is XP.
A few days ago I installed another 40 gig.drive, and DOS re-arranged my
drive
letters by inserting the partitions on the second drive in after "C" and
naming them "D" & "E".
Problem: Path to Win98SE is no longer correct.
Below is a copy of my Boot.ini file, along with a couple of samples from
Microsoft.
As you will notice, there is no reference to Win98SE in the file, yet
when I
remove
the partitions on the second disk it boots fine to both systems.
Also, when I look at the drives after starting XP, all drive letters are
correct,
and the new disk can be used as normal with drive letters "I" and "J"
Help on this would be greatly appricianted.
My current Boot.ini file
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home
Edition" /fastdetect /NoExecute=OptIn
C:\ = "Microsoft Windows"
Sample Boot.ini File
This is a sample of a default Boot.ini file from a Windows XP
Professional
computer.
[bootloader
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /fastdetect
This is a sample of the above Boot.ini file after adding another
partition
running Windows 2000 Professional.
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(1)rdisk(0)partition(1)\WINDOWS="Windows XP Professional"
/fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000 Professional"
/fastdetect