我正在尝试使用 pxelinux 设置 ubuntu 服务器,以便我可以使用 PXE 启动 Windows PE。在客户端计算机上,我可以看到 pxelinux 本身可以运行,但下一个屏幕是这样的:
这是我所做的:
步骤 1:安装tftpd-hpa
并dhcp3
启动服务器。服务器是全新的 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.0
从Ubuntu 存储库. 将其放入 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.n12
和bootmgr.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"