Как написать правильную команду grub при установке нескольких ОС с помощью archlinux?

Вы можете использовать действие -execв find, чтобы можно было манипулировать строкой оболочки с именем файла. Расширение параметра "${var%.*}"можно использовать для удаления расширения. Ниже приведен пример.

find. -type f -name '*.css.gz' -exec bash -c 's3cmd put --acl-public --add-header="Content-Encoding: gzip" "$1" "s3://mybucket/assets/${1%.*}"' -- {} \;

0
25.01.2021, 04:36
1 ответ

Перезагрузитесь в archlinux и выполните:

grub-mkconfig -o /boot/grub/grub.cfg

Файл grub.cfg содержит основное содержимое (опускает много неважных строк):

menuentry 'Arch Linux (on /dev/sda1)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-6a89fa29-fbc4-4f75-9615-c3cd537f688f' {
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  6a89fa29-fbc4-4f75-9615-c3cd537f688f
    else
      search --no-floppy --fs-uuid --set=root 6a89fa29-fbc4-4f75-9615-c3cd537f688f
    fi
    linux /boot/vmlinuz-linux root=UUID=6a89fa29-fbc4-4f75-9615-c3cd537f688f rw loglevel=3 quiet
    initrd /boot/initramfs-linux.img
}

menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-8006ce1b-3c44-4248-acd7-5a14a7bb1e49' {
    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt4 --hint-efi=hd0,gpt4 --hint-baremetal=ahci0,gpt4  8006ce1b-3c44-4248-acd7-5a14a7bb1e49
    else
      search --no-floppy --fs-uuid --set=root 8006ce1b-3c44-4248-acd7-5a14a7bb1e49
    fi
    echo    'Loading Linux 4.19.0-13-amd64...'
    linux   /boot/vmlinuz-4.19.0-13-amd64 root=UUID=8006ce1b-3c44-4248-acd7-5a14a7bb1e49 ro  quiet
    echo    'Loading initial ramdisk...'
    initrd  /boot/initrd.img-4.19.0-13-amd64
}

menuentry 'Windows Boot Manager (on /dev/sdb2)' --class windows --class os $menuentry_id_option 'osprober-efi-A4BB-9CC3' {
    insmod part_gpt
    insmod fat
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  A4BB-9CC3
    else
      search --no-floppy --fs-uuid --set=root A4BB-9CC3
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Меня не устраивает решение, во время установки debian на конечном этапе будут обнаружены все установленные ОС и записаны все в grub.cfg, возможно Archlinux тоже может это делать. Ключевые команды:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-di=grub
grub-mkconfig -o /boot/grub/grub.cfg 

Может быть, им не хватает аргумента (с ).

0
18.03.2021, 22:34

Теги

Похожие вопросы