如何在 GRUB 中通过 id 或 title 设置后备条目?

如何在 GRUB 中通过 id 或 title 设置后备条目?

如何按 ID 设置后备条目或在子菜单中选择条目?当前唯一有效的选项是使用编号条目(即set fallback=0)。

背景

我的团队远程更新运行 Debian 的设备。这些单元是远程部署的,因此物理或 KVM 访问很少,因此不是可行的解决方案。我们将新的系统映像复制到相同的分区(在本例中为 /dev/sda2)。

root@widget:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    1 186.3G  0 disk
├─sda1   8:1    1   953M  0 part /boot
├─sda2   8:2    1  23.3G  0 part /
├─sda3   8:3    1  23.3G  0 part /alt 

重新安装分区后/alt,我们要验证映像是否未损坏。为了测试这一点,我们创建一个自定义条目(例如newimg在 中/etc/grub.d/40_custom)。以( )开头的 UUIDxxxxxxxx为挂载的分区,以( )开头的 UUID为挂载的分区。/bootdev/sda1yyyyyyyy//dev/sda3

menuentry 'Debian 10 (buster) newimg' --id newimg {
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        linux /vmlinuz-4.2 root=UUID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy ro nomodeset panic=5 quiet
        initrd /initrd.img-4.2
}
set fallback='1>2'

接下来我们运行update-grubgrub-reboot newimg执行一次重新启动。如果图像损坏,我们需要一个后备图像,这样我们就不会失去对终端的访问。过去,我们会使用第一个 grub 菜单条目作为后备 ( set fallback=0)。然而,新的/vmlinuz-4.2将在最新的或条目中使用0,因此将毫无意义地退回到自身。我一直在使用损坏的图像测试后备vmlinuz-4.2。根据GRUB 文档,

条目可以通过编号(在层次结构的每个级别从 0 开始)、标题或 id 来标识。

然而,我见过的唯一有效的方法是使用数字(我也无法让子菜单条目工作)。对于所有其他选项,我都会收到此错误消息:Failed to boot both default and fallback entries

我尝试过的事情:

  • 如果我将后备更改40_customset fallback='1>2'( Advanced options for Debian GNU/Linux > Debian GNU/Linux, with Linux 4.1) ,它会选择条目1,但它会1>0代替1>2.并1>0选择相同的损坏的 vmlinuz 映像。
  • 我还尝试添加另一个使用旧内核 ( defaultimg) 的自定义启动条目,并set fallback=defaultimg在验证我可以成功手动启动到defaultimg.
  • 我尝试更改前面的两个选项,不set带单引号和双引号。

GRUB版本:2.02+dfsg1-20

相关内容