2つのGrubブートローダまたはGrubメニュー。どうすれば解決できますか?

2つのGrubブートローダまたはGrubメニュー。どうすれば解決できますか?

ArchとUbuntu Linuxをダブルブートしようとしていますが、なんとか2つのgrubメニューで終わるようです。 grubプロンプトでexitと入力すると、2番目のメニューが表示されます。もう1つのことは、最初に表示されるgrubメニューにArch Linux用のブートエントリがありますが、私のシステムには存在しない/ dev / sdeでuuidを見つけようとしていることです。 Ubuntuエントリは正常に起動します。

理由はよくわかりませんが、私はgrubがLinuxの最も混乱した側面の1つだと思います。

Archlinuxをインストールして実行しました。

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux --recheck

Th3のフラグを追加して実行します。grub-mkconfig -o /boot/grub/grub.cfg

この問題をどのように解決し、なぜ奇妙な設定が発生するのですか?

その他の関連情報はすべて以下にあると考えられます。情報がない場合はお知らせください。

ツリーの出力:

/boot/efi/
|-- EFI
|   |-- ArchLinux
|   |   `-- grubx64.efi
|   |-- BOOT
|   |   |-- BOOTX64.EFI
|   |   |-- fbx64.efi
|   |   `-- mmx64.efi
|   `-- ubuntu
|       |-- BOOTX64.CSV
|       |-- grub.cfg
|       |-- grubx64.efi
|       |-- mmx64.efi
|       `-- shimx64.efi
`-- System\ Volume\ Information
    |-- AadRecoveryPasswordDelete
    `-- ClientRecoveryPasswordRotation

私が追加したブートメディアレイアウト[Ubuntu**]。

lsblk /dev/nvme0n1
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 476.9G  0 disk 
|-nvme0n1p1 259:1    0   487M  0 part /boot/efi
|-nvme0n1p2 259:2    0 274.4G  0 part [Ubuntu**]
|-nvme0n1p3 259:3    0 122.1G  0 part [SWAP]
`-nvme0n1p4 259:4    0    80G  0 part /

起動時に表示される最初のグラップメニュー 最初のメニュー

Arch Linuxエントリが機能しない 間違ったアーチの入り口

最初のグラブインスタンスの終了 最初のメニューを終了

2番目のグラップメニューインスタンス? ! セカンドグラップメニュー

答え1

これは、ほとんどのefi BIOSがefistubを使用してLinuxカーネルを起動できる場合は、grubを必要としないためです。 EfistubはLinuxカーネルを直接起動します。

https://wiki.archlinux.org/title/EFISTUB

grubを引き続き使用することもできますが、見つかったように、各grubは、両方の grub のカーネルパスと設定を正しく見つけることができるように、追加のデバッグなしで特定のオペレーティングシステム(UbuntuまたはArch)を起動することにのみ熟練しています。 。

答え2

最初のGRUBメニューはUbuntuのGRUB(GRUBバージョン2.04)で提供されています。shimx64.efiUbuntuのESPディレクトリにインストールされているため、Ubuntuはまったくgrubx64.efi別のバージョンにすることができます。セキュアブートはGRUBのモジュールのロードを許可しないためです。なぜなら、GRUBモジュールはセキュアブートファームウェアが理解するPE32+ではなくELFバイナリフォーマットを使用するからです。署名確認で完了です。)

おそらくあなたのArchインストールはGRUB 2.04が認識しないファイルシステムタイプを使用するかもしれませんが、Archの独自のGRUB(バージョン2.06)はそれを読むことができます。この場合、ArchのGRUBをデフォルトのブートエントリとして使用し、grub.cfgUbuntuのGRUBメニューを表示するためにUbuntuのブートエントリを読み取るカスタムブートエントリを作成するのが最善です。その後、対応するメニュー項目を使用してUbuntuを起動できますgrub.cfg。 Ubuntu GRUBの残りの部分が実際にはまったく使用されていない場合でも、Ubuntuがカーネルアップデートを受信するたびに通常どおりに更新されます。

実行efibootmgr -v:Ubuntuの開始項目とArchの他の開始項目が表示されます。これにより、efibootmgr -oArchのGRUBが最初に試行されるように起動順序を並べ替えることができます。出力BootOrderの既存の設定を見て、efibootmgr -v数字を希望の順序に移動します。

(奇妙なUEFIファームウェア実装がある場合は、リストされているBootOrder起動オプションの総数を変更しないことをお勧めします。)efibootmgr

関連情報