通过环回命令,GRUB2 允许直接引导 ISO 文件。
现在,我已经配置了相应的菜单项启动 PC-BSD现场 DVD ISO,但是当我尝试启动它时,FreeBSD 引导加载程序输出:
can't load 'kernel'
这是我当前使用的 GRUB2 菜单项:
menuentry "PC-BSD" {
search --no-floppy --fs-uuid --set root 0d11c28a-7186-43b9-ae33-b4bd351c60ad
loopback loop /PCBSD9.0-RC1-x64-DVD-live.iso
kfreebsd (loop)/boot/loader
}
有人知道我需要如何修改它才能启动 PC-BSD live 系统吗?
答案1
在“无法加载‘内核’”之后,您将进入加载程序提示符。
它有一个ls
命令,因此您可以检查内核的位置并使用 和 加载load
它boot
。
您也可以尝试直接启动内核,方法是尝试类似kfreebsd (loop)/boot/kernel/kernel
.
答案2
您可以尝试在映像上链式加载引导加载程序。 grub2 链式加载的工作方式如下:
insmod chain
set root = (hdX,Y)
chainloader +1
答案3
编辑:正如有人指出的这个线程,问题是引导过程在某些时候想要从回送设备挂载根文件系统,而 GRUB 的回送功能无法实现这种方式。请注意,PC-BSD 已重命名为真实操作系统他们现在提供 USB 映像。
我对 BSD 不太熟悉,在 Arch 中找不到任何关于 BSD 的内容多重启动 USB 驱动器文章,但是他们有 3 种方法GRUB 文章,在适应循环安装设备时至少应该有一个可以工作:
链式加载嵌入式引导记录
menuentry 'FreeBSD' { insmod ufs2 set root='hd0,gpt4,bsd1' chainloader +1 }
这似乎很简单,加载适当的文件系统模块似乎是个好主意,但请记住,在光学介质上有 ISO 9660 或 UDF,并且据我所知,除了 El Torito 之外没有分区。
运行传统的 BSD 第二阶段加载器
menuentry 'FreeBSD' { insmod ufs2 set root='(hd0,4)' kfreebsd /boot/loader }
这几乎就是您在不调用搜索的情况下作为静态配置所做的事情。
直接加载内核
menuentry 'FreeBSD' { insmod ufs2 set root='hd0,gpt4,bsd1' ## or 'hd0,msdos4,bsd1', if using an IBM-PC (MS-DOS) style partition table kfreebsd /boot/kernel/kernel kfreebsd_loadenv /boot/device.hints set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s4a set kFreeBSD.vfs.root.mountfrom.options=rw }
这看起来非常复杂。我刚刚开始下载 PC-BSD 10.3 iso,希望在接下来的几天里我能找到一些时间来研究如何让它通过 UEFI 或旧版本工作。