是否可以从 cfg 引导 grub-mkstandalone 创建的 img 文件?

是否可以从 cfg 引导 grub-mkstandalone 创建的 img 文件?

所以我有一个使用 grub-mkstandalone 创建的功能齐全的 .img 文件。我把它放在 CD 上,它启动得很好,ISO 在虚拟机中加载得很好,等等......

现在,我想做的是将现有的 grub.cfg 链接到这个 .img 文件,就像它是常规启动一样。那有意义吗?例如,我有一个安装了 grub 的 USB 闪存盘。我有几个配置为引导 ISO 的循环设备。所有Linux。但是,在这种情况下,我想加载 .img 文件(它有自己的 grub.cfg)。所以我想在 .img 加载后看到 grub.cfg 中的菜单,然后从中启动操作系统。

我已经寻找答案好几天了,并阅读了文档,但我找不到答案。

如果问题不清楚,请告诉我,我会澄清。提前致谢。

编辑:

举例来说,假设我有这个菜单项:

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
}

这很好用。但是,我想加载我创建的 .img 文件,而不是像这样加载 linux,这样我就可以看到 ISO 内的 grub 菜单。

那么像这样的事情吗?

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
}

相关内容