当设备不可用时隐藏 grub 菜单中的条目?

当设备不可用时隐藏 grub 菜单中的条目?

我的菜单中有几个条目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变量并不是真正必要的,并且可以简化代码,但以防万一......

相关内容