grub: Root Identifcation Heuristics

 
 6.2 Root Identifcation Heuristics
 =================================
 
 If the target operating system uses the Linux kernel, 'grub-mkconfig'
 attempts to identify the root file system via a heuristic algoirthm.
 This algorithm selects the identification method of the root file system
 by considering three factors.  The first is if an initrd for the target
 operating system is also present.  The second is
 'GRUB_DISABLE_LINUX_UUID' and if set to 'true', prevents 'grub-mkconfig'
 from identifying the root file system by its UUID. The third is
 'GRUB_DISABLE_LINUX_PARTUUID' and if set to 'true', prevents
 'grub-mkconfig' from identifying the root file system via the UUID of
 its enclosing partition.  If the variables are assigned any other value,
 that value is considered equivalent to 'false'.  The variables are also
 considered to be set to 'false' if they are not set.
 
    When booting, the Linux kernel will delegate the task of mounting the
 root filesystem to the initrd.  Most initrd images determine the root
 file system by checking the Linux kernel's command-line for the 'root'
 key and use its value as the identification method of the root file
 system.  To improve the reliability of booting, most initrd images also
 allow the root file system to be identified by its UUID. Because of this
 behavior, the 'grub-mkconfig' command will set 'root' to 'root=UUID=...'
 to provide the initrd with the filesystem UUID of the root file system.
 
    If no initrd is detected or 'GRUB_DISABLE_LINUX_UUID' is set to
 'true' then 'grub-command' will identify the root filesystem by setting
 the kernel command-line variable 'root' to 'root=PARTUUID=...' unless
 'GRUB_DISABLE_LINUX_PARTUUID' is also set to 'true'.  If
 'GRUB_DISABLE_LINUX_PARTUUID' is also set to 'true', 'grub-command' will
 identify by its Linux device name.
 
    The following table summarizes the behavior of the 'grub-mkconfig'
 command.
 
 Initrd     GRUB_DISABLE_LINUX_PARTUUID   GRUB_DISABLE_LINUX_UUID   Linux Root
 detected   Set To                        Set To                    ID Method
 --------------------------------------------------------------------------------
 false      false                         false                     part UUID
 false      false                         true                      part UUID
 false      true                          false                     dev name
 false      true                          true                      dev name
 true       false                         false                     fs UUID
 true       false                         true                      part UUID
 true       true                          false                     fs UUID
 true       true                          true                      dev name
 
    Remember, 'GRUB_DISABLE_LINUX_PARTUUID' and 'GRUB_DISABLE_LINUX_UUID'
 are also considered to be set to 'false' when they are unset.