複数のisoファイルを起動するために使用できるUSBスティックを作成したいと思います。 uEFIを通じてこれを実行したいと考えています。
USBスティックは次のようになります。
/EFI
/bootx64.efi
/something.conf
/isos
/foo.iso
/bar.iso
...
ここで、/isos
は、uEFIブート可能isoファイルの束を保持しています。私が理解していることから、これらのisosには、uEFIブーローダーが通常実行する/EFI/BOOT<some Arch>.efi
ファイルがあります。
ドライブの/EFI/bootx64.efi
は、efiブーローダーを特定するためのもので、/EFI/something.conf
はその構成ファイルです。
私が必要としているのは、isoファイルの1つで何らかの方法で/EFI/BOOT<some Arch>.efi
を呼び出すことができるuEFI実行可能ファイルです。これが理論的に可能かどうかはわかりません。
GRUB2でも同様のことができることは知っていますが、Linuxイメージ、そのオプション、およびinitrdファイルを指定する必要があります。これは、ISOごとに異なり、まったく機能しない場合があります。私の希望は、/EFI/BOOT<some Arch>.efi
を呼び出すことにより、これらを指定する必要がなく、1つのレシピで任意のISOイメージを起動できることです。
私の質問です:isoファイル内にあるEFI実行可能ファイルを呼び出すことができるuEFIブートローダーはありますか?
これはすべてのISOで機能するわけではありませんが、syslinuxから [〜#〜] memdisk [〜#〜] を使用して、ISOをRAMDISKイメージとしてメモリにコピーできます。 BIOS呼び出しはRAMDISKを認識し、LinuxもRAMDISKを認識します。これを行うには、syslinux.efiと関連ファイルをEFI/syslinux
のようなEFIシステムパーティション(ESP)のどこかにコピーする必要があります。次に、/EFI/syslinux/syslinux.cfg
で、ISOファイルの一連のmemdiskメモリオプションを MEMDISKページ の例の行に沿って作成します。
はいといいえ。起動前環境(grub
、iPXEなど)で起動できますが、これを行うと本当に複雑になります。ほとんどのライブディスクには、あなたが話しているファイルがありません。ほとんどのiso-hybridディスクが行うことは、ここの他の回答で説明されているようなものです-実際の実行可能ファイルがRAMディスクのループデバイスにあるイメージファイルをマウントし、その後そのカーネルを呼び出します。その複雑さのすべてのポイントは、BIOSシステムとの互換性であると思われます。それがあなたの懸念事項ではない場合は、各ISOからいくつかのファイルをプルして、直接ブートする方が良いでしょう。 EFIシステムの場合-その場合、ファームウェアはブートローダーです。
だからあなたが欲しいのはFATフォーマットのUSBスティックです。問題のisosをマウントし、x86を見つける.sfs
ルートイメージファイル、それらのinitramfsとカーネルを見つけます(おそらくisoマウント内に別のイメージをループマウントする必要があります)-そしてそれはそれについてです。 LinuxカーネルはEFIで実行可能です。ファームウェアでカーネルを実行できるため、ブートローダーは必要ありません。カーネルの最初のルートファイルシステムは、initramfsイメージからマウントされます。次は.sfsアーカイブです。それがどのように機能するかです。
ここでは漠然としていますが、Arch Linuxインストールメディア here で同様のことを行う詳細なウォークスルーがあります。
(プロセスは一般的に分布によってほとんど変わりません)
ISOから直接起動する場合、Linuxカーネルがロードされると、ISO内からsquashfsを取得する必要があります。これを行うには、LinuxカーネルとスクリプトでISOをループデバイスとしてマウントする必要があります。これを行うには、ISOファイルのパスとファイル名を知っている必要があります。フルパスは通常、カーネルパラメータで指定されます。 iso-scan/filename=/images/ubuntux64.iso
一部のUbuntu ISOには/boot/grub/loopback.cfg
ファイルが含まれており、grub2変数にはISOファイルの完全パスが事前に設定されている必要があります。
したがって、これらのISOファイルを使用して、それらを起動する一般的な方法があります。ISOファイルの完全パスを使用してgrub2変数を設定し、loopback.cfg
ファイルを実行するだけです。
そのため、grub2.cfg
フォルダ内のすべてのISOファイルをリストし、ユーザーがそれらの1つを選択して起動できるようにする/images
ファイルを作成することが可能です。唯一の問題は、/ boot/grub/loopback.cfg
ファイルを含める必要があり、Ubuntu以外のISOにはほとんど含まれていないことです。
より多くのディストリビューション開発者のみがISO内にloopback.cfg
ファイルを含める場合、必要なものが可能になります!
http://www.rmprepusb.com/tutorials/136_uefi_ubunt が役立つ場合があります。また http://rmprepusb.blogspot.co.uk/2017/02/make-generic-grub2-boot-menu-using.html