close

2020年第三季,換公司後,發現這邊的PXE是用iPXE,但是沒有WDS,卻有WDT
由於也不太會用到WDS,問了維護管理員同時是TL的同事,他很忙沒空弄,所以一直沒有WDS可以用
就在今年第二季,先前維護管理的同仁,高升去別間公司當主管,由於我在前公司有維護Lab service的經驗
,所以我老闆就把這個工作指定交接給我 (( 怎麼又找上門了勒XDD

iPXE的功能,就不多做介紹,詳細請參考官網:https://ipxe.org/ , 網友的介紹:https://www.jianshu.com/p/7c8b44d03edc
在前公司就有稍微看了一下iPXE的功能,由於沒那麼多時間去實驗跟測試,所以也沒實際摸過

 

WDS的安裝,請參考Benjr大大這篇:https://benjr.tw/100848
或是YT上的影片:https://www.youtube.com/watch?v=VNyk2zlhZpg / https://www.youtube.com/watch?v=DH5RNFqgvnY
差異的部分如下:
a) 由於DHCP Server/PXE Server 跟 WDS不同OS/不同台上:
DHCP: 選取 Do not listen on DHCP ports
b) WDS -> choose WDS-Server-Host in Servers, go to properties
- PXE Response page - PXE Response Policy: Respond to all client computers (known and unknown)
- Boot page: PXE boot Policy - Known clients/ Unknown clients: 皆選 Always continue the PXE boot
- TFTP page - Maximum Block Size: Maximum Block Size:設1024
     、 Variable Window Extension取消選取: Enable Variable Window Extension

然後把OSI加進去WDS
- Boot Images: add最新的OSI提供的就可以
- Install Images: add需要的OS;Group的部分,我是以各版本去區分

 

Chainloading Windows Deployment Services
https://ipxe.org/appnote/chainload_wds

Linux這邊的iPXE選單設定:這兩個寫法都可以用

修改iPXE選單:# vim boot.ipxe
:wds1
set wdsserver:ipv4 192.168.20.41 #WDS Server的IP
set net0/next-server ${wdsserver}
#set filename /boot/x64/bootmgfw.efi
#set net0.dhcp/filename:string /boot/x64/bootmgfw.efi # Use to listen port, it's not nessersary to set.
#set proxydhcp/filename:string /boot/x64/bootmgfw.efi # Use to proxydhcp, it's not nessersary to set.
chain tftp://${wdsserver}/boot/x64/wdsmgfw.efi # It's used to UEFI-Boot to WDS. UEFI Mode!
#chain tftp://${wdsserver}/boot\x64\bootmgfw.efi #Problem:  Need BCD ...etc
#chain tftp://${wdsserver}/boot\x64\wdsnbp.com # It's used to Legacy-Boot to WDS. Legacy Mode!

Mask起來的部分 #:
a) 加這兩行的時候
  #set net0.dhcp/filename:string /boot/x64/bootmgfw.efi # Use to listen port, it's not nessersary to set.
  #set proxydhcp/filename:string /boot/x64/bootmgfw.efi # Use to proxydhcp, it's not nessersary to set.
b) 需要漂亮寫法,加這行set filename /boot/x64/bootmgfw.efi設定變數,chain這行後面變成tftp://${wdsserver}/$filename
c) chain這行,如果用bootmgfw.efi,看起來還缺BCD之類的檔案
d) chain這行,如果用wdsnbp.com不能執行,看起來是給ipxe/pxe用在Legacy Mode用的吧? 或是給Windows Base的iPXE ?

:wds2
set wdsserver:ipv4 192.168.20.41 #WDS Server的IP
set netX/next-server ${wdsserver}
imgexec tftp://${wdsserver}/boot/x64/wdsmgfw.efi
#imgexec tftp://${wdsserver}/boot/x64/wdsnbp.com #It's used to ipxe on Windows OS.m

:wds1與:wds2的差異:
a) chain改用imgexec也可以用運作
b) imgexec 這行,如果用wdsnbp.com,不能執行,看起來是給ipxe/pxe用在Legacy Mode用的吧? 或是給Windows Base的iPXE ?

Ref:
https://thunderysteak.github.io/wds-with-ipxe
https://forum.ipxe.org/showthread.php?tid=6767
https://serverfault.com/questions/955120/chainloading-to-wds-from-ipxe-with-uefi?rq=1

 

----------------------------------------------------------------------------
同場加映:之前同事 填給MDT/WinPE的方法

:windows-net
set server_root http://192.168.20.5/media/w10
cpuid --ext 29 && set arch amd64 || set arch x86
kernel ${server_root}/wimboot
initrd ${server_root}/bootmgr                    bootmgr
initrd ${server_root}/bootmgr.efi                boot.sdi
initrd ${server_root}/Boot.wim                   Boot.wim
initrd ${server_root}/BCD                        BCD
initrd ${server_root}/boot.sdi                   boot.sdi
boot


:winpe-clean
set server_root http://192.168.20.5/media/wpe
cpuid --ext 29 && set arch amd64 || set arch x86
kernel ${server_root}/wimboot
initrd ${server_root}/bootmgr                    bootmgr
initrd ${server_root}/bootmgr.efi                boot.sdi
initrd ${server_root}/boot.wim                   Boot.wim
initrd ${server_root}/BCD                        BCD
initrd ${server_root}/boot.sdi                   boot.sdi
boot

 

----------------------------------------------------------------------------
IPv6 iPXE load WDS 的參數 | Update at 20240621

公司這邊的IPv6 PXE是使用Linux原生的PXE,這麼做的原因是有個交代
(對外可以說pxe,ipxe,cobbler...etc都有支援。
前陣子在另一個網段架了cobber,但他就是原生pxe,但美國的同事頭腦轉不過去,所以我也只能給他想要的)

前陣子發現IPv6 pxe/http 跑ubuntu有點問題,加上IPv6的http boot有點問題,有個空閒時間來修
原本以為把IPv4改成[IPv6]就可以了,沒想到事情沒有那麼麼簡單
Note: IPv6的iPXE(ipxe.efi),基於ipxe預設的行為,不能跟IPv4共用檔案,所以要重新build。

set wdsserver:ipv6 [3ffe:501:ffff:100::41]
set netX/next-server 改成IPv6,都不work
,試過的寫法
set netX/next-server 3ffe:501:ffff:100::41
set netX/next-server [3ffe:501:ffff:100::41]
set netX/next-server "[3ffe:501:ffff:100::41]"
set netX/next-server:ipv6 3ffe:501:ffff:100::41
set netX/next-server:ipv6 "3ffe:501:ffff:100::41"
set netX/next-server:ipv6 [3ffe:501:ffff:100::41]
set netX/next-server:ipv6 "[3ffe:501:ffff:100::41]"
...
有趣的是把-拿掉就不會報錯,但變成wds引導檔沒有next-server的參數,所以找不到wds server
...
最後填這樣
set wdsserver [3ffe:501:ffff:100::41]
netX/next-server 192.168.20.41
能運作了。至少是走IPv6去拿到wds引導檔,能測關鍵功能就好。

:wds1
set wdsserver [3ffe:501:ffff:100::41]
set netX/next-server 192.168.20.41
#set net0/next-server 192.168.20.41 #填net0或netX都能運作
set filename /boot/x64/bootmgfw.efi
chain tftp://${wdsserver}/boot/x64/wdsmgfw.efi # It's used to UEFI-Boot to WDS. UEFI Mode!
boot

:wds2
set wdsserver [3ffe:501:ffff:100::41]
set netX/next-server 192.168.20.41
imgexec tftp://${netX/NextServer}/boot/x64/wdsmgfw.efi
boot

----------------------------------------------------------------------------
使用Windows Base with PXE/DHCP的環境去設定WDS,網路上的公開資料超級多:
https://benjr.tw/279
https://www.vkernel.ro/blog/configuring-dhcp-and-firewalls-for-pxe-booting-with-wds
----------------------------------------------------------------------------
其他資料
這篇看起來很像用Linux原生的PXE檔案實現LINUX PXE+WDS,但沒提供設定方法:https://www.youtube.com/watch?v=8JqPTzr-ric
這篇看起來有很有料,但我沒仔細看:https://www.jianshu.com/nb/41189048
https://gist.github.com/mintsoft/e4bf8391cdc3a9d9014b185897cef41c

arrow
arrow
    創作者介紹
    創作者 吾給力 的頭像
    吾給力

    吾給力的部落格

    吾給力 發表在 痞客邦 留言(0) 人氣()