GRUBはすべてのオペレーティングシステムを表示しません

GRUBはすべてのオペレーティングシステムを表示しません

私は現在Archを使用しており、Gentooは別のパーティションにあります。grub-mkconfig -o /boot/grub/grub.cfg(Arch から) は次を返します。

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux-zen
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux-zen.img
Found fallback initrd image(s) in /boot: initramfs-linux-zen-fallback.img
Found Windows Boot Manager on /dev/nvme0n1p1@/efi/Microsoft/Boot/bootmgfw.efi
Found Gentoo/Linux on /dev/nvme0n1p9
done

ただし、起動メニューにはGentooのエントリはありませんが、Windowsにはエントリがあります。 Gentooエントリもありません/boot/grub/grub.cfg。ここで何か抜けましたか?

ありがとうございます! !

答え1

を実行するときは、Gentooパーティションが実際にマウントされていることを確認する必要がありますgrub-mkconfig。次のツールの結果はこれを決定するのに役立ちます。

  • lsblk
  • mount
  • df

詳しく調べる必要がある場合は、別のターミナルウィンドウでrootとしてos-proberを実行している間に、1つのターミナルウィンドウでログを追跡してください。

ウィンドウ1:sudo journalctl -fn0

ウィンドウ2:sudo os-prober

このgrub-mkconfigコマンドは、os-proberユーティリティを使用して別のオペレーティングシステムを見つけて、os-proberをArchのログに記録し、パーティションが実際にマウントされているためにgentooが見つからない理由を正確に特定するために必要なすべての情報を提供します。

答え2

Gentooパーティションがインストールされているドライブ以外のドライブにアーチをインストールすると、grub-install /dev/sdX(Xはドライブ文字)だけがGentooを見つけることができません。

読むこれ;デフォルトでは、複数のドライブをグラブマウントする必要があります。

答え3

に基づいてhttp://codepad.org/zFCNfwoKコメントに記載されている結果は...

os-proberGentooは開いていることが確認されましたが、/dev/nvme0n1p9次のステップはですlinux-boot-prober。にあるテストスクリプトを実行します/usr/lib/linux-boot-probes

ファイルシステムの種類がGRUBで読み取れると仮定すると、Gentooカーネルとinitramfsがファイルシステムのルートまたはサブディレクトリに/usr/lib/linux-boot-probes/mounted/90fallbackある場合はそれを検出できるはずです。ただし、Gentooはいくつかの可能な方法でUEFIにインストールすることができ、その一部はカーネル+ initramfsをEFIシステムパーティションに配置します。boot/dev/nvme0n1p9/dev/nvme0n1p1

少なくとも私のDebian 10では、os-proberより多くのUEFIインストールケースに対処するためにアップデートが必要になると思います。

実行してくださいefibootmgr -v。 Gentooは独自にNVRAMブートエントリを作成しますか? Gentooカーネル(またはカーネルのEFIスタブに依存せずにカーネルを使用している場合はブートローダ)の場所を見つけるために使用できます。

os-prober(1つのアイデア:誰かが登録されているすべてのNVRAMブートローダを段階的に実行し、それを使用して指すブートファイルがLinuxカーネルに似ていることを確認するUEFIシステムで実行されるスクリプトを書くことができますfile。別のブートローダの代わりにカーネルのEFIスタブを使用する必要があります。

関連情報