由于某种原因,我有一个定制的 USB 棒,里面可能有大约 10 个 Linux 发行版和 3 个版本的 Windows。我只是将 .iso 文件放入 /Linux,然后使用 GRUB 引导到这些 .iso。一些示例条目:
menuentry "ubuntu 20.04" --class ubuntu {
set isofile="/Linux/ubuntu.iso"
loopback loop ($BOOT)$isofile
linux (loop)/casper/vmlinuz iso-scan/filename=$isofile boot=casper ro quiet splash
initrd (loop)/casper/initrd
}
menuentry "Manjaro 18.0.4" --class manjaro {
set isofile="/Linux/manjaro.iso"
set imgdevpath="/dev/disk/by-uuid/$UUID"
loopback loop ($BOOT)$isofile
linux (loop)/boot/vmlinuz-x86_64 img_dev=$imgdevpath img_loop=$isofile ro quiet splash
initrd (loop)/boot/initramfs-x86_64.img
}
menuentry "Silverblue 34 (Install only)" --class silverblue {
set isofile="/Linux/silverblue.iso"
loopback loop ($BOOT)$isofile
linux (loop)/isolinux/vmlinuz inst.stage2=hd:UUID=$UUID:$isofile ro quiet splash
initrd (loop)/isolinux/initrd.img
}
现在,我可以获取该 Silverblue 条目,并将其指向 Fedora.iso 文件。它会正常启动,但它只会直接进入安装程序。虽然 Silverblue 的 .iso 中没有 LiveOS 文件夹,但 Fedora 中有。
如何调整启动项以使其启动进入 Live 环境?
答案1
这最终成为我的正确菜单项。
menuentry "Fedora 34" --class fedora {
set isofile="/Linux/fedora.iso"
loopback loop ($BOOT)$isofile
linux (loop)/isolinux/vmlinuz iso-scan/filename=$isofile root=live:CDLABEL=Fedora-WS-Live-34-1-2 rd.live.image ro
initrd (loop)/isolinux/initrd.img
}
显然,inst.stage2
用于指向安装源。 (来源)
所以我必须删除它,并添加这些参数以使其启动到实时环境:iso-scan/filename=$isofile root=live:CDLABEL=Fedora-WS-Live-34-1-2 rd.live.image
。
如果没有iso-scan/filename=$isofile
,它无法找到 .iso 文件。
root=live:CDLABEL=Fedora-WS-Live-34-1-2
看起来像 chroot 位置。您可以CDLABEL
通过安装 .iso 文件来找到该文件。我想使用 UUID 也可以工作,但尚未测试。
不完全确定rd.live.image
是什么,但它看起来确实相关,不是吗? :p 这似乎是一个 dracut 选项。可能只是让它知道使用实时环境。