我的菜单中有几个条目GRUB2菜单,其中一些指向可移动设备(Ventoy、Windows 等)。有没有办法配置 grub 自动暂时隐藏(或灰显或标记)它们指向的设备/分区/标签不可用的菜单项?
我无法获得任何有关此事的信息,所以我想答案可能是响亮的“不可能”,但是......
答案1
使用 Artem 关于动态添加条目的建议,这就是我所做的(无法使 case/esac 在我的 grub.cfg 中工作):
for dev in LIVEBOOT VTOYEFI ESP; do
set preroot=""
search --no-floppy --label "$dev" --set preroot
if [ "$preroot" != "" ]; then
if [ "y$dev" == "yLIVEBOOT" ]; then
menuentry "Fedora KDE Live [EFI] ($dev)" $preroot $dev --class fedora --class gnu-linux --class gnu --class os {
set root=$2
linuxefi /images/pxeboot/vmlinuz root=live:CDLABEL=$3 rd.live.image quiet rhgb
initrdefi /images/pxeboot/initrd.img
}
fi
if [ "y$dev" == "yESP" ]; then
menuentry "Ruindows [SSD] ($dev)" $preroot --class windows --class os {
insmod fat
set root=$2
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
fi
if [ "y$dev" == "yVTOYEFI" ]; then
menuentry "Ventoy [256GB pendrive] ($dev)" $preroot --class lubuntu --class os {
insmod fat
set root=$2
chainloader /EFI/BOOT/BOOTX64.EFI
}
fi
fi
done
也许该preroot
变量并不是真正必要的,并且可以简化代码,但以防万一......