grub: Device map
4.3 The map between BIOS drives and OS devices
==============================================
If the device map file exists, the GRUB utilities ('grub-probe', etc.)
read it to map BIOS drives to OS devices. This file consists of lines
like this:
(DEVICE) FILE
DEVICE is a drive specified in the GRUB syntax (⇒Device
syntax), and FILE is an OS file, which is normally a device file.
Historically, the device map file was used because GRUB device names
had to be used in the configuration file, and they were derived from
BIOS drive numbers. The map between BIOS drives and OS devices cannot
always be guessed correctly: for example, GRUB will get the order wrong
if you exchange the boot sequence between IDE and SCSI in your BIOS.
Unfortunately, even OS device names are not always stable. Modern
versions of the Linux kernel may probe drives in a different order from
boot to boot, and the prefix ('/dev/hd*' versus '/dev/sd*') may change
depending on the driver subsystem in use. As a result, the device map
file required frequent editing on some systems.
GRUB avoids this problem nowadays by using UUIDs or file system
labels when generating 'grub.cfg', and we advise that you do the same
for any custom menu entries you write. If the device map file does not
exist, then the GRUB utilities will assume a temporary device map on the
fly. This is often good enough, particularly in the common case of
single-disk systems.
However, the device map file is not entirely obsolete yet, and it is
used for overriding when current environment is different from the one
on boot. Most common case is if you use a partition or logical volume
as a disk for virtual machine. You can put any comments in the file if
needed, as the GRUB utilities assume that a line is just a comment if
the first character is '#'.