我知道 grub 会从零开始命名我的硬盘和分区,所以/dev/sda
可能是(hd0,0)
和/dev/sdb2
可能是(hd1,2)
。是否可以保证 grub 按照与 Linux 相同的顺序对硬盘进行编号,甚至对分区进行编号?我找到的有关此命名约定的文档(1)忽略了这个细节,我找不到实际确定给定分区的 grub 名称的方法。
我以为它甚至不是保证当我重新启动 PC 时,它/dev/sda
不会加载/dev/sdc
,这就是我们使用 UUIDfstab
而不是/dev/sd*
标签的原因。有没有办法在/etc/grub.d
脚本中使用 UUID 或类似的东西来代替(hdX,Y)
符号?
(1)https://dev.gentoo.org/~floppym/grub.html#Naming-convention
答案1
“/dev/sda 可能是 (hd0,0)”:错误。GRUB 用单个数字表示磁盘。如果 GRUB 安装在 /dev/sda 中,它将是
(hd0)
。分区以 命名
(hdX,Y)
,其中X
为硬盘号, 为Y
分区号。磁盘编号因情况而异。如果您将 GRUB 链式加载到另一块磁盘(例如,拇指驱动器),则拇指驱动器将表示为 ,
(hd0)
而主磁盘将表示为(hd1)
(如果您从主磁盘运行 GRUB,则情况相反)。您可以随时使用该命令列出 GRUB 中的所有驱动器
ls
。(hdx,y)
您可以使用以下命令使用 UUID 代替传统方法:(search --no-floppy --fs-uuid --set XXXXXX
替换XXXXXX
为您分区的 UUID。它会将其设置为根。