当我们在 /etc/default/grub 中取消注释 GRUB_DISABLE_LINUX_UUID=true 时会发生什么。
答案1
嗯,我认为上面的评论说明了一切
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
取消注释该行后,root= 将作为设备名称传递,而不是 UUID。
linux /boot/vmlinuz-2.6.30-1-amd64 root=UUID=...
到
linux /boot/vmlinuz-2.6.30-1-amd64 root=/dev/sdX
- 但是,不建议取消注释该行,因为如果您删除/创建新分区,分区表将会发生更改。
- 这样你就无法启动系统。
答案2
取消注释后,下次 grub 重新生成 /boot/grub.cfg 时将使用绝对设备名称而不是 UUID,即 /dev/sdXY
因此,如果你重新排列分区表中的分区(例如插入/删除分区)并且分区号发生变化,grub 将无法找到要启动的内核
使用 UUID,即使重新排列分区也不会造成任何影响
UUID 的缺点是太长,因此很难记住。
答案3
真正的问题是向您的系统添加磁盘。如果您的磁盘之前是 /dev/sda,并且作为唯一驱动器插入 SATA1,后来您添加了第二个驱动器,但将其插入 SATA0,则它将变为 /dev/sda,并且您的 root= 映射将无效。但是 UUID 没有这个问题,因为它们是唯一标识符。
此外,如果您有多个扩展卡,它们有时会在略有不同的时间被检测到,从而导致挂在其上的驱动器的驱动器名称分配不同。同样,UUID 不受影响。此外,如果一个驱动器坏了,有时另一个驱动器会代替它,例如,如果 /dev/sda 坏了,也许在下次启动时 /dev/sdb 会神奇地变成 /dev/sda。确实会发生这种情况。
我想说,系统越大或者越大,启动时驱动器随机排列的可能性就越大。
就我个人而言,我并不介意使用 UUID 作为 root=,但我知道它有它的位置。