Siduction Forum

Siduction Forum => Scripting & Kernelhacking => Topic started by: hsp on 2021/11/04, 10:34:23

Title: eigene grub.cfg will nicht wie ich will
Post by: hsp on 2021/11/04, 10:34:23
Kann mir jemand erklären warum das hier nicht funktioniert in der grub.cfg? Oder kann mir sagen wie es richtig wäre. Also der Rechner soll booten abhängig davon ob diese UUID vorhanden ist oder nicht.

Code: [Select]

loadfont /EFI/boot/fonts/unicode.pf2
set gfxmode=auto
set gfxpayload=keep
terminal_output gfxterm
background_image /EFI/wallpaper/grub-background.png

set timeout=3

if [ search --no-floppy --fs-uuid a4f2c9cd-b66b-4b2d-b658-e056ab4cf46d ]; then
    menuentry 'Linux' {
        search  --no-floppy --fs-uuid --set=root a4f2c9cd-b66b-4b2d-b658-e056ab4cf46d
        echo    'loading Linux...'
        linux   /vmlinuz root=UUID=a4f2c9cd-b66b-4b2d-b658-e056ab4cf46d ro quiet
        echo    'loading initrd.img...'
        initrd  /initrd.img
    }
else
    menuentry "Windows" {
        insmod part_gpt
        insmod part_msdos
        insmod fat
        insmod search_fs_uuid
        set uuid=4028-049D
        search --no-floppy --set=root --fs-uuid $uuid
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }
fi
Title: Re: eigene grub.cfg will nicht wie ich will
Post by: der_bud on 2021/11/04, 20:07:00
Ich versteh nicht viel davon, aber kann es sein dass 'search' gar kein true/false Ergebnis liefert auf das then und else anspringen könnten?
Vielleicht kann man das umgehen und umformulieren, indem direkter auf das Vorhandensein des Devices geprüft wird...
Bei mir werden aus 41_custom in grub.cfg zB die Zeilen generiert
Code: [Select]
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi

daraus würde ich schliessen Du könntest ein Konstrukt bauen wie
Code: [Select]
if [ -f  /dev/disk/by-uuid/a4f2c9cd-b66b-4b2d-b658-e056ab4cf46d ]; then boote dies, sonst das
Title: Re: eigene grub.cfg will nicht wie ich will
Post by: hsp on 2021/11/04, 20:33:54
Danke, aber ich habe das mittlerweile selber gelöst. In dem ganzen da steckt ein Denkfehler. Ich bin immer davon ausgegangen das in der VAR 'root' die uuid steht wenn gefunden. Das ist aber nicht so, das Device wo die uuid gefunden steckt dann in der VAR, z.b. hd1,gpt2 oder hd0,msdos2. So in der Art. Wenn man das weiß klappt das auch wenn man das etwas 'umbastelt.

...