四处查找并在 Google 上搜索,但找不到类似的问题。似乎大多数人都想使用可启动的 USB 拇指棒并将其转换为 PXE 启动映像。我实际上需要朝相反的方向走,即从 PXE 启动文件创建可启动的 USB 拇指棒。
我有一个用于磁盘映像的 PXE 服务器。我的网络上的某些设备无法进行 PXE 启动,因为 1) 子网上的其他设备已在使用 PXE,或者 2) 它们的网络适配器不支持 PXE。我唯一的选择是获取用于 PXE 启动设备的任何文件,然后尝试制作可启动的 USB 拇指驱动器。
我可以访问使用 PXELinux 的 PXE 服务器。以下是 PXELinux 使用的“默认”文件中的内容。
default imaging
prompt 0
noescape 1
label imaging
kernel kernel/bzImage
append initrd=kernel/init.gz root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=10.10.10.5 storage=10.10.10.211:/imaging/images/ driversstorage=10.10.10.211:/imaging/drivers/ imaging_server=10.10.10.211:20444 symmetric_key=KsqRwghBK+l/LGQ83kOp3Gl8Xos9mrTItQ69MJabgAv5DqcKakVCwNpE4QJ+A9zzDoSAhdREIVK4lkUZP67XXg loglevel=4a
我主要使用 Windows/Mac,但也能熟练使用 Linux,并且习惯在终端中运行命令行。我对 Linux 启动过程几乎一无所知,也不知道如何制作可启动的 USB 拇指驱动器。我从上面的 PXELinux 配置文件中了解到,bzImage 和 init.gz 文件是 PXE 启动客户端设备所必需的。有没有办法使用这两个文件和 PXELinux 配置中的信息来创建可启动的 USB 拇指驱动器?
谢谢
答案1
你不能轻易做到这一点;即使你设法创建一个可启动的 USB,加载内核和 initrd,initrd 参数仍然需要网络资产。从你的例子来看
append initrd=kernel/init.gz root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=10.10.10.5 storage=10.10.10.211:/imaging/images/ driversstorage=10.10.10.211:/imaging/drivers/ imaging_server=10.10.10.211:20444 symmetric_key=KsqRwghBK+l/LGQ83kOp3Gl8Xos9mrTItQ69MJabgAv5DqcKakVCwNpE4QJ+A9zzDoSAhdREIVK4lkUZP67XXg loglevel=4a
init.gz
作为参数ip=dhcp
告诉引导执行程序通过 DHCP 获取其 IP,接下来它会加载并storage=10.10.10.211:/imaging/images/
告诉引导执行程序其余的引导/安装组件存储在网络位置上,等等。
正如您所见,尝试做您想做的事情需要编辑您的initrd
参数(依赖于发行版)并删除所有网络引用;这不是一个仅通过现成的实用程序就可以完成的简单任务。