web-dev-qa-db-ja.com

rEFInd:EFI Stub Loader使用時の起動が非常に遅い

最近の再インストール後、rEFIndで非常に奇妙な問題が発生しています。/bootパーティションでGRUBとvmlinuzの両方を検出しますが、後者を使用するとextremely slowです。

具体的には、「191 MiB ext2ボリュームからvmlinuz-4.8.0-53-genericをブート」を選択した直後に、次のテキストを含む黒い画面が表示されます。

Starting vmlinuz-4.8.0-53-generic
Using load options 'root=UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 ro quiet splash nomodeset vt.handoff=7 initrd=\initrd.img-4.8.0-53-generic'

約1分待ってから(!)、Linuxは通常どおり(そしてかなり速く)起動します。

一方、GRUBを選択すると、GRUBブートメニューが表示され、デフォルトオプションを選択すると、すぐにLinuxが起動します。

この理由は何でしょうか?

私のセットアップには、/ boot/efiにマウントされたext2/bootパーティションとEFIパーティション(Windowsによって最初に作成された)を持つSSD(LinuxとWindowsがインストールされている場所)とHDD(私の/ homeがある場所)が含まれます。これが私の/ etc/fstabです。

UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 /               ext4    errors=remount-ro 0       1
UUID=3c804805-c41e-4b9d-af02-118b98858ae4 /boot           ext2    defaults        0       2
UUID=8EA5-5319  /boot/efi       vfat    umask=0077      0       1
UUID=bf088ec8-140d-4829-8de7-deb1d375b0e5 /home           ext4    defaults        0       2
UUID=E2A8CA84A8CA5727 /mnt/Windows    ntfs    defaults,umask=007,gid=46 0       0
UUID=3fb0b28d-87d8-4162-b469-1c157a4d00b0 none            swap    sw              0       0
1
fstanis

私はrEFIndのメンテナーです。

これは、ファイルシステムドライバーの問題です。私が完全に理解していない理由により、一部のコンピューターではrEFIndのファイルシステムドライバーの一部(特にext2_x64.efiドライバー)が遅い。数年前にドライバーコードに粗い先読みキャッシュを追加しましたが、これは大いに役立ちました-VirtualBoxでは、速度が約3分の読み込み時間から数十秒のIIRCに向上しました。ただし、一部のコンピューターでは、このキャッシュでも問題が引き続き発生します。

解決策は、別のファイルシステムに変更することです。 rEFIndのext4fsドライバーは、ext2/3fsドライバーよりもはるかに高速であり、BtrfsおよびReiserFSドライバーは依然として高速です。 (ext4fsドライバーはext2fsを読み取ることができますが、速度の改善はほとんどまたはまったくありません。実際のext4ファイルシステムを読み取って速度を改善する必要があります。)最悪のシナリオでは、FATを使用できます。特別なドライバーはありません(すべてのEFIに組み込まれています)。またはMacでは、HFS +を使用できます。 (rEFIndに付属するHFS +ドライバーもあります。したがって、原則として非Mac PCでもHFS +を使用できますが、そうすることはほとんどまたはまったく意味がありません。)しかし、標準のLinuxファイルシステムの外に移動することはお勧めできません。 Ubuntuは一部の(すべてではない)カーネルアップデートのシンボリックリンクに依存しているため、FATの選択は不適切です。また、HFS +は動作するはずですが、Ubuntuでは公式にサポートされていません。 ReiserFSでさえUbuntuインストーラーのオプションではないので、Ubuntuの場合はそれを避けます。 ext4fsとBtrfsが残ります。

切り替えは非常に簡単ですが、リスクがないわけではありません。間違えた場合、システムが起動不能になる可能性があります。基本的な手順は次のとおりです。

  1. 新しいファイルシステムドライバーをrEFInd driversまたはdrivers_x64サブディレクトリ(おそらく[/boot/efi/EFI/refind/driversまたは/boot/efi/EFI/refind/drivers_x64)にコピーします。その場所から古いext2_x64.efiファイルを削除すると、rEFIndのロード時間が1秒ほど短縮されます。
  2. ESP(/boot/efi)をアンマウントします。
  3. /bootパーティションをバックアップします。これには、Ziptarcp、またはその他のファイルレベルのツールを使用できます。
  4. /bootをアンマウントします。
  5. /bootパーティションに新しいファイルシステムを作成します。
  6. Sudo blkid /dev/sda{x}/dev/sda{x}/bootパーティションの識別子に変更)と入力して、新しいUUID値を確認します。
  7. /etc/fstabを編集して、/bootパーティションのUUID値とファイルシステムタイプを変更します。
  8. Sudo mount -aと入力して、新しい/bootパーティションをマウントします。 (/boot/efiマウントポイントがないと文句を言うでしょう。この警告は無視できます。)
  9. バックアップした/bootファイルを新しい/bootファイルシステムに復元します。

この時点で、再起動できるようになり、うまく機能します。ただし、間違いがあると、システムが起動できなくなる可能性があります。そのリスクを減らすために、少なくとも1つの動作中のカーネル、initrdファイル、およびrefind_linux.conf/bootから/boot/efiにコピーし、ESPからカーネルを起動する能力をテストできます。あなたが始める前に。これにより、問題が発生した場合のフォールバック方法が提供されます。問題がなければ、もちろん完了したらESPからカーネルを削除できます。

REFIndのドライバーの詳細については、このテーマに関するドキュメントを参照してください。

http://www.rodsbooks.com/refind/drivers.html

4
Rod Smith