![Grub 自定义菜单项引导错误的分区](https://linux22.com/image/229708/Grub%20%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E9%A1%B9%E5%BC%95%E5%AF%BC%E9%94%99%E8%AF%AF%E7%9A%84%E5%88%86%E5%8C%BA.png)
我有一个外部 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
?