장치를 사용할 수 없을 때 grub 메뉴의 항목을 숨기시겠습니까?

장치를 사용할 수 없을 때 grub 메뉴의 항목을 숨기시겠습니까?

내 메뉴에는 여러 항목이 있습니다.GRUB2메뉴 중 일부는 이동식 장치(Ventoy, Windows 등)를 가리킵니다. 가리키는 장치/파티션/레이블에 사용할 수 없는 메뉴 항목을 자동으로 일시적으로 숨기거나 회색으로 표시하도록 Grub을 구성하는 방법이 있습니까?

이에 대한 정보를 얻을 수 없기 때문에 "절대"라고 대답할 수 있을 것 같습니다만...

답변1

항목을 동적으로 추가하는 것에 대한 Artem의 제안을 사용하여 이것이 내가 한 일입니다(내 grub.cfg에서 작동하도록 케이스/esac을 얻을 수 없음).

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변수가 실제로 필요하지 않고 코드를 단순화할 수도 있지만 만일의 경우에...

관련 정보