grub2 を使用した syslinux のチェーンロード

grub2 を使用した syslinux のチェーンロード

必要に応じてレガシー BIOS または eufi のいずれかを起動するための syslinux/isolinux ハイブリッド CD iso を作成しました。レガシー BIOS 部分は問題なく動作し、長年動作しています。私は syslinux の最新バージョン (6.0.3) を使用しています。テストとして、rhel7 ブート CD から取得した rhel7 efiboot.img を使用して eufi 部分を起動しました。この CD iso を uefi BIOS 搭載の VM で起動できます。

これにより、grub2 シェルに切り替わります。これは、使用可能な grub.cfg をまだ作成していないため (イメージ ファイルに付属するデフォルトの grub.cfg のみ)、予想される動作です。したがって、少なくともこの CD を uefi モードで起動できます。

私は、syslinux をチェーンロードできるかどうか (またその方法) を確認し、レガシー BIOS に使用するメニューをロードできるかどうかを確認するために、grub2 シェルを介して syslinux.efi をチェーンロードしようとしています。

私はgrub2コマンドのさまざまな組み合わせを使用しましたが、何を試しても常にこのエラーが発生します。このエラーを検索しても、あまり役立つ情報は得られません。

grub> set root='(cd0)'
grub> chainloader /syslinux/efi/syslinux.efi
grub> boot
Failed to locate root device to prep for file operations & ADV initialization
error: unknown error
grub>

これは grub2 または syslinux.efi ファイルの問題なのか、それともまったく別の問題なのか疑問に思っています。

私が使用している efiboot.img は、uefi で動作することがわかっている CD から取得されているため、問題にはならないと思います。

「chainloader」コマンドは、このファイルを grub2 がロードに使用できる可能性があるものとして認識していると思います。別のファイル、または存在しないファイルを使用すると、次のエラーが発生します。

grub> chainloader /isolinux/efi/libmenu.c32
error: cannot load image.
grub> chainloader /isolinux/efi/doesnotexist
error: file 'isolinux/efi/doesnotexist' not found.

2019年8月9日編集

これは、syslinux の現在のリリース (6.03) では実際には不可能だと思います。回避策として、rhel7 ブート イメージを使用して EFI ディレクトリをコピーし、それを基にして、UEFI モードとレガシー BIOS モードで起動するブート可能なハイブリッド CD を作成しました。ブート メニューを作成するには、EFI/BOOT/grub.cfg ファイルを必要に応じて調整するだけです。これは実際には gummiboot/systemd-boot を使用していると思います。私は同じものを使用して UEFI ネットワーク ブートを構成しました。

関連情報