Grub 自定义菜单项引导错误的分区

Grub 自定义菜单项引导错误的分区

我有一个外部 SSD 驱动器,Linux 安装在分区 1 上,EFI 启动在分区 2 上。

分区 3 上还有第二个 Linux 安装,但我从未使用过。

然后,ext4 分区上有两个不同的实时系统的两个分区:4 和 5。

Grub 在第一个分区上搜索 grub.cfg,然后在同一分区的 目录中搜索 custom.cfg 和 custom2.cfg /boot/grub/

custom.cfg有一个菜单项将根分区设置为hd1,gpt4.

custom2.cfg有一个菜单项将根分区设置为hd1,gpt5.

问题是当我尝试启动custom2.cfg菜单项时,它会启动实时系统hd1,gpt4而不是hd1,gpt5.

这是/etc/grub.d/41_custom创建结尾的grub.cfg

#!/bin/sh
cat <<EOF

search --no-floppy --fs-uuid --set=prefix1 --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  4787b339-ad49-4744-8d9a-9f0e95b78af2

if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix1/custom.cfg ]; then
  source \$prefix1/custom.cfg
fi
if [ -f  \${config_directory}/custom2.cfg ]; then
  source \${config_directory}/custom2.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix1/custom2.cfg ]; then
  source \$prefix1/custom2.cfg
fi
EOF

这是custom.cfg

# Live boot
menuentry "Live system (amd64) toram sda4" {
    search.fs_uuid 7f492729-d71b-4811-80e1-13a9e7943cf6 root hd1,gpt4
    linux   /live/vmlinuz toram=filesystem.squashfs boot=live components quiet 
    initrd  /live/initrd.img
}

这是custom2.cfg

# Live boot
menuentry "Live system (amd64) toram sda5" {
    search.fs_uuid be7cf5ce-ac26-41ee-bf26-3c1f10f0521a root hd1,gpt5
    linux   /live/vmlinuz toram=filesystem.squashfs boot=live modprobe.blacklist=nouveau components quiet
    initrd  /live/initrd.img
}

我尝试在启动菜单中按 编辑这些条目e,它显示了正确的条目。

另外,命令的结果blkid

/dev/sdb1: LABEL="LINUX1" UUID="4787b339-ad49-4744-8d9a-9f0e95b78af2" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="LINUX1" PARTUUID="b43aa19d-ad07-4fe9-ba0c-dec43cb11e79"
/dev/sdb2: UUID="4C68-92D0" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="ea5e7013-fe47-49c1-a2f7-abd1cb9b790f"
/dev/sdb3: LABEL="LINUX2" UUID="5afc0ee0-ac59-4c59-985f-2ab8107a0d82" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="LINUX2" PARTUUID="035360f4-7634-4d24-8900-0f9ada81c709"
/dev/sdb4: LABEL="LIVE" UUID="7f492729-d71b-4811-80e1-13a9e7943cf6" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="LIVE" PARTUUID="a7b77431-a1b8-487d-80d2-8ef09b7add0f"
/dev/loop0: TYPE="squashfs"
/dev/sdb5: LABEL="LIVE2" UUID="be7cf5ce-ac26-41ee-bf26-3c1f10f0521a" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="LIVE2" PARTUUID="d77ffe57-e841-4890-938c-6d1997a96332"
/dev/sda: PTUUID="a6f73218-8327-45b9-981c-bae22eeb475c" PTTYPE="gpt"

所以我想知道为什么 grub boothd1,gpt4而不是hd1,gpt5

相关内容