PXE 从 Linux 启动 Windows PE

PXE 从 Linux 启动 Windows PE

我正在尝试获取 Windows 预安装环境以通过 PXE 从 Linux 服务器启动。最终目标是安装 Windows,但一旦我能够启动 WinPE(我有带有 Windows OS 磁盘等的 Samba 共享),这将非常容易。我正在使用 ESXi 并尝试获取 VM 以 PXE 启动 winPE,但也可以访问物理机器进行测试。我按照一些教程中的步骤进行操作(http://www.tecmint.com/configure-pxe-server-to-install-windows-on-centos/主要) 我到达了一个有趣的地方:

如果我尝试在虚拟机或物理机上通过 PXE 启动 winPE,我会收到错误:

CDBOOT: Cannot boot from CD - Code 5

但是,如果我将 winpe iso 安装到 VM 的磁盘驱动器上,它就可以正常工作(我到达 winpe 并可以安装 windows)。从我读到的“无法从 CD 启动 - 代码 5”错误来看,它最常与 BIOS 固件/硬件不兼容有关,但如果这是真的,安装时 iso 也不应该工作。

在我的 ./pxelinux.cfg/default 中我有:

MENU LABEL Windows 7
 LINUX memdisk
 INITRD windows/winpe_amd64.iso
 APPEND iso raw

我尝试过附加 raw 和不附加 raw 两种方法,结果都一样。我已经将 memdisk 二进制文件复制到 tftproot。在 PXE 启动时似乎可以找到 iso,因为 iso 正在以某种方式读取,ISO 位于 tftproot 中的 windows/winpe_amd64.iso。

有谁知道为什么 PXE 启动的行为与在驱动器上安装 ISO 的行为不同,并且对如何解决启动 iso 的问题有什么想法吗?

答案1

当您在虚拟机上“安装”winpe_amd64.iso 并从中启动时,ISO 会发现自己从 CD/DVD 驱动器(真实或虚拟)启动。当您从 memdisk 启动 winpe_amd64.iso 时,ISO 会看到一个“模拟”(由 memdisk 创建)磁盘环境。

APPEND iso raw

某些 Windows ISO 在某些 PC 上需要“原始”选项。

可以使用 MEMDISK 映射并从某些 CD/DVD 映像启动。支持无模拟、软盘模拟和硬盘模拟 ISO。

“映射”过程是使用 INT 13h 实现的 - 任何磁盘模拟都可以从使用兼容模式磁盘访问的操作系统(例如 DOS 和 Windows 9x)访问。但是,一旦保护模式内核驱动程序接管控制,就无法从使用保护模式驱动程序(Windows NT/2000/XP/2003/Vista/2008/7、Linux、FreeBSD)的操作系统访问通过 INT 13h 进行的模拟。如果操作系统包含用于访问此映射 ISO 的驱动程序,或者知道如何在磁盘上找到 ISO,那么当然就不会出现启动问题。

INT 13h 访问:并非所有映像都会完成启动过程!

Windows NT/2000/XP/2003/Vista/2008/7 (基于 NT)

这些 Windows 版本使用 INT 13h 访问仅在启动过程开始时(仅加载必要的驱动程序)。一旦保护模式驱动程序正常运行访问磁盘,Windows 无法看到 MEMDISK 创建的内存映射驱动器(CD/DVD、硬盘和软盘映像)和它将无法完成启动过程

来源: http://www.syslinux.org/wiki/index.php/MEMDISK

底线:memdisk 是最后一种资源选择,相当不可靠,请避免使用它。

对于你的情况,我会尝试 PXE 启动pxeboot.n12(NBP)随后调用 bootmgr.exe、bcd、boot.sdi,最后调用 Boot.wim 文件。这几乎就是 WDS 对 Windows PE 环境进行 PXE 的方式。

编辑:

可以在任何 Windows DVD/ISO 上的 Boot.wim 中找到 pxeboot.n12。

具体来说,从您遇到的错误来看,您也可能面临这种问题。 https://superuser.com/questions/28123/when-installing-windows-7-cdboot-error-5-appears-cannot-boot-from-cd-why

答案2

我遇到的问题是由于错误的 FTP-get 造成的,这导致我必须使用的 WinPE ISO 确实无法启动,就像错误所说的那样(在 VM 中尝试启动 CD 时进行了测试)。留下这个问题,以防有人觉得有用。

答案3

作为Pat 的回答很好地解释一下,一旦 INT13 调用在启动过程中不再可用,WinPE(即 Windows)将无法了解“CD”。

解决此问题的一个更现代的方法是使用 iPXE 和启动

相关内容