
Linux 初心者です。最近 Ubuntu を再インストールしたのですが、起動するたびに grub シェルに突入してしまいます。あちこち探しましたが、多くの時間を無駄にし、どうやっても問題を追跡できません。
パーティションテーブルは次のように配置されます: /dev/sda1 - 実際のOS /dev/sda2 - EFI /dev/sda3 - スワップ
実行することによって:
set root=(hd0,gpt1)
linux /vmlinuz_something root=/dev/sda1 ro
initrd /initrd.img
boot
OS を起動して update-grub を実行します。カーネルが正常に見つかり、エントリが更新されたように見えますが、それでも grub が起動します。そこで、この問題をさらに調べたところ、起動試行が失敗した後の GRUB の起動処理方法に関係している可能性があることを示唆する事例がいくつか見つかりました。
これらから私が理解できたことをもとに、/etc/default/grub に追加してみることにしました。
GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT
もう一度 update-grub を実行しましたが、問題は解決しませんでした。推測で他の値も試してみましたが、予想どおりうまくいきませんでした。この使い古された話題を持ち出して申し訳ありませんが、私が見つけた解決策はどれもうまくいきませんでした。この問題を解決する方法について何かアイデアはありますか?
答え1
私の推測では、GRUB のインストールが 2 つあるようです。1 つはあるディストリビューション用、もう 1 つは別のディストリビューション用、または 1 つは BIOS モード、もう 1 つは EFI モードです。どちらの場合でも、1 つの GRUB の設定ファイルを更新しているときに別の GRUB が実行されると、現在表示されているような症状が発生します。
EFIモードのGRUBが2つインストールされている場合は、sudo efibootmgr -v
出力やファイル内にその証拠が見られるはずです。EFI システム パーティション (ESP)、これは通常/boot/efi
Ubuntu でマウントされます。次のコマンドを試してください。
sudo efibootmgr -v
sudo find /boot/efi -iname "*.efi"
最初のコマンドは、ファームウェアに登録されているブートローダーとそのパスを表示します。shim.efi
、shimx64.efi
、grub.efi
、または への複数の参照grubx64.efi
(つまり、このセットから 1 つ以上) が表示される場合、それが問題である可能性があります。 2 番目のコマンドは、ESP 上のすべてのブート プログラムを検索します ( にマウントされていると想定/boot/efi
)。この場合も、複数のブート プログラムが問題になる可能性がありますが、この場合は、1 つの Shim が 1 つの GRUB と共存できます。問題になる可能性があるのは、複数の GRUB バイナリだけです。
BIOSモードとEFIモードのGRUBが1つずつある場合、検出が難しくなる場合があります。最も簡単な方法は、ブート情報スクリプト、これは BIOS モードと EFI モードの両方のブートローダーを識別しますが、解釈するにはある程度の経験が必要です。
ブート情報スクリプトが生成したファイルRESULTS.txt
と、私が指摘した2つのコマンドの出力を、ペーストビンサイト、私たちが解釈できるように、URL をここに投稿してください。
もう 1 つ: BIOS モードと EFI モードの両方の GRUB があり、BIOS モードの GRUB に障害がある場合は、ファームウェアにアクセスして互換性サポート モジュール (CSM) (別名「レガシー ブート サポート」など) を無効にすることで回避できます。このアクションで問題が解決する可能性は 3 分の 1 程度ですが、CSM を有効にする手順を覚えている場合は特に試してみる価値があります。このアクションで問題が解決しない場合でも、原因が理解されれば、解決に役立つ可能性があります。