64ビットバージョンにUEFIサポートを追加しようとしました。最小Linuxライブ長い間、残念ながら大きな成功を収めませんでした。下の画像に示すように、致命的なエラーUEFI経由で起動しようとするたびに。
これを達成するために私がしたことは次のとおりです。
- ダウンロードしましたシステムLinux-6.0.3。
- 私は指示に従った。ここそして
efi64/efi/syslinux.efi
にコピーしました\EFI\BOOT\BOOTX64.EFI
。 efi64/com32/elflink/ldlinux/ldlinux.e64
にもコピーしました\EFI\BOOT\LDLINUX.E64
。- 仮想マシンを作成しました。仮想ボックス(バージョン5.0.20)UEFIを有効にします。
- 新しいISOイメージ(すべてのISOLINUX設定ファイルはルートフォルダにあり、スクリーンショットを参照)を作成し、それを仮想マシンのデフォルトの起動可能メディアとして使用しました。
- 実行直後にスクリーンショットに表示されたエラーが発生しました。
- この時点で起動プロセスを「中断」してUEFIシェルに戻るには、名前
\EFI\BOOT\BOOTX64.EFI
を変更する必要があります。\EFI\BOOT\BOOTX641.EFI
- UEFIシェルでコマンドを使用し、フォルダ
edit
に\EFI\BOOT
移動しました。 - 手動で電話しましたが、表示できるのと
BOOTX641.EFI
同じエラーが発生しました。
したがって、私のEFIスタブは実行中ですが、実行中に問題が発生したと結論付けることができ、現在では何が間違っているのかわかりません。
ISO画像構造を確認しましたシステム回復ディスクUEFIをサポートしていることを知っており、次のことを確認しました。
- EFI構造には1つのファイルのみが含まれています
\efi\boot\bootx64.efi
。 - サイズは
\efi\boot\bootx64.efi
724KBですが、Syslinux 6.03の対応するファイルはefi64/efi/syslinux.efi
約200KBなので、必ずしも同じファイルではありません。 - 「システムリカバリCD」からコピー
\efi\boot\bootx64.efi
して「Minimal Linux Live」のEFI構造で使用すると、UEFIブートプロセスが非常にスムーズに行われ、GRUB 2シェルが見えます。
これが\efi\boot\bootx64.efi
「システムリカバリCD」のファイルにGRUB 2サポートが組み込まれているので、カスタムソリューションであることが間違いないという事実を発見した方法です。
したがって、この問題をいくつかの言葉で解決するために、私は一般的なSyslinuxパッケージを使用しており、単純なISOイメージを起動するためのUEFI互換構成を作成したいと思います。正式な指示に従うことは私には効果がないようです。
すべての提案を高く評価します!ありがとうございます!
注1:ISOイメージはBIOSモードで正常に起動します。問題ありません。
ノート2:UbuntuやLinux Mintなどの他のオペレーティングシステムはUEFIモードで正しく起動されるため、これはVirtualBoxのバグではない可能性があります。
編集1 - (2017年1月):
長い間答えがなかったので、まったく異なる方法でソリューションを実装しました。
- UEFIブートモードを使用しません
Syslinux
。 - EFIスタブを使用してLinuxカーネルをコンパイルしました。
startup.nsh
UEFI起動後に自動的に実行される単純なスクリプトを作成しました。- 同じスクリプトがカーネルとinitramfsをロードします。
これにより、一部の起動機能が失われます。たとえば、vga=ask
UEFIモードでは正常に動作しますSyslinux
が、この特定の起動オプションには正しいLinuxブートローダが必要なため、UEFIモードでは機能しません。
正常に動作するソリューションがあっても、問題はまだ解決されません。
編集2 - (2017年12月):
これは以前のアップデートに追加されます。startup.nsh
このソリューションは、UEFIシステムに「UEFIシェル」(ファームウェアがUEFI仕様に従ってシェルを提供する場合もありません)があり、シェルにレベル1以上のサポートがある場合にのみ機能します。また、ISOイメージにESPを提供する正しい方法は、「El Torito」ブートイメージを介することであるため、ブートスクリプトが実行されるという保証もありません。 ISOイメージに直接ESP互換構造を提供することは、一部のファームウェアではうまく機能するように見えますが、普遍的な解決策ではありません。
問題はまだ解決されていませんが、これまで統合に成功しました。システム起動私はもはやこの問題を最優先事項とは思わない。
答え1
システムリカバリ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専用のサポートがあれば、テストできる部分だけを実装することはおそらくより安全です。