web-dev-qa-db-ja.com

UEFIでISOLINUXを使用する適切な方法は何ですか?

64ビットバージョンの Minimal Linux Live にUEFIサポートを追加しようとしてかなり長い間、残念ながらあまり成功していませんでした。下の画像からわかるように、UEFI経由で起動しようとするたびに重大なエラーが発生します。

Minimal Linux Live - UEFI

これは私がこの時点に到達するためにしたことです:

  1. ダウンロードしました syslinux-6.0.
  2. 私は here の指示に従い、efi64/efi/syslinux.efi\EFI\BOOT\BOOTX64.EFIにコピーしました。
  3. また、efi64/com32/elflink/ldlinux/ldlinux.e64\EFI\BOOT\LDLINUX.E64にコピーしました。
  4. VirtualBox (バージョン5.0.20)で仮想マシンを作成し、UEFIを有効にしました。
  5. 新しいISOイメージ(すべてのISOLINUX構成ファイルはルートフォルダーにあります。スクリーンショットを参照してください)を生成し、それを仮想マシンのプライマリブート可能メディアとして配置しました。
  6. ブート後、スクリーンショットに表示されるエラーがすぐに表示されました。
  7. この時点で、ブートプロセスを「中断」してUEFIシェルにフォールバックするために、\EFI\BOOT\BOOTX64.EFI\EFI\BOOT\BOOTX641.EFIに名前変更する必要がありました。
  8. UEFIシェルでコマンドeditを使用してから、\EFI\BOOTフォルダーに移動しました。
  9. BOOTX641.EFIを手動で呼び出したところ、同じエラーが表示されました。

したがって、EFIスタブは実行されていると結論付けることができますが、実行プロセス中に何かが中断し、現時点では何が問題なのかわかりません。

UEFIをサポートしていることがわかっている System Rescue CD のISOイメージ構造を確認したところ、次のことがわかりました。

  1. EFI構造には、\efi\boot\bootx64.efiという1つのファイルしか含まれていません。
  2. \efi\boot\bootx64.efiのサイズは724KBですが、Syslinux 6.03の対応するファイルefi64/efi/syslinux.efiは〜200KBであるため、これは完全に同じファイルではありません。
  3. 「System Rescue CD」から\efi\boot\bootx64.efiをコピーして「Minimal Linux Live」のEFI構造で使用すると、UEFIブートプロセスは、GRUB = 2シェル。

「システムレスキューCD」のファイル\efi\boot\bootx64.efiにGRUB 2のサポートが組み込まれているため、カスタムビルドのソリューションである必要があることがわかりました。

だから、ほんの少しの問題です-私はVanilla Syslinuxパッケージを使用していて、簡単なISOイメージを起動するUEFI互換の構成を作成したいと思います。公式の指示に従ってもうまくいかないようです。

すべての提案は高く評価されています!ありがとうございました!


注1:ISOイメージはBIOSモードで正常に起動します。そこに問題はありません。

注2:他のオペレーティングシステム(UbuntuやLinux Mintなど)はUEFIモードで正常に起動するため、これはVirtualBoxのバグではない可能性があります。


EDIT 1 Jan-2017):

答えがないまま非常に長い間、私はまったく異なる方法で私のソリューションを実装しました:

このようにして、ブート機能の一部を失います。 vga=askSyslinuxでは正常に機能しますが、この特定のブートオプションには適切なLinuxブートローダーが必要なため、UEFIモードでは機能しません。

私はうまく機能する解決策を持っていますが、問題はまだ開いています。

編集2-(2017年12月):

これは、前の更新に追加されたものです。 startup.nshを使用したソリューションは、UEFIシステムに「UEFIシェル」(UEFI仕様によれば、ファームウェアがシェルを提供する場合と提供しない場合がある)の場合にのみ、このシェルがサポートレベル1以上の場合にのみ機能します。また、ISOイメージでESPを提供する適切な方法は 'El Torito'ブートイメージを介するため、起動スクリプトが実行される保証はありません。ESP ISOイメージ上で直接互換性のある構造は、特定のファームウェアでは正常に動作するように見えますが、これは普遍的なソリューションではありません。

質問は未解決のままですが、その間に---(systemd-boot を統合することができ、この問題を優先度の高いものとは考えていません。

5
Ivan Davidov

System Rescue CDはsyslinuxではなくGRUBを使用しているようです。私のgrub64.efiは約1MBですが、含まれるモジュールを少なくしてビルドできると思います。

コピーしたイメージはsyslinux.efiと呼ばれるため、isolinuxとは呼びません。 syslinux.cfgではなくisolinux.cfgという名前のファイルを探すことを期待しています。 (ただし、isolinuxはsyslinux.cfgにフォールバックします)。

また、「すべてのISOLINUX構成ファイルはルートフォルダーにある」と言っていることにも気づきました。 ISOの作成方法はわかりません。ブートローダーは 特別なブートイメージ にある必要があることに注意してください。iso9660ファイルシステムをマウントした場合に表示されるディレクトリツリーではありません。明らかにVirtualBoxが何かを起動しているので、ここでは問題になりませんが、他のシステムよりも許容範囲が広い場合は、「間違った」ことを行っている可能性があります。

「いくつかの人気のあるLinuxディストリビューション」によってセットアップされたハイブリッドブートイメージは読むのがとても楽しいですが、最後に読んだのは、単一のイメージですべてのMac、32ビットEFIをサポートすることは不可能でした...複数のブートイメージを認識し、ユーザーに「1」と「2」のどちらかを選択するように求めるファームウェア。少なくともMac固有のサポートがあれば、だれかがうさぎの穴を掘り下げる前に、テストできるパーツだけを実装する方が安全な場合があります。

1
sourcejedi