BIOSの代わりにUEFIを使用してコンピュータにLinuxをインストールするのは今回が初めてです(Debianテスト)。私は最初にWindowsをインストールしてからDebianをインストールしましたが(いつものように)、システムはWindows 10で直接起動しました。
セキュアブートの無効化、複数のBIOS設定の試行(CSMサポートの有効化 - 無効化、UEFIブートのみ、UEFIおよびレガシーなど)、Windowsクイックブートの無効化、rEFIndのインストール試行、Windowsシェルでbcdeditを使用しようとするなど、さまざまなソリューションを試しました。システムを完全に再インストールしてみてください。
GRUB(インストールして動作中)から起動する唯一の方法は、rEFInd USBを使用することです。このように、efibootmgr EFI / debian / grubx64.efiコマンドを使用してGRUBをEFI(欠落)に追加しましたが、まだ機能しません。
私のコンピュータはThinkpad T470です。
答え1
すでに述べた試みに加えて、システムファームウェアに関連する2つの可能性があります。
\EFI\Microsoft\Boot\bootmgfw.efi
ファームウェアは実際にUEFIを正しく実装せず、さまざまなUEFIブート変数を無視している場合は無条件にロードします。この場合、Windows以外のシステムでデュアルブートを正しく実行するためにできることは実際にはありません。多くの古いGigabyteマザーボードはこの問題で悪名高いですが、LenovoはThinkpadでこれを行ったことがないと思います。- UEFI ブートローダ変数は読み取り専用ですが、その実装が UEFI 仕様と一致しません。私は少なくとも一部のTHinkpad(私が以前に所有していたL540)には、ユーザーがこれらの変数を「ロック」して変更できないようにするファームウェアがあることを知っています。これはおそらく起動時にマルウェアからシステムを保護することです。 Windowsがこのトリックを理解するまで、長い間起動順序を再構築するのを防ぐために
bcdedit
)。
実際、2つの状況を区別することは難しくありません。 2番目のケースが発生するかどうかを確認するには、次の手順を実行します。
- Linuxで起動します。
efibootmgr
仮想起動エントリを追加したり起動順序を変更したりするには、このコマンドを使用します。- システムを完全にシャットダウンします(再起動せずに実際にシステムをシャットダウンします)。
- もう一度Linuxで起動します。
手順2で行った変更がまだ存在する場合は、最初のシナリオが問題になる可能性があり、システムをWindowsとLinuxのデュアルブートにするために何も変更できない可能性があります。それ以外の場合は2番目のケースです。ファームウェア設定でこの動作を無効にするオプションがあります(私のL540には何があるのか覚えていませんが、[スタート]タブまたは[セキュリティ]タブにある必要があります)。
答え2
ideapad 330(Arch Linux)でも同じ問題が発生しました。私のシステムをダブルブート可能にする最も簡単で効果的な方法は、Windows efiファイルのパスを変更することです。 grubを復元したら、「Microsoft」ディレクトリの名前を変更し、/boot/grub/grub.cfgファイルでも同じように変更します。これでファームウェアはWindowsを見つけることができず、grubを起動する必要があります。唯一の問題は、カーネルをアップグレードしたい場合です。 grubは自動的に再構成されるため、アップグレードする前に元のディレクトリ名に戻す必要があります。それ以外の場合、os-proberはウィンドウを見つけることができません。