如何将 CentOS/RHEL7 中的 grub2 从 UUID 更改为旧式设备?

Nil*_*ils 1 uuid grub2 rhel7 centos7

CentOS/RHEL 7 有一些变化(与 CO/RHEL 6 相比)。其中之一是使用grub2而不是grub

默认情况下,操作系统似乎使用 UUID 来“查找”引导设备。

是否有一个易于使用的 receipe 来返回设备名称(如 /dev/sda1)?

问题背景:我打算从模板中克隆其他虚拟机。Base 是具有不同 UUID 的新(虚拟)磁盘设备。

如果我无法恢复到sda1,我将需要将grub.cfg 中克隆的 UUID 更改为新的 UUID - 这是计划“B”。

更新2017-10-26

root=的内核参数将更改为磁盘 - 请参阅下面Thomas的回答。

这部分仍然存在一个问题,由grub2-mkconfig生成:

    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  716433ab-9e30-42a7-a272-6c66243499d2
    else
      search --no-floppy --fs-uuid --set=root 716433ab-9e30-42a7-a272-6c66243499d2
    fi
Run Code Online (Sandbox Code Playgroud)

这仍然包含对 UUID 的搜索。如果找不到,引导过程将进入错误“未找到”或类似错误。按 ENTER 后,系统将正常启动。

剩下的问题是如何停用该部分(我没有找到禁用feature_platform_search_hint的地方)?

Tho*_*mas 6

这可以通过将如下参数添加到/etc/default/grub.

$ echo "GRUB_DISABLE_LINUX_UUID=true" >> /etc/default/grub
$ grub2-mkconfig -o /boot/grub2/grub.cfg
Run Code Online (Sandbox Code Playgroud)

如果您想之前仔细检查结果。

$ grub2-mkconfig | less
Run Code Online (Sandbox Code Playgroud)

更新

要完全禁用GRUB 中的 UUID ,您需要将以下行添加到/etc/sysconfig/grub

$ echo "GRUB_DISABLE_UUID=true" >> /etc/default/grub
$ grub2-mkconfig -o /boot/grub2/grub.cfg
Run Code Online (Sandbox Code Playgroud)