我正在尝试获取 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 时进行了测试)。留下这个问题,以防有人觉得有用。