Windows 10にDebianをインストールしましたが、GRUBは表示されません

Windows 10にDebianをインストールしましたが、GRUBは表示されません

Windows 10がインストールされたSSDと、元のNTFSで完全にパーティション化されたハードドライブがあります。しかし、Debianインストーラを使用してNTFSを縮小し、新しく確保されたスペースにDebianをインストールしました。

奇妙なことに、インストーラはWindowsを検出できなかったと言い、GRUBをMBRに書き込むかどうかを確認するように依頼しました。私は拒否し、ちょうどDebianがインストールされているハードドライブにGRUBをインストールするように依頼しました(WindowsがインストールされているSSDとは反対)。

BIOSでセキュアブートを無効にしましたが、その場合でも、コンピュータはGRUBを表示せずにWindowsから自動的に起動し、Windowsブートマネージャは私のBIOSがブートマネージャで検出する唯一のものです。私が確認したフォーラムでよく指摘したように、BIOSにはEFIファイルを信頼/選択するオプションはありません。

Debianで起動するためにShiftキーを押さない限り、Windowsで自動起動したいと思います(起動時にGRUBが表示された直後にこれを行う方法を知っていますが…そうではありません)。どうすればいいですか?

私のコンピュータはLenovo Legion Y520です。

ベストアンサー1

BIOSに文字通り「Windowsブートマネージャ」というブートオプションがある場合、これはWindowsにUEFIがインストールされていることを意味します。実際、Debian インストーラは MBR に GRUB を書き込む機能も提供します。

16ビットレガシーBIOSブートローダできないUEFIブートローダをチェーンロードします(最初に32ビットまたは64ビットモードに変換し、UEFI環境を設定せずに従来の16ビットモードの目的を優先的に無効にします)。

通常、オペレーティングシステムのインストーラを起動するために使用される起動モード(BIOSとUEFI)によって、インストールされている新しいオペレーティングシステムで使用するモードが自動的に決まります。 UEFIモードで動作するオペレーティングシステムのインストーラできる技術的には、UEFIベースのブートローダの代わりにBIOSベースのブートローダをインストールすることは可能ですが、従来のBIOS互換性を有効にするにはUEFIランタイムサービスインターフェイスを無効にする必要があり、起動設定をシステムNVRAMに書き込む必要があるため、その逆は一般的に不可能です(例:BIOS設定の「Windowsブートマネージャ」テキスト) - これはUEFIブートローダのインストールを完了するための要件です。

ブートメディアにこれら2つのオプションがあり、Debian 10インストールメディアに両方のオプションがある場合、ノートブックは現在のUEFIではなく従来のBIOSモードでブートすることを好むかもしれません。したがって、BIOS モードで Debian インストーラを起動すると、UEFI ブートローダのインストールが標準的な方法で完了しないことがあります。 BIOSモードでは、インストーラは、UEFIブートローダをインストールするためにUEFIブートローダがインストールされるディスクにESP(EFIシステムパーティション)が必要であるという事実も知らない。 HDDに作成することを選択しなかった場合、UEFIブートローダをインストールするための有効な場所はありません。

一部のUEFIファームウェアの実装にはバグがあるか、Windows中心の問題もあります。Debian Wikiでは、次のように言います。

残念ながら、前述のように、多くのUEFIファームウェアの実装には欠陥があります。ブートエントリとブート順序の仕様がどのように機能するかは非常に明確ですが、まだ間違ったシステムがたくさんあります。一部のシステムでは、新しいブートエントリを追加するための有効な要求を単に無視します。他の人はこれらの要求を受け入れますが、自分自身を「Windows」または同様のものとして説明しない限り、使用を拒否します。他の同様のエラーもたくさんありますが、これは多くのシステムベンダーが「Windowsで動作しますか?」これ以外のテストをほとんどまたはまったく実行しないことを示します。

幸いなことに、システムベンダーは時々ファームウェアのバグを修正します。したがって、最初のステップは、Lenovoがあなたのモデルのファームウェアをアップデートした(「BIOSアップデート」)ことを確認し、そうであればインストールすることです。これにより、デュアルブート構成を簡単にインストールできます。

2番目のステップでは、可能であれば、従来のBIOS互換機能を無効にする必要があります。システムがUEFIのみを使用できるようにする「BIOS」設定を見つけた場合は、その設定を選択するか、CSM(「互換性サポートモジュール」)を参照する設定がある場合は無効にします。これで、既存のWindowsインストールと同様に、DebianインストーラをUEFIモードで起動するのが簡単になりました。これにより、正しいタイプのブートローダがインストールされます。

3番目のステップでは、ESP(EFIシステムパーティション)が必要であるという要件に注意してください。デフォルトでは、Debianにインストールする必要がある小さなFAT32パーティション(Debian 10の場合は256Mで十分です)/boot/efi。 MBRパーティションを使用している場合は、特別なパーティションタイプコードが必要です0xef。 GPTパーティションを使用している場合は、パーティションパーティションオプションに「起動可能」と表示されます。 HDDにESPがある場合は、HDDを別のシステムに移動し、後で必要に応じて既存のDebianインストールを起動できます。

HDDにDebian用に別々のESPを作成するのではなく、パーティションを設定するときにSSDからWindows ESPを選択し、いいえフォーマットしますが、既存のファイルシステムを使用してマウントしてください/boot/efi。 ESPの標準化されたディレクトリ構造は、同じESP上の複数のオペレーティングシステムのブートローダを処理するように設計されています。このオプションを選択すると、Debian 10 の UEFI ブートローダが標準の Windows 10 ESP に空き領域を置き、適切にフィットする必要があります。ただし、これを行うには、「詳細/手動」パーティショニングオプションに移動する必要があります。

それでも問題が発生する場合は、この記事をお読みください。UEFI ブートローダの問題に関する Roderick W. Smith のテキスト。これはrEFIndブートローダ用に書かれていますが、説明されているもののほとんどはUEFIバージョンのGRUBにも当てはまります。


両方のオペレーティングシステムがUEFIモードで起動した後:

SSDがNVMeタイプの場合、Linuxでは/dev/nvme0n1(パーティションは、N =パーティション番号)として表示されることがあります。/dev/nvme0n1pNLinux が SSD を認識していることを確認し、root としてupdate-grub実行します。

Windowsが検出されなかったと表示された場合は、blkidrootとして実行してください。すべてのファイルシステムとパーティションのUUIDを報告する必要があります。調べるファイルシステムSSD上のWindows ESPのUUID。 Windows ESPが標準のFAT32ファイルシステムタイプを使用している場合は、それをフォーマットで一覧表示する必要がありますUUID="xxxx-xxxx"(実際にはFAT32ファイルシステムのシリアル番号です)。

UUIDがわかったら、最後に次の行を追加してWindows用のカスタムGRUBメニュー項目を設定できます/etc/grub.d/40_custom

menuentry 'Whatever you want the Windows 10 boot menu entry to say' {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root xxxx-xxxx
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

これはWindows用のデフォルトのUEFIチェーンローダーエントリでなければなりません。xxxx-xxxx実際のWindows ESPファイルシステムUUIDに置き換えてください。ファイルを編集してupdate-grubルートとして実行します。その後、デフォルトの起動オプションをに設定すると、debian起動メニューが表示されます。

LenovoはUEFI仕様の要件を超えて、UEFIファームウェアでNTFSファイルシステムサポートを実装し、ESPでNTFSを使用してWindowsインストールを提供することを選択することもできます。この場合を置き換えると、insmod fatファイルinsmod ntfsシステムUUIDの形式が異なります。blkid出力は次のとおりですUUID="A268B58668B559AD"

注:efibootmgrコマンドを確認してください。 BIOS設定メニューに入らなくても、Linuxでファームウェア起動設定を操作するために使用できます。 Windowsでもbcdedit同じことができますが、ユーザーインターフェイスがより厄介だと思います。

おすすめ記事