動機
我找不到我的隨身碟,剩下的sd卡也掉到某個床縫中,暫時拿不到 只好來研究怎麼用網路來裝OS了
原本用serva,好不容易用完,開機之後發現帳密不管怎麼打都不對,就只好自立自強了
PXE需要?
- DHCP server
- 發IP
- 教PXE cilent要載什麼檔案
- TFTP server
- embed中常用的file transfer protocol
這裡是用TFTPD64
網路topo
PXE server <=> L2 switch <=> 要被裝的電腦
怎麼搞PXE
取得WinPE
- 下載
Windows ADK
- 把winpe抽出來,這裡拉amd64
copype.cmd amd64 C:\winpe_amd64
- 做pxe需要的資料夾,這裡需要
- winpe的PXE 開機檔案
- 把winpe掛載上去,
Dism /mount-image /imagefile:c:\winpe_amd64\media\sources\boot.wim /index:1 /mountdir:C:\winpe_amd64\mount
- copy PXE 開機檔案
copy c:\winpe_amd64\mount\windows\boot\pxe\*.* c:\tftproot\Boot
- boot.sdi
copy C:\winpe_amd64\media\boot\boot.sdi c:\tftproot\Boot
- boot.wim
copy C:\winpe_amd64\media\sources\boot.wim c:\tftproot\Boot
- 字型
copy C:\winpe_amd64\media\Boot\Fonts c:\tftproot\Boot\Fonts
- BCD(bootloader)
- 生BCD檔
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
- 這裡的root就是tftp的root
bcdedit /store c:\BCD /create /d "winpe boot image" /application osloader
- 把剛剛的GUID複製下來
- 設定BCD
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} path \windows\system32\winload.exe
- 這個是boot.wim裡面的path,但要注意是用BIOS還是UEFI
winload.exe
會用BIOSwinload.efi
會用UEFI
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} systemroot \windows
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} detecthal Yes
bcdedit /store c:\BCD /set {18baf49f-d429-11eb-b837-000c299a782c} winpe Yes
bcdedit /store c:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store c:\BCD /set {bootmgr} timeout 30
bcdedit /store c:\BCD -displayorder {18baf49f-d429-11eb-b837-000c299a782c} -addlast
- copy BCD
copy c:\BCD c:\tftproot\Boot
- (Optional) 如果要用UEFI,要複製bootmgfw.efi
copy C:\winpe_amd64\mount\Windows\Boot\EFI\bootmgfw.efi c:\tftproot\Boot
自定義winpe啟動腳本
改Windows\System32\startnet.cmd
,所以用剛剛的例子路徑是
c:\winpe_amd64\mount\Windows\System32\startnet.cmd
這裡直接把iso透過smbda掛上去,再call setup.exe
net use Z: \\192.168.123.1\TFTPRoot\iso iso /user:192.168.123.1\iso
Z:setup.exe
改完要寫回去boot.wim
Dism /Unmount-Image /MountDir:"C:\WinPE_amd64\mount" /commit
net use一直出事
- 一個是
net use
的問題,我試了好幾次最後試出來是上面那樣 - windows的網路權限問題
- 按
Win + R
輸入secpol.msc
Local Policies -> Security Options
- 裡面找
Network Security: LAN Manager authentication level
- 換成
LM and NTLM – use NTLMv2 session security if negotiated
- reboot
也可以用rededit改找
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
改成5
怎麼設定tftp
tftp主要就是
- 設定root
- 勾pxe支援(如果有的話)
- 如果是在linux上跑,還要多remap,因為path的表示方式不一樣
大概像下面這樣
怎麼設定dhcp
dhcp除了基本的ip range還有一個是boot file
boot file就是pxe client要怎麼載入初始環境(win是winpe, linux是initrd)的指示檔案
這裡是用UEFI,所以路徑放\Boot\bootmgfw.efi
大概像下面這樣
怎麼call到iso
- 在tftp的root中放一個iso的資料夾,裡面放iso的內容
- 設定成公開(要可以用smbda連)
- 創一個有密碼的帳號(我這裡是給iso/iso)
Ref
設定 PXE 伺服器以載入 Windows PE Utils, Windows, 10 Password Error with Samba Share If you try to mount a share on windows 2008 R2 server the system still prompt for credential even if you type them correctly 設定 PXE 伺服器以載入 Windows PE Boot WINPE over PXE on a UEFI computer WinPE: Mount and Customize