web-dev-qa-db-ja.com

USBの接続/取り外し時にUEFIBIOSの起動順序の一貫性を取得していますか?

USBを使用して、どのOSをロードするかを決定しようとしています。つまり、USBが接続されている場合は、Windowsが読み込まれ、接続されていない場合は、Ubuntuが読み込まれます。それぞれのメディアからの起動は正常に機能しますが、BIOSの起動順序の設定に問題があります。 USBが接続されている場合、起動順序を次のように設定できます。

  1. SB(grub)
  2. SSD(グラブ)
  3. buntuを直接起動します
  4. Windowsを直接起動します

uSBスティックが挿入されている限り、その順序は一貫しています。ただし、次の手順を実行すると、次のようになります。

  1. [コンピューターの電源を切った状態] USBを取り外します。
  2. コンピューターの電源を入れ、UbuntuまたはWindowsで起動します。
  3. コンピュータをシャットダウンします。
  4. USBを挿入します。
  5. コンピューターの電源を入れます。

起動順序がに変わります

  1. SSD(グラブ)
  2. buntuを直接起動します
  3. Windowsを直接起動します
  4. SB(grub)

BIOSが起動順序を変更するのを回避する方法、またはどのUSB位置を調べるかを明示的に指示する方法はありますか?

私のマザーボードはASUSZ97-Aで、ASUS UEFIBIOSユーティリティバージョン2.16.1240を搭載しています。

スーパーユーザーユーザーを助けてください。あなたが私の唯一の希望です。

3
gris_martin

残念ながら、EFIがこの種のことを処理する方法にはnoの標準化がありますが、私の経験では、あなたが説明する動作はかなり一般的です。問題は、EFIがBIOSよりもブートデバイスの識別に関してはるかに「賢い」ことであり、多くのEFIは、無効なブートエントリがそのように識別されたときにそれらを削除します。したがって、USBドライブを取り外してコンピューターを再起動すると、USBドライブの無効なブートエントリがあることがわかり、ブートリストから削除されます。私はこの種の問題に対するEFI内の解決策を知りません。

ただし、回避策がないというわけではありません。具体的には、内部ディスクにEFIブートマネージャーをインストールして、必要な処理を実行できます。つまり、USBフラッシュドライブが接続されていないときにWindowsを起動し、USBドライブが接続されているときにUbuntuを起動します。 d次に、このブートマネージャをデフォルトのブートプログラムとして設定したままにします。

残念ながら、AFAIKUbuntuのGRUBはこのように構成できないため、他の場所を探す必要があります。従うルールは非常に単純なので、本当に単純なプログラムですcouldはその仕事をするために書かれるかもしれませんが、私knowができることはたくさんありますより複雑:私自身の rEFIndブートマネージャー。 次のようにインストールして構成することをお勧めします。

  1. Ubuntuを起動します。
  2. /boot/efiにマウントされているもの(ある場合)を確認してください。 (df -hと入力すると、現在マウントされているパーティションが表示されます。)
  3. /boot/efiがUSBドライブのパーティションに対応している場合は、それをアンマウントし、ハードディスクから EFIシステムパーティション(ESP) をマウントします。 (リンクに記載されているように、ESPは特定のタイプコードのFATパーティションです。gdiskparted、で追跡する必要がある場合があります。またはGParted。)
  4. rEFIndダウンロードページからrEFInd Debianパッケージをインストールします。PPAをインストールしないでください。 Debianパッケージをインストールします(または.Zipファイルを使用してrefind-installを手動で実行します)。
  5. /boot/efi/EFI/refind/refind.confを編集し、次の変更を加えます:
    • オプションでtimeout -1を設定します。これが設定されている場合、rEFIndの起動時にキーを押し続けない限り、rEFIndメニューは表示されません。インストールをテストするまで、これの設定を保留することをお勧めします。
    • default_selection "vmlinuz,Microsoft"を設定します。これにより、rEFIndはLinuxカーネルが見つかった場合はLinuxを起動し、Linuxカーネルが存在しない場合はWindowsを起動します。つまり、LinuxUSBドライブが接続されていない場合です。 vmlinuzgrubに置き換えることも機能するはずであり、vmlinuzが機能しない場合は試す価値があります。
  6. システムを再起動してテストします。

timeout値を設定せずに試してみると、rEFIndメニューが表示され、USBドライブが接続されていない場合はWindowsオプション(唯一のオプションである可能性があります)が強調表示されます。ただし、USBドライブが接続されている場合は、デフォルトでUbuntuオプションが強調表示されます。これが機能する場合は、timeout -1を設定すると、目的のOSが直接起動します。

USBドライブが接続された状態でrEFIndがUbuntuのインストールを検出しない場合は、Escキーを押してみてください。その後、Ubuntuオプションが表示された場合は、scan_delay 1(またはおそらくより高い値)を設定してみてください。

このようにrEFIndを使用する場合の最大の問題は、起動時やOSのスキャン時などに遅延が発生することです。これは、USBドライブが接続されていない場合はわずか1〜2秒、USBドライブが接続されている場合はさらに2〜3秒である必要があります。この特定のタスクを処理するためのより専門的なブートマネージャーは、遅れは少ないですが、そのようなプログラムは知りません。

3
Rod Smith