A Windows Deployment Servicest (WDS) sikerült egész jól belőnünk, a laborgépek újratelepítése simán megy vele most. Már csak egy dolog hiányzott: a WDS segítségével alapból csak WIM image-eket lehet hálózatról elindítani, nekünk pedig volt egy jó kis linuxos PXE szerverünk, mindenféle hasznos kis opcióval. Lehetett memtest-et, valami minimal Linuxot vagy akár ESXi-t is indítani róla. Eddig, ha valami kellett róla, akkor leállítottuk a WDS-t, így az nem nyomta el a DHCP-ben beállított 66-os opciót (Boot Server Host Name), és akkor a kliensek a pxelinux menüjét kapták meg. Ennél azért szerencsére van jobb megoldás is:)
Olyat nem találtam, hogy az egyik PXE szerver átdobja a kérést egy másiknak (mintha azt olvastam volna valahol, hogy ez ilyet nem is lehet), de azt be lehet állítani, hogy a WDS szerverre is felrakunk egy pxelinuxot, annak a menüje fogadja a klienseket, és ott egy opció a WDS eredeti boot menüjének megjelenítése. A végeredmény valami hasonló lesz:
A következő lépéseket kell elvégezni ehhez:
1. Creating a PXE Boot menu for deploying Linux with Windows Deployment Services (WDS): ezt a leírást kell követni. Nagy vonalakban annyi, hogy át kell másolni a pxelinux boot programját és a menü megjelenítéséhez szükséges fájlokat, létre kell hozni a konfigurációs fájlját, fel kell másolni azokat a fájlokat, amiket a pxelinux segítéségével akarunk kiszolgálni, majd be kell állítani, hogy a pxelinux.com legyen az alapértelmezett boot program és ne a pxeboot.com.
2. Ez az utolsó lépés a trükkös: a Windows Server 2008 R2-ben lévő WDS-ben már nincs ilyen beállítás a szerver beállításainál a Boot fülön. Helyette ezt parancssorból kell megtenni:
wdsutil /set-server /bootprogram:boot\x86\pxelinux.com /architecture:x86 wdsutil /set-server /N12bootprogram:boot\x86\pxelinux.com /architecture:x86
Ezt utána meg kell csinálni x64-re is, ha vannak olyan klienseink is (a WDS alapértelmezésként automatikusan detektálja a kliens architektúráját, és az ennek megfelelő programot és menüt mutatja). Az N12bootprogram az a program, ami akkor indul el, amikor olyan üzemmódban van a szerver, hogy nem kell F12-et nyomni a hálózatról bootoláshoz a kliensen a WDS elindítása után (ez állítható a Boot fülön). További információ a wdsutil leírásában.
3. A fenti leírásból hiányzik, de ahhoz, hogy az AbortPXE opció működjön, a $WDSRoot\boot\$arch könyvtárban lévő abortpxe.com-ot is le kell másolni abortpxe.0 néven.
4. Én beállítottam a még a GParted Live image-et a fenti leírásnak megfelelően. Ott csak az működött, hogy http-vel szedi le a squashfs fájlt, tftp esetén Access Violation hibaüzenetet dobott. Valószínűleg az a gond, hogy az új WDS nem szereti a /-t csak a \-t (ebben a leírásban vannak egyébként jó ötletek WDS-es tftp hibakeresésre), azt meg a GParted-ben lévő tftp kliens nem ette meg.
Hálózati forgalom
Végezetül pár Wiresharkból, hogy mi is történik a háttérben.
– Kliens elindulása, DHCP üzenetek: a 10.40.1.1 a DHCP szerver nálunk, a 10.40.1.61 a WDS szerver. A DHCP Ack üzenetben adja át a kliensnek, hogy először a wdsnbp.com fájlt kell letöltenie (ez írja, hogy Press F12 for WDS boot), majd utána a pxelinux.com-ot szedi le.
– pxelinux menü letöltése, majd WDS indítása: itt leszedi a menüt meg a pxelinux beállítását, majd a WDS opciót választottam. A pxelinux config fájljában az van, hogy ilyenkor a pxeboot.0-t indítsa (ami a pxeboot.n12 tulajdonképpen), az pedig utána elvégzi a WDS-es indulási folyamatot: bootmgr.exe letöltése, a WDS könyvtárában lévő BCD (Boot Configuration Database) betöltése, majd elkezdi betölteni a WIM fájlt.
– Itt pedig az látszik, amikor a GParted-et választottam:
Most már csak át kell migrálni a régi pxelinux beállításait, és élvezhetjtük a WDS és a pxelinux előnyeit együtt:-)
Micskei Zoltán