マイコンピュータには2つのディスクがあり、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
}
私はこの解決策は満足していません。 Debian のインストール中に、最後のステップでインストールされたすべてのオペレーティングシステムを検出し、すべて grub.cfg に記録します。たぶんArchlinuxも同じことをすることができます。主なコマンドは次のとおりです。
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-di=grub
grub-mkconfig -o /boot/grub/grub.cfg
たぶん彼らはいくつかの主張を欠いているかもしれません。