Pxe-Boot

嘗試 PXE 引導到 Windows PE 時載入我的 BCD 時出錯

  • August 10, 2013

我正在嘗試使用 pxelinux 設置 ubuntu 伺服器,因此我可以使用 PXE 啟動 Windows PE。在客戶端機器上,我可以看到 pxelinux 本身工作,但下一個螢幕是這樣的:

錯誤


這是我所做的:

步驟1:安裝tftpd-hpadhcp3在伺服器上。該伺服器是一個全新的 ubuntu 伺服器 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 安裝修復這個問題)。

結果證明這是一個相當尷尬的錯誤。

在裡面/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***"

引用自:https://serverfault.com/questions/528421