我使用本指南来设置我的 iPXE 服务器:https://linuxhint.com/pxe_boot_ubuntu_server/
它是在虚拟 Ubuntu (20.4.6) 桌面系统上设置的,经过一些测试,它非常适合 PXE 引导和安装 Ubuntu 22.4 和 20.4 在不同的客户端系统上。
但是,我无法让 Debian (12.2.0) 工作。
我下载了以下完整(3.7GB)iso:
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.2.0-amd64-DVD-1.iso
并将其提取到/os-images/debian-12.2.0-amd64
然后我编辑了 boot.ipxe 文件并添加了一个 debian 菜单项:
:debian-12.2.0-amd64
set os_root os-images/debian-12.2.0-amd64
kernel tftp://${server_ip}/${os_root}/install.amd/vmlinuz
initrd tftp://${server_ip}/${os_root}/install.amd/initrd.gz
imgargs vmlinuz initrd=initrd.gz ip=dhcp root=${server_ip}:${root_path}/${os_root}
boot
现在它部分起作用了:
在我的客户端上,它启动到选择菜单。
当我选择 Debian 安装时,它会启动 debian 安装程序。
它问我 3 个问题(语言、国家/地区和键盘映射),我使用默认值回答。
然后,在检测到安装介质的短暂屏幕后,它在蓝色屏幕上等待几秒钟,然后出现一条通知:
[!!] 检测并安装安装介质
因此,安装程序似乎无法找到 Debian 介质。
我在使用谷歌时尝试了很多不同的论点imgargs
。
但是,我似乎找不到与我拥有的 iPXE 环境相同的系统设置。大多数示例都使用 netboot.tar.gz,或者是旧 Debian 版本的示例。我不确定,但我认为我能找到的示例不适用于我的设置,因为它已经从 TFTP 启动。我的说法正确吗?
我确实喜欢从本地媒体安装它,因为该网络旨在与互联网断开连接。但是,如果太困难,我也可以使用远程媒体,只要我可以将其与 ubuntu 安装程序的当前(工作)解决方案集成即可。
并非每个 iso 都可以通过网络启动,使用 NFS 挂载根文件系统 - 这里的问题不是 pxe 环境,而是 debian-installer。我在我的环境中测试了上面的 iso,并遇到了与您相同的问题。
通过 shell,我发现安装系统当时甚至没有加载网卡驱动程序,因此无法安装 rootfs 的原因就很明显了 - 安装程序缺少访问网络所需的内核模块 -这可能就是为什么所有文档都提到
netboot.tar.gz
在网络安装时使用的原因。感谢马丁的指点,让它工作起来。
它现在是一个非本地解决方案(因此您需要在客户端有互联网连接才能下载安装介质),仍然使用本地安装介质和预置。如果我能做到这一点,我会更新这篇文章。
正如在我原来的帖子中一样,我按照本指南设置了 iPXE 环境。如果您不需要 Ubuntu,请跳过下载 iso 的最后步骤,将其复制到 /os-images 文件夹并将其添加到 boot.ipxe 文件中的菜单中。
如果 PXE 环境已设置,请创建一个要放置 debian netboot 文件的文件夹,将 debian netboot tarball 下载到其中,解压并清理它:
我遵循了这个示例,这也会创建该环境可能不需要的链接,但我还是这样做了:
此时,我开始测试(下面将显示 boot.ipxe 菜单项),并发现我的客户端 PC 需要一些额外的 NIC 驱动程序。我所做的是添加 tarballfirmware.cpio.gz 中的所有驱动程序,但我认为您也可以只添加特定的驱动程序。完整的设置使得启动速度非常慢,因为客户端必须将它们全部下载。
简而言之:您必须将驱动程序添加到 initrd.gz
这就是我的做法:
编辑boot.ipxe:
添加 debian 安装程序菜单项:
现在我的客户端可以很好地启动并进入正常运行的 Debian 安装程序。如前所述,现在我将了解如何添加预置,然后可能使用本地安装介质。如果有人已经知道该怎么做:请告诉我!
更新: 也设法让预种子工作。从 tftp 检索该文件时遇到了很多麻烦,但当它尝试检索预置文件时,网络接口似乎未启动。我在 poot.ipxe 中的 debian 菜单项现在如下:
请注意,如果没有
priority=critical
,netcfg/dhcp_timeout=200
它将无法获取预置文件。您需要添加 /pxeboot/preseeds 文件夹并将示例 preseed 文件添加到其中:
现在它已设置完毕,您可以根据配置需要编辑预置文件:
您可以在这里找到一些预置信息