私は、Bitlocker とセキュア ブートを使用する Lenovo Yoga C930 で、Grub と UEFI を介して Manjaro と Windows をデュアル ブートしています。BIOS でセキュア ブートを無効にすると、Manjaro を正常に起動できます。また、BIOS でセキュア ブートを再度有効にすると、Windows を起動することもできます。理由は不明で、一見ランダムですが、Linux ブートローダーが失われます。削除されているのか、突然認識されなくなったのか、それとも何か他の原因があるのかはわかりませんが、ブートできず、BIOS のオプションとして表示されません。
Wiki の指示に従って Grub を再インストールすることはできますが、最終的には消えてしまいます。何が起こっているのでしょうか。また、これを防ぐにはどうすればよいのでしょうか。
答え1
Windows はシステムを「がんのない状態」に保っていると思います。
[編集] 使用するブート方法 (レガシーと UEFI) に応じて、2 つのソリューションがあります。
遺産:
bcd
Windows または Linux を起動するためのブート マネージャーとして使用できます。
grubがインストールされており/dev/sda
、/dev/sda1
Windows 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.cfg
uuid を使用してルート パーティションを検索していることを確認します (デフォルトでは、次のように検索されます)。検索され 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
を使用して新しいブート エントリを手動で作成し、それに高い優先度を設定する必要があることがわかりました。ここまでは順調です。