ブートローダーが消えないようにするにはどうすればよいですか?

ブートローダーが消えないようにするにはどうすればよいですか?

私は、Bitlocker とセキュア ブートを使用する Lenovo Yoga C930 で、Grub と UEFI を介して Manjaro と Windows をデュアル ブートしています。BIOS でセキュア ブートを無効にすると、Manjaro を正常に起動できます。また、BIOS でセキュア ブートを再度有効にすると、Windows を起動することもできます。理由は不明で、一見ランダムですが、Linux ブートローダーが失われます。削除されているのか、突然認識されなくなったのか、それとも何か他の原因があるのか​​はわかりませんが、ブートできず、BIOS のオプションとして表示されません。

Wiki の指示に従って Grub を再インストールすることはできますが、最終的には消えてしまいます。何が起こっているのでしょうか。また、これを防ぐにはどうすればよいのでしょうか。

答え1

Windows はシステムを「がんのない状態」に保っていると思います。

[編集] 使用するブート方法 (レガシーと UEFI) に応じて、2 つのソリューションがあります。

遺産:

bcdWindows または Linux を起動するためのブート マネージャーとして使用できます。

grubがインストールされており/dev/sda/dev/sda1Windows EFIパーティションであると仮定します。

Linuxの場合:

mount /dev/sda1 /mnt
dd if=/dev/sda of=/mnt/linux.bin bs=512 count=1

Windowsの場合:

bcdedit /create /d "Linux" /application bootsector

BCDEdit は、このエントリの英数字の識別子を返します。残りの手順では、これを {ID} と呼びます。{ID} を実際に返された識別子に置き換える必要があります。{ID} の例は {d7294d4e-9837-11de-99ac-f3f3a79e3e93} です。次に、linux.bin ファイルのコピーをホストするパーティションを指定します。

bcdedit /set {ID} device partition=c:

linux.bin ファイルへのパス:

bcdedit /set {ID}  path \linux.bin

起動時に表示されるメニューへのエントリ:

bcdedit /displayorder {ID} /addlast

最後に、メニューの選択肢が表示される時間を指定します。

bcdedit /timeout 30

これで完了です。再起動すると、Windows または Linux の起動を選択できるメニューが表示されます。Linux を選択すると、ブートローダー メニューが表示され、Linux の起動を選択できます。

https://www.iceflatline.com/2009/09/how-to-dual-boot-windows-7-and-linux-using-bcdedit/

[編集] UEFI

Windows システムには、起動元となる EFI パーティションがあります。Linux では、それを にマウントします/boot。次に、 がgrub.cfguuid を使用してルート パーティションを検索していることを確認します (デフォルトでは、次のように検索されます)。検索され linux /vmlinuz-4.4.0-1-default root=UUID=6159e15d-f224-499d-88e0-437b5538f0f1 quiet splash=silentていない場合は、 を使用してblkidルート パーティションの UUID をリストし、 で grub 構成を調整します/etc/grub.d

grubの設定を書き出すと/boot/boot/efi/EFI/manjaro/grub.cfg

grub2-mkconfig -o /boot/boot/efi/EFI/manjaro/grub.cfg

再起動すれば、問題なく動作するはずです。

答え2

2年ほど前に、Trisquel LinuxとWindows 8のデュアルブートで同様の問題が発生しました。質問と回答を投稿しました。ここSuper User で (当時、何らかの理由で、デュアルブートに関する質問は U&L ではトピック外だと言われました)。

これらの投稿を見るとわかるように、問題は Windows が GRUB を削除または上書きしていたことではなく、UEFI 設定を定期的に変更して、GRUB ではなく Windows ブートローダーを使用するように指示していたことです。解決策は、Windows で bcdedit を使用して、デフォルトのブートローダー パスを GRUB に設定することでした。これで問題は解決しました。

同じ解決策があなたにも有効かどうかはわかりませんが、試してみる価値はあるでしょうか?

(また、Windows を起動するためにセキュア ブートを有効にする必要はないと思います。私はセキュア ブートを無効にした状態で Windows 8 を起動しても問題ありません。)

答え3

実は、私はこれを自分で解決しました。efibootmgrを使用して新しいブート エントリを手動で作成し、それに高い優先度を設定する必要があることがわかりました。ここまでは順調です。

関連情報