嘗試 PXE 引導到 Windows PE 時載入我的 BCD 時出錯
我正在嘗試使用 pxelinux 設置 ubuntu 伺服器,因此我可以使用 PXE 啟動 Windows PE。在客戶端機器上,我可以看到 pxelinux 本身工作,但下一個螢幕是這樣的:
這是我所做的:
步驟1:安裝
tftpd-hpa
並dhcp3
在伺服器上。該伺服器是一個全新的 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.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 安裝修復這個問題)。
結果證明這是一個相當尷尬的錯誤。
在裡面
/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***"