我已经使用 tftp 设置了一个 pxe 服务器,它使用 debian 安装程序运行。
http://www.debian-administration.org/articles/478
现在我不想要安装程序,而想要一个已经存在的系统(在 USB 上)。我如何启动该 USB 映像并为其创建 pxelinux.0 引导加载程序?在 Debian 上,我只找到安装程序映像。
编辑:好的,我在 USB 上安装了系统,我想在多个客户端上使用 PXE 通过网络启动它。我按照上面提供的链接中的教程安装了带有 tftp 服务器和 pxe 环境的普通 debian。它适用于安装程序,但我尝试使用另一个内核,但它说找不到文件,因为 pxelinux.0 文件指向来自 debian 发行版的安装程序内核。
答案1
您必须了解,并非每个可通过 USB 启动/安装的 Linux 映像都能在 PXE 环境中运行。
非 PXE 映像通常从启动设备(HDD、USB 等)启动并检索所需组件。
PXE 就绪映像将首先从网络启动,并且初始化脚本已准备好安装 NFS、HTTP、SMB 等系统,以便从那里获取所需的组件。
非 pxe 安装映像不仅没有准备好从网络检索组件的初始化脚本,而且很多时候使用甚至没有网络支持的内核/busybox 构建,或者没有某些协议的内核模块,这些协议使得 PXE 安装(如 HTTP 或 SMB)变得更容易。
请记住,TFTP 仅用于一些初始传输(pxelinux/vesamenu/kernel/initrd),安装的大部分内容将稍后通过 HTTP 或使用 NFS 或 SMB 共享挂载进行传输。
然后,如果您想通过 PXE 启动 USB Linux 安装映像,您必须分析发行版 initrd 并查看包含的 init 脚本是否支持 PXE,接下来您必须查看 kernel/busybox 是否包含网络启动所需的组件。这不是一件容易的工作。
如果您想启动“不是安装”但是是实时发行版的映像,则必须将用于网络安装 squashfs 文件的代码添加到 init 脚本中。
如果您想要启动一个既不是安装也不是实时发行版的映像,事情就会变得更加复杂。