
つまり、grub-mkstandalone を使用して作成された、完全に機能する .img ファイルがあります。これを CD に保存すると、正常に起動し、ISO は VM で正常に読み込まれます。
ここでやりたいのは、通常のブートのように、既存の grub.cfg をこの .img ファイルにリンクすることです。意味がありますか? たとえば、grub がインストールされた USB ペンドライブがあります。ISO をブートするように構成されたループ デバイスがいくつかあります。すべて Linux です。ただし、この場合は、代わりに .img ファイル (独自の grub.cfg を持つ) をロードします。したがって、.img がロードされたら、その grub.cfg のメニューを表示し、そこから OS をブートしたいと思います。
何日も答えを探し、ドキュメントを読んでいましたが、答えを見つけることができませんでした。
質問が明確でない場合はお知らせください。明確に説明します。よろしくお願いします。
編集:
たとえば、次のようなメニューエントリがあるとします。
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
linux (loop)/vmlinuz boot=live toram nomodeset
initrd (loop)/initrd
}
これは問題なく動作します。ただし、ISO 内にある grub メニューを表示できるように、Linux をこのようにロードするのではなく、作成した .img ファイルをロードしたいと思います。
こんな感じでしょうか?
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
.... (loop)/boot/grub/my.img
}
点は、これを機能させるための(そもそも可能かどうかは別として)私の知らない魔法を表しています。
答え1
EFI イメージの場合は、以下を使用できますchainloader
(ただし、その時点では BIOS を使用していたと思われます。その場合、機能するかどうかはわかりません)。
menuentry 'My OS' {
chainloader (hd0,msdos1)/BOOT/EFI/somedir/somebin.efi
}
だから、私は(未テスト!!):
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
chainloader (loop)/boot/grub/my.img
}