Archlinux를 사용하여 여러 운영 체제를 설치할 때 올바른 grub 명령을 작성하는 방법은 무엇입니까?

Archlinux를 사용하여 여러 운영 체제를 설치할 때 올바른 grub 명령을 작성하는 방법은 무엇입니까?

내 컴퓨터에는 두 개의 디스크가 있고 Windows와 Debian은 이미 /dev/sdb에 설치되어 있고 /dev/sda는 Archlinux용으로 남아 있습니다. Archlinux 설치 중에 내 모든 스크립트를 표시합니다.

mount  /dev/sda1  /mnt
swapon /dev/sda2
pacstrap /mnt base linux linux-firmware vim nano
getfstab -U /mnt >>  /mnt/etc/fstab
arch-chroot /mnt
mkdir /boot/efi
mount  /dev/sda3  /boot/efi   
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-di=grub
grub-mkconfig -o /boot/grub/grub.cfg
passwd

설치 후 컴퓨터를 다시 시작했습니다. grub gui에는 Windows 및 debian용 부팅 메뉴가 포함되어 있지 않습니다. grub gui에서 archlinux만 입력할 수 있습니다. 목적에 맞는 올바른 grub 명령을 어떻게 작성할 수 있습니까?

답변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
}

저는 이 솔루션이 만족스럽지 않습니다. 데비안 설치 중 마지막 단계에서 설치된 모든 운영 체제를 감지하고 모두 grub.cfg에 기록합니다. 어쩌면 Archlinux도 같은 작업을 수행할 수 있습니다. 주요 명령은 다음과 같습니다.

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

어쩌면 그들은 몇 가지 주장이 부족할 수도 있습니다.

관련 정보