我已经成功地使用基于 BIOS 的系统设置了 PXEboot 环境(基于 foreman)。我可以使用默认 BIOS 子系统对 virtualbox 执行相同的操作。
随着 UEFI 开始越来越流行,我想要 PXEBoot 基于 UEFI 的系统。
我看到 Virtualbox 中有一个设置为“启用 EFI”,
我grubx64.efi
的 TFTP 服务器和 ProxyDHCP 已准备好将其作为选项发送
但是在启动此类支持 EFI 的 VM 后,会出现一些奇怪的 shell,其中列出了几个 BLK*: 设备,仅此而已...
如何使用此 shell 从 TFTP 请求启动文件(我没有看到 DHCP 流量)?
我发现了一些有关编辑的提示,但我的所有设备startup.nsh
上都没有此类文件BLK
答案1
使用 Virtualbox 6.1 以下对我有用。在机器设置上执行以下操作:
- “系统->启用EFI”
- “网络->高级->适配器类型:半虚拟化网络(virtio-net)”。
这样,它就会默认启动到 UEFI shell。输入exit
,这会弹出一个Boot Manager
菜单。在该菜单中,UEFI PXEv4
从启动管理器中进行选择,您将看到一个新屏幕,其中显示
>>Start PXE over IPv4.
然后它将引导到您的 grub.cfg。要使虚拟机自动通过 PXE 启动,您需要进入启动菜单并更改启动顺序。
请注意,要查看UEFI PXEv4
,我必须特别选择Paravirtualized Network
适配器。其他都不起作用。
答案2
我已经设法解决了这个问题。实际上它包括两个问题。
- 启用 EFI 时 VirtualBox 不支持 PXEBooting
- 使用裸机显示 DHCP 请求正在发送,但 proxyDHCP“附加”响应未处理(EFI PXEBoot 失败)。原来这是一个问题与域名解析- 支持 EFI 的最低版本是 2.76
答案3
我创建了一个简单的:https://github.com/windli2018/virtualbox-efi-netboot。希望对那些仍然需要这个的人有帮助。它只是带有启动 ipxe 的 efi 启动 ios 映像。