尝试 PXE 启动到 Windows PE 时加载 BCD 时出错

尝试 PXE 启动到 Windows PE 时加载 BCD 时出错

我正在尝试使用 pxelinux 设置 ubuntu 服务器,以便我可以使用 PXE 启动 Windows PE。在客户端计算机上,我可以看到 pxelinux 本身可以运行,但下一个屏幕是这样的:

错误


这是我所做的:

步骤 1:安装tftpd-hpadhcp3启动服务器。服务器是全新的 ubuntu server x86 虚拟机。静态 IP 为192.168.26.0。已安装 Samba 服务器。

dhcpd.conf包含

subnet 192.168.26.0 netmask 255.255.255.0 {
  range 192.168.26.10 192.168.26.40;
  filename "pxelinux.0";
  next-server 192.168.26.0;
}

我已经验证 TFTP 和 DHCP 可以正常工作。

第 2 步:pxelinux.0Ubuntu 存储库. 将其放入 tftpboot 目录并创建pxelinux.cfg/default以下内容:

DEFAULT winpe

PROMPT 0
TIMEOUT 300

MENU TITLE PXE

LABEL winpe
MENU LABEL Windows PE
    KERNEL Boot/pxeboot.0

我尝试过使用 Wdsnbp.0 (-> Wdsnbp.com),而不是 pxeboot.0 (-> pxeboot.com),但没有什么区别。

我想稍后制作一个带有 ubuntu 选项的真正的菜单。

步骤 3:下载并安装适用于 Windows 7 的 Windows 自动安装工具包并将其安装在全新的 Windows 7 x64 vm 上。

WAIK.chm我按照下载文件中的说明操作。简短版本:

复制文件和内容:

copype.cmd x86 c:\winpe_x86

我想提供一个 x86 winpe 图像。

imagex /mountrw C:\winre_x86\winpe.wim 1 C:\winpe_x86\mount

net use y: \\192.168.26.0\TFTPRoot
y:
md Boot

cd \temp\Windows\Boot\PXE
copy c:\winpe_x86\mount\Windows\Boot\PXE\*.* y:\Boot
copy c:\Program Files\WAIK\Tools\PETools\x86\boot\boot.sdi y:\Boot

Imagex /unmount C:\winpe_x86\mount
copy c:\winpe_x86\winpe.wim y:\Boot\boot.wim

BCDEdit用法:

Bcdedit -createstore c:\BCD

Bcdedit -store c:\BCD -create {ramdiskoptions} /d “Ramdisk options” 
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdidevice  boot
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdipath  \boot\boot.sdi

Bcdedit -store c:\BCD -create /d “MyWinPE Boot Image” /application osloader

guid1 是从上一个命令返回的 guid。

Bcdedit -store c:\BCD -set {guid1} systemroot \Windows
Bcdedit -store c:\BCD -set {guid1} detecthal Yes
Bcdedit -store c:\BCD -set {guid1} winpe Yes
Bcdedit -store c:\BCD -set {guid1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
Bcdedit -store c:\BCD -set {guid1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}

Bcdedit -store c:\BCD -create {bootmgr} /d “Windows BootManager”  /inherit {dbgsettings} 
Bcdedit -store c:\BCD -set {bootmgr} timeout 30 
Bcdedit -store c:\BCD -displayorder {guid1}

copy c:\BCD \\server\TFTPRoot\Boot

BCDEdit 报告每个操作均成功。BCD文件以大写字母显示。

步骤 4:我创建了一些符号链接(建议来自这个德国来源):

ln -s Boot boot
ln -s Boot/bootmgr.exe bootmgr.exe
ln -s Boot/pxeboot.n12 Boot/pxeboot.0

不幸的是,该源涉及 Windows Vista 和 Windows PE 2.0,而我使用的是 Windows 7 和 Windows PE 3.0,但我想这些链接不会造成任何损害。使用pxeboot.com而不是pxeboot.n12并不能解决问题。唯一的区别是您必须按 F12 才能启动。这表明系统至少在基本层面上可以正常工作(即它至少可以加载pxeboot.n12bootmgr.exe)。

我还添加了此重新映射规则,以/etc/tftp_remap.conf避免路径分隔符出现问题:

rg \\ /

我没主意了。我重新创建了 BCD 好几次。我还尝试使用 WAIK 文件夹中的 BCD,但没有成功。不幸的是,在 Google 上搜索这个错误只得到了与我无关的信息(即如何修复现有 Windows 安装中的这个问题)。

答案1

事实证明这是一个相当令人尴尬的错误。

在里面/etc/default/tftp.conf,我使用了错误的语法来指向文件/etc/tft_remap.conf正确的文件内容如下:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure -l -v -m /etc/tftp-remap.conf"

相关内容