编辑

编辑

我正在尝试通过 iPXE 和 NFS 设置 Ubuntu 的网络启动mini.iso。我目前正在通过 iPXE 命令行而不是脚本逐步完成所有操作。我确保在启用 NFS 的情况下构建 iPXE,这似乎运行良好,因为我可以正常访问initrd.gz。但我不知道如何告诉 iPXE 内核是什么;我假设该linux文件是内核,但当我尝试告诉 iPXE 使用该文件时,它会抛出Exec format error (http://ipxe.org/2e008081)

更详细地说,系统设置如下:

  1. mini.iso 作为共享文件夹安装在 QNAP TurboNAS 上,并通过 NFS 启用访客访问
  2. 新服务器 PXE 启动,通过 TFTP 链式加载 iPXE
  3. <Ctrl-B>进入 iPXE 命令行
  4. initrd nfs://guest@<nfs ip address>/Ubuntu1604Mini/initrd.gz很好用
  5. kernel nfs://guest@<nfs ip address>/Ubuntu1604Mini/linux因上述错误而惊慌失措

我很难在 Google 上搜索这个问题,因为其他一切似乎都假设一个非网络启动映像,所以所有这些说明都假设casper目录的存在,casper/vmlinuz但 mini.iso 似乎有一个非常不同的结构。

任何帮助都将不胜感激!谢谢!

编辑

如果相关,则所有 NFS 访客访问都是只读的。

编辑2:

看来这实际上是一个 UEFI 问题。我在文档中发现 mini.iso 没有设置为在 UEFI 环境中启动。因此,我已切换到尝试通过 Ubuntu 16.04 Server .ISO 使其工作,但仍然遇到问题;从一些粗略的网络搜索来看,Ubuntu 16.04 上的 vmlinuz 似乎未使用 EFI Stubs 进行编译。我找到了 EFI/BOOT/BOOTx64.EFI 文件,但当我使用 iPXE 链式加载它时,它开始尝试通过 TFTP 查找 Netbook 映像,因此我不能 100% 确定它在做什么或我可以传递给它什么参数。

答案1

我在 nfs 上实时启动 debian 时遇到了同样的问题。ipxe 文档提到了使用 bios 而不是 efi 的启动情况,正如您提到的,解决方案与 efi 有关。

在 imgargs 行中添加参数 initrd=initrd_file_name。

此信息来源为:http://forum.ipxe.org/showthread.php?tid=7522

虽然我在官方文档中没有找到它,但它在 efi 上对我来说有效。

相关内容