使用 UEFI 通过 PXE 引导 mfsBSD

使用 UEFI 通过 PXE 引导 mfsBSD

我正在尝试在启用了 UEFI 启动的主机上通过 PXE 启动 mfsBSD ISO。

BIOS 启动是一项非常简单的任务,该任务的 ipxe 配置如下所示:

kernel --name freebsd http://pxe.host/memdisk
initrd http://pxe.host/mfsbsd.img
imgargs freebsd harddisk raw
boot

由于 UEFI 启动方式不支持 memdisk 方式,并且似乎没有其他方式可以直接启动 mfsBSD,所以我首先切换到启动 GRUB2:

kernel --name grub2 http://pxe.host/grub2.efi
boot

所以现在我尝试从那里启动 mfsBSD ISO,这是我的样子grub.cfg

insmod efinet
insmod tftp
insmod loopback
insmod iso9660
insmod ufs2
insmod part_msdos
insmod gfxterm
insmod vbe

menuentry "mfs12.1.iso" {
  set isofile=(tftp)/mfs12.1.iso
  loopback loop $isofile
  echo "ISO mounted"
  set root=(loop)
  kfreebsd /boot/kernel/kernel.gz
  echo "kernel loaded"
  kfreebsd_loadenv /boot/device.hints
  kfreebsd_module /boot/kernel/ahci.ko
  echo "ahci.ko loaded"
  kfreebsd_module /mfsroot.gz type=mfs_root
  set kFreeBSD.vfs.root.mountfrom="ufs:/dev/md0"
  echo "set kFreeBSD.vfs.root.mountfrom"
  set kFreeBSD.mfs_type="mfs_root"
  echo "set kFreeBSD.mfs_type"
  set kFreeBSD.mfs_name="/mfsroot"
  echo "set kFreeBSD.mfs_name"
  set kFreeBSD.mfsbsd.autodhcp="YES"
  echo "set kFreeBSD.mfsbsd.autodhcp"
}

不幸的是,每次启动都会挂起,屏幕上没有任何信息: mfsBSD 启动

我尝试更改kFreeBSD.vfs.root.mountfrom"cd9660:/dev/md0"但没有结果,尝试了不同的 mfsBSD 版本,并使用此解决方案构建了支持 EFI 的 ISO:https://github.com/mmatuska/mfsbsd/pull/100

我在这个设置中缺少什么吗?我将非常感谢任何帮助。

答案1

您确定事情不起作用吗?您是否尝试过通过网络访问它?

如果你看一下GRUB手册搜索一下amd64 EFI你会发现它只支持无头启动。通过你的截图你可能然后就已经成功启动系统了。但是,您不应期望在屏幕上看到任何控制台输出。

如果您构建自己的 mfsBSD 版本(或修补 ISO 映像),您可以尝试设置nullconsolecomconsole/boot/loader.conf

console=nullconsole

...没有控制台 - 或使用串行控制台使用

console=comconsole

或者看看2.12 高级安装指南

我了解使用 mfsBSD 的便利性,因为一切都是为您构建的。但完全跳过 Grub 并直接启动到 FreeBSD 确实不难。唯一的烦恼是您需要在某处运行 NFS 才能启动。

如果您查看文档31.8。使用 PXE 进行无盘操作- 您可以查看 dhcp 服务器的示例配置。为 UEFI 启动修改此内容很简单:

# path of boot loader obtained via tftp
filename "loader.efi";

# pxeboot boot loader will try to NFS mount this directory for root FS
option root-path "192.168.0.1:/tftproot/FreeBSD/" ;

因此,如果您将 FreeBSD 复制/boot/loader.efi到 TFTP 服务器,那么我们将立即启动到正确的加载程序。 AFAIKloader.efi仍然只支持通过网络上的 NFS 获取内核(与pxeboot(8)使用 TFTP 可以进一步实现)。但如果您手头有 NFS,那么设置起来就轻而易举了。您可以阅读更多相关内容无盘(8)

默认情况下将为您提供典型的 NFS 根目录。但是,当您具备这种能力时,那么使用存储磁盘进行工作就一点也不难 - 请参阅17.9。内存盘多文件系统(8)。作为mdmfs支撑geom_uzip您可以拥有一个漂亮的包含图像,如果需要,可以轻松修改它。

至于前进的道路,我们已经开展了工作UEFI HTTP 启动支持如果您更喜欢通过 HTTP 而不是 NFS 提供服务,这将简化事情。然而,这仍然相当新颖和闪亮。

其他报告使用 UEFI、Grub 和 mfsBSD 获得与您运行的设置相同的问题。

再次:我确实了解使用 mfsBSD 映像的便利性。我只是想表明还有一条替代路线。如果我们幸运的话,也许有更多 Grub 经验的人可以提供更好的答案。

相关内容