![如何通过 Linux PXE 服务器启动基于 UEFI 的 Windows 操作系统](https://linux22.com/image/722799/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20Linux%20PXE%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E5%9F%BA%E4%BA%8E%20UEFI%20%E7%9A%84%20Windows%20%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.png)
我想通过 Linux PXE 服务器在 UEFI 机器上安装 Windows 操作系统。我可以通过引导旧机器启动 memdisk 和 winpe iso 映像在旧机器上安装 Windows 操作系统。我了解 memdisk 仅适用于旧机器,不能用于 UEFI 系统。
我是否应该加载 memdisk 启动文件的替代方案?
注意:我用于部署的服务器不是 iPXE 服务器。
答案1
如果您可以使用wimboot
iPXE.org 提供的实用程序,那么您就可以这样做。我使用 Windows PE 3.1 进行了这样的实验。
您需要将 PXE 服务器配置为最初发送任何可以加载 Linux 内核的 PXE 引导加载程序。然后,您需要将其配置为代替 Linux 内核进行加载。然后,您将获得一个存档,其中包含来自 Windows 安装媒体的以下内容,wimboot
而不是 initrd 文件:cpio
- /启动/BCD
- /boot/boot.sdi
- /boot/fonts/wgl4_boot.ttf
- /sources/boot.wim
我制作了一个小型 Makefile,假设这些文件被放置在./build
相对于 Makefile 本身位置的子目录中:
all: cpio
cpio: build/BCD build/boot.sdi build/wgl4_boot.ttf build/boot.wim
cd build; /bin/ls | cpio -o -H newc > ../winpe32-3.1.cpio
mount:
wimmountrw build/boot.wim /mnt
umount:
wimunmount --commit /mnt
如果你有来自 wimlib.net 的 wimlib 工具您可以在运行之前使用make mount
和make umount
编辑其内容boot.wim
(例如添加驱动程序或工具)make
或make cpio
创建“initrd” .cpio 文件。
据我所知,没有特殊的“iPXE 服务器”。原则上,任何 PXE 服务器都可以将 iPXE 引导加载程序发送到 PXE 客户端。对于 PXE 服务器,iPXE 引导加载程序只是一个文件,服务器必须能够通过 TFTP 访问该文件,该文件位于 DHCP 选项中指定的确切路径中。
如果你使用我的“wimboot
不使用 iPXE”的想法,请注意:boot.wim
通过 TFTP加载整个慢的。首先将 iPXE 引导程序发送到客户端,然后通过 HTTP 进行处理,速度会快得多。