从 PXE 启动文件创建可启动的 USB 拇指驱动器

从 PXE 启动文件创建可启动的 USB 拇指驱动器

四处查找并在 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参数(依赖于发行版)并删除所有网络引用;这不是一个仅通过现成的实用程序就可以完成的简单任务。

相关内容