web-dev-qa-db-ja.com

Windows 10と一緒にDebianをインストールしたが、GRUBは表示されない

Windows 10がインストールされているSSDが1つあり、最初にハードドライブがNTFSで完全にパーティション分割されていますが、Debianインストーラーを使用してNTFSを縮小し、新しく解放されたスペースにDebianをインストールしました。

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

BIOSでセキュアブートを無効にしましたが、コンピューターがWindowsで自動的に起動し、GRUBは表示されません。また、ブートマネージャーでBIOSによって検出されるのはWindowsブートマネージャーだけです。チェックしたフォーラムでよく指摘されているように、BIOSにはEFIファイルを信頼/選択するオプションがありません。

Debianで起動するためにSHIFTキーを押し続けない限り、Windowsで自動的に起動したいと思います(GRUBが起動時に表示されるとすぐにそれを行う方法を知っています...表示されません)。私は何をすべきか?

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

1
Mister Mystère

BIOSに文字通り「Windowsブートマネージャー」というブートオプションがある場合、それはWindowsがUEFIスタイルでインストールされていることをかなり強く示しています。DebianインストーラーがGRUBにMBRは、DebianインストーラーがレガシーBIOSスタイルで起動されたことを示しています。

16ビットのレガシーBIOSブートローダーcannotUEFIブートローダーをチェーンロードします(最初に32ビットまたは64ビットモードに移行してUEFI環境をセットアップする必要がありません。そもそもレガシー16ビットモード)。

通常、OSインストーラーの起動に使用する起動モード(BIOSとUEFI)は、インストールする新しいOSが使用するモードを自動的に決定します。 UEFIモードで実行しているOSインストーラーcouldUEFIベースのブートローダーの代わりにBIOSベースのブートローダーを技術的にインストールしますが、レガシーBIOS互換性をアクティブ化する必要があるため、通常はその逆はできませんUEFIランタイムサービスインターフェイスを無効にします。これは、ブート設定をシステムNVRAMに書き込むために必要です(たとえば、BIOS設定の「Windowsブートマネージャー」テキスト)。これは、UEFIブートローダーのインストールを完了するための要件です。

ブートメディアに両方のオプションがあり、Debian 10インストールメディアに両方のオプションがある場合、ラップトップは現在UEFIよりもレガシーBIOSモードでのブートを好むようです。そのため、BIOSモードでDebianインストーラを起動し、標準的な方法でUEFIブートローダーのインストールを完了できなかった可能性があります。 BIOSモードでは、インストーラーは、UEFIブートローダーをインストールするには、UEFIブートローダーをインストールするディスクにESP(EFIシステムパーティション)が必要であることも通知しません。 HDDに作成することを選択しなかった場合、UEFIブートローダーをインストールするための有効な場所がありませんでした。

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

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

幸い、システムベンダーはファームウェアのバグを修正することがあります。そのため、最初のステップとして、Lenovoがモデルで使用可能な更新済みファームウェア(「BIOS更新」)を入手できるかどうかを確認し、存在する場合はインストールします。これにより、デュアルブート構成のインストールが簡単になる場合があります。

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

3番目のステップとして、ESP(EFIシステムパーティション)の要件に注意してください。これは本質的に小さなFAT32パーティション(Debian 10だけでも256Mで十分です)で、Debianでは/boot/efiにマウントする必要があります。 MBRパーティショニングを使用する場合、特別なパーティションタイプコード0xefが必要です。 GPTパーティショニングを使用している場合、パーティションを「起動可能」または「ESP」としてマークするパーティショナーオプションは正しいことを行うはずです。 HDDにESPがあると、HDDを別のシステムに移動して、後で必要に応じて既存のDebianインストールを起動することができます。

DebianのHDDに別のESPを作成する代わりに、パーティションを設定するときにSSDでWindows ESPを選択し、notを選択します。フォーマットしますが、既存のファイルシステムで/boot/efiとしてマウントします。 ESP上の標準化されたディレクトリ構造は、同じESP上の複数のOSのブートローダーを処理するように設計されています。このオプションを選択した場合、Debian 10のUEFIブートローダーは、余裕のある標準のWindows 10 ESPにうまく収まるはずです。ただし、これを行うには、「高度な/手動の」パーティション分割オプションを選択する必要がある場合があります。

それでも問題が解決しない場合は、UEFIブートローダーの課題に関する Roderick W. Smithのテキストを読むことをお勧めします。 rEFIndブートローダー用に書かれていますが、その中で説明されている多くのことがGRUBのUEFIバージョンにも適用できます。


両方のOSをUEFIスタイルで起動したら、次のようにします。

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

Windowsが検出されたと表示されない場合は、blkidをrootとして実行します。すべてのファイルシステムとパーティションのUUIDが報告されます。 SSDでWindowsのfilesystemWindows ESPのUUIDを見つけます。 Windows ESPが標準のFAT32ファイルシステムタイプを使用している場合は、UUID="xxxx-xxxx"(実際にはFAT32ファイルシステムのシリアル番号です)の形式でリストする必要があります。

UUIDがわかったら、/etc/grub.d/40_customの末尾に次の行を追加することで、WindowsのカスタムGRUBメニューエントリを構成できます。

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 fatinsmod ntfsに置き換えます。ファイルシステムのUUIDは別の形式になります。blkidでは、出力はUUID="A268B58668B559AD"のようになります。

注:efibootmgrコマンドを確認してください。これを使用して、BIOS設定メニューに入らずに、Linux内でファームウェアのブート設定を操作できます。 Windowsでは、bcdeditでも同じことができますが、私のユーザーインターフェイスはより不自然です。

1
telcoM

別のディスク上にあるため、ウィンドウは検出されませんでした。 OSを別のディスクにインストールする場合、それぞれが異なるブートセクターを持ち、競合することはありません。これは、それらの1つが破損しても他に影響を与えないためです。

BIOS設定に移動し、ブートデバイスをSSDからハードドライブに変更する必要があります。

1
SMMousaviSP