如何通过 Linux PXE 服务器启动基于 UEFI 的 Windows 操作系统

如何通过 Linux PXE 服务器启动基于 UEFI 的 Windows 操作系统

我想通过 Linux PXE 服务器在 UEFI 机器上安装 Windows 操作系统。我可以通过引导旧机器启动 memdisk 和 winpe iso 映像在旧机器上安装 Windows 操作系统。我了解 memdisk 仅适用于旧机器,不能用于 UEFI 系统。

我是否应该加载 memdisk 启动文件的替代方案?

注意:我用于部署的服务器不是 iPXE 服务器。

答案1

如果您可以使用wimbootiPXE.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 mountmake umount编辑其内容boot.wim(例如添加驱动程序或工具)makemake cpio创建“initrd” .cpio 文件。

据我所知,没有特殊的“iPXE 服务器”。原则上,任何 PXE 服务器都可以将 iPXE 引导加载程序发送到 PXE 客户端。对于 PXE 服务器,iPXE 引导加载程序只是一个文件,服务器必须能够通过 TFTP 访问该文件,该文件位于 DHCP 选项中指定的确切路径中。

如果你使用我的“wimboot不使用 iPXE”的想法,请注意:boot.wim通过 TFTP加载整个慢的。首先将 iPXE 引导程序发送到客户端,然后通过 HTTP 进行处理,速度会快得多。

相关内容