Drive letter assignment 55424 223218846 2008-07-03T02:52:45Z JeremyMcCracken 233113 /* JOIN and SUBST */ this is in every DOS system {{Refimprove|date=June 2007}} {{POV|date=December 2007}} '''Drive letter assignment''' is the process of assigning alphabetical identifiers to physical or logical [[disk drive]]s or [[partition (computing)|partition]]s (drive volumes) in the root [[filesystem]] namespace; this usage is commonly found in [[Microsoft]] [[operating system]]s. Unlike the concept of [[mount point|UNIX mount points]], where volumes are named and located arbitrarily in a single hierarchical namespace, drive letter assignment allows multiple highest-level namespaces. Drive letter assignment is thus a process of using letters to name the roots of the "forest" representing the file system; each volume holds an independent "tree" (or, for non-hierarchical file systems, an independent list of files). ==Origin== The concept of drive letters, as used today, presumably owes its origins to [[IBM]]'s [[VM (operating system)|VM]] family of operating systems, dating back to [[CP/CMS]] in [[1967]] (and its research predecessor [[IBM CP-40|CP-40]]), by way of [[CP/M]].<ref>See [[CP/M]] and [[History of CP/CMS]] for background and sources.</ref> The concept evolved through several steps: * [[CP/CMS]] used drive letters to identify ''minidisks'' attached to a user session. A full file reference (''pathname'' in today's parlance) consisted of a ''filename'', a ''filetype'', and a disk letter called a ''filemode''. Minidisks could correspond to physical disk drives, but more typically referred to logical drives, which were mapped automatically onto shared devices by the operating system as sets of ''virtual cylinders'' of fixed-size blocks. * [[CP/CMS]] inspired numerous other operating systems, including the [[CP/M]] microcomputer operating system, which used a drive letter, usually written with a colon suffix (e.g. "'''A:'''") to specify a physical storage device. This usage was similar to the device prefixes used in the [[RSX-11]] and [[Virtual Memory System|VMS]] operating systems. Early versions of [[CP/M]] (and other microcomputer operating systems) implemented a [[flat file system]] on each disk drive, where a complete file reference consisted of a ''drive letter'', a ''filename'' (up to eight characters) and a ''filetype'' (three characters); for instance '''A:README.TXT'''. (This was the era of [[floppy disk|8-inch floppy disks]], where such small namespaces did not impose practical constraints.) * The drive letter syntax chosen for [[CP/M]] was inherited by [[Microsoft]] for its operating system [[MS-DOS]] and later, [[OS/2]] and the [[Microsoft Windows]] family. Originally, drive letters always represented physical volumes, but support for [[logical volume]]s eventually appeared. Note that the important capability of [[file directory|hierarchical directories]] within each drive letter was initially absent from these systems. This was a major feature of [[UNIX]] and other similar operating systems, where hard disk drives held thousands (rather than tens or hundreds) of files. Increasing microcomputer storage capacities led to their introduction, eventually followed by [[long filenames]]. In file systems lacking such naming mechanisms, drive letter assignment proved a useful, simple organizing principle. ==JOIN and SUBST== Drive letters are not the only way of accessing different volumes. [[DOS]] offers a [[join (command)|join]] command that allows access to an assigned volume through an arbitrary directory, similar to the Unix ''mount'' command. It also offers a [[subst]] command which allows the assignment of a drive letter to a directory. One or both of these commands were removed in later systems like [[OS/2]] or [[Windows NT]], but starting with [[Windows 2000]] both are again supported: the SUBST command exists as before, while JOIN's functionality is subsumed in [[linkd]] (part of the Windows Resource Kit). In [[Windows Vista]], the new command [[mklink]] can be used for this purpose. Also Windows 2000 and later supports mount points, accessible from the Control Panel. ==Operating systems that use drive letter assignment== * [[CP/M]] * [[DOS]] * [[Atari TOS]] * [[OS/2]] * [[Microsoft Windows]] * [[ANDOS]] * [[CSI-DOS]] * [[MK-DOS]] * [[SymbOS]] * The operating systems of [[PlayStation]] and [[Xbox]] video game consoles * [[libnds]] for the [[Nintendo DS]] ==Order of assignment== Except for CP/M and early versions of MS-DOS, each of these operating systems assigns drive letters according to the following algorithm: # Assign the drive letter '''A:''' to the first [[floppy disk drive]] (drive 0), and '''B:''' to the second floppy disk drive (drive 1), if present. # Assign a drive letter, beginning with '''C:''' to the first active primary [[partition (computers)|partition]] recognised upon the first physical [[hard disk]]. # Assign subsequent drive letters to the first primary partition upon each successive physical hard disk drive, if present within the system. # Assign subsequent drive letters to every recognised logical partition, beginning with the first hard drive and proceeding through successive physical hard disk drives, if present within the system. # Assign subsequent drive letters to any [[RAM Disk]]. # Assign subsequent drive letters to any additional floppy or [[optical disc drive]]s. MS-DOS versions 3 and earlier assign letters to all of the floppy drives before considering hard drives, so a system with four floppy drives would call the first hard drive '''E:'''. The order can depend on whether a given disk is managed by a boot-time driver or by a dynamically loaded driver. For example, if the second or third hard disk is of SCSI type and on MS-DOS requires drivers loaded through the [[CONFIG.SYS]] file (e.g. the controller card does not offer on-board BIOS or using this BIOS is not practical), then the first SCSI primary partition will appear after all the IDE partitions on MS-DOS. Therefore MS-DOS and, for example, OS/2 could have different drive letters, as OS/2 loads the SCSI driver earlier. A solution was not to use primary partitions on such hard disks. In [[Windows NT]], [[Windows 2000]], [[Windows XP]] and [[OS/2]], the operating system uses the aforementioned algorithm to automatically assign letters to [[floppy disk drive]]s, [[optical disc drive]]s, the [[boot disk]], and other recognised volumes that are not otherwise created by an [[System administrator|administrator]] within the operating system. Volumes that are created within the operating system are manually specified, and some of the automatic drive letters can be changed. Unrecognised volumes are not assigned letters, and are usually left untouched by the operating system. A common problem that occurs with the drive letter assignment is that the letter assigned to a network drive can interfere with the letter of a [[local volume]] (like a newly installed CD/DVD drive or a USB stick). For example, if the last local drive is drive '''D:''' and we have assigned to a network drive as '''E:''', then when we connect a USB mass storage device it will also be assigned drive '''E''': causing loss of connectivity with either the network share or the USB device. To overcome this problem either assign driver letters manually or use third-party software such as [http://www.uwe-sieber.de/usbdlm_e.html USB Drive Letter Manager]. Another condition that can cause problems on Windows XP is when there are network drives defined but in an error condition (as they would be on a laptop operating outside the network). Even when the unconnected network drive is not the next available drive letter, Windows XP may be unable to map a drive and this error may also prevent the mounting of the USB device. == Common assignments == Applying the scheme discussed above on a fairly modern Windows based system typically results in the following drive letter assignments: *'''A:''' — [[Floppy disk drive]]s, 3.5" or 5.25", and possibly other types of disk drives, if present. *'''B:''' — Reserved for a second floppy drive, if present. *'''C:''' — First [[hard disk]] partition. *'''D:''' to '''Z:''' — Other disk partitions get labeled here. [[Windows 9x]] assigns the next free drive letter to the next drive it encounters while enumerating the disk drives on the system (during installation). Drives can be partitioned, thereby creating more drive letters. This applies to MS-DOS, as well as ALL Windows operating systems. Windows offers other ways to change the drive letters, either through the Disk Manager (Windows NT, 2000, XP and later) or through the Device Manager found in the Control Panel. MS-DOS typically uses parameters on the line loading device drivers inside the [[config.sys]] file. Because Windows 9x is based on MS-DOS, those drive letters as established inside the config.sys file also apply to Windows 9x systems. *'''D:''' to '''Z:''' — CD-ROM, DVD, or shared network drives, if present, begin after the last used hard drive partition drive letter. *'''F:''' — First network drive if using [[Novell NetWare]] *'''Z:''' — First network drive if using [[Banyan VINES]], and the initial drive letter assignment for the virtual disk network in the [[DOSBox]] [[x86]] emulator. The '''C:''' drive usually contains all of the Windows [[operating system]] files required for operation of the computer. On many modern personal computers, only one hard drive with one partition is present, so it is designated '''C:'''. On such a computer, all of a user's personal files are often stored in [[directory (file systems)|directories]] on this drive as well. These drives can, however, be different. When there is no second physical floppy drive, the '''B:''' can be used as a "virtual" floppy drive mapped onto the physical '''A:''' drive, whereby the user would be prompted to switch floppies every time a read or write was required to whichever was the least recently used of '''A:''' or '''B:'''. This allow for much of the functionality of two floppy drives on a computer that has only one. Network drives are often assigned letters towards the end of the alphabet. This is often done to differentiate them from local drives: by using letters towards the end, it reduces the risk of an assignment conflict. This is especially true when the assignment is done automatically across a network (usually by a logon script). It is not possible to have more than 26 mounted drives. If access to more filesystems than this is required, [[Volume Mount Point]]s must be used.<ref>[http://technet2.microsoft.com/WindowsServer/en/library/f7e61105-8033-4c45-a6d2-9476266aac221033.mspx?mfr=true Microsoft TechNet] Retrieved on [[1 December]] [[2006]]</ref> ==See also== *[[Drive mapping]] ==References== <references/> ==External links== *[http://www.novell.com/coolsolutions/tip/14875.html Tips for USB related drive letter issues] [[Category:Microsoft Windows file system technology]] [[Category:DOS on IBM PC compatibles]] [[ja:ドライブレター]]