为什么我需要 GRUB_DISABLE_LINUX_UUID=true

Mar*_*urg 5 boot grub2 uuid

我刚刚从 lilo 切换到 grub2,我的第一次尝试失败了kernel panic - not syncing vfs unable to mount root fs on unknown block(0 0)。事实证明,问题在于根分区是根据 UUID 而不是设备名称指定的。解决方案是取消GRUB_DISABLE_LINUX_UUID=true注释/etc/default/grub

原始自动生成/boot/grub/grub.conf包含一些 UUID 条目和一些 /dev 条目。

  • update-grub 如何在 UUID 和 /dev rootfs 之间进行选择,即为什么有时是 UUID,有时不是?
  • 是什么让 UUID 无法工作?我没有找到可能设置错误的内核参数(内核3.8.2)
  • 当 grub 使用 UUID 时,我的 fstab 中是否需要 UUID?

Ant*_*hon 4

的值由目录中的脚本GRUB_DISABLE_LINUX_UUID使用。如果您仍然在其中获得 UUID,则看起来其中一个脚本没有检查该设置。update-grub/etc/grub.d/grub.confGRUB_DISABLE_LINUX_UUID

最好的办法是尝试找出文件系统类型是什么,并根据脚本名称进行检查,/etc/grub.d看看是否存在某种模式。

至于为什么 UUID 不起作用,我没有明确的答案,我怀疑这取决于文件系统类型,但这是一个疯狂的猜测。

即使 grub 使用 UUID,您的 fstab 中也不需要它们,但这当然是一种可能的方法来查看您是否首先使用了正确的 UUID(但我宁愿查看/dev/disk/by-uuid这一点)。

  • GRUB_DISABLE_LINUX_UUID 确实有效,我在 grub.cfg 中不再看到 UUID。我的问题是,为什么我需要首先设置它。文档表明,不使用 UUID 是一个外观问题(/dev 看起来更好),但就我而言,UUID 根本不起作用。文件系统是 ext4。刚刚检查了 dmesg,我看到“EXT3-fs (sda1):错误:由于不支持的可选功能而无法安装 (240)”。这可能就是 /dev 可以工作但 UUID 不行的原因吗? (2认同)