A blogban leírtak a szerzők saját véleménye, és nem a munkáltatójuké.

Linux bootolása hálózatról WDS segítségével

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:

wds-pxe-boot-4A 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.

wds-pxe-boot-1– 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.

wds-pxe-boot-3– Itt pedig az látszik, amikor a GParted-et választottam:

wds-pxe-boot-2

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

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>