2012. március 22., csütörtök

PXE-boot szerver Ubuntu 12.04-en - első rész

Az előző alkalommal eljutottunk odáig, hogy működik az Ubuntu 12.04-re telepített DHCP-szerver. Megnéztük a logot, és ad IP-címet. Egyelőre azonban nincs a kliens gépen operációs rendszer. Szeretnénk telepíteni egyet, mégpedig a hálózatunkon keresztül.

Ennek a módszere vázlatosan a következő:

  1. A kliens gépen beállítjuk, hogy próbáljon a hálózatról bootolni.
  2. A kliens bekapcsoláskor IP-címet kér.
  3. A DHCP-szerverünk válaszol neki. Nem csak IP-címet ad, hanem megmondja azt is, hogy a kliens - mármint ha hálózatról akar bootolni - a szép új IP-cím birtokában a hálózat melyik gépétől kérjen ehhez szükséges fájlt, és azt is, hogy mi ennek a fájlnak a neve.
  4. A kliens elmegy a megadott géphez, elkéri a megadott fájl, mégpedig TFTP-n. (A Trivial FTP egy olyan fájlátviteli protokoll, ami a "rendes" FTP-nél egyszerűbb - például abban is, hogy csak teljes elérési úttal megadott fájlok tölthetők le vele - mappalistázásra például nincs mód.)
  5. A TFTP-szerver odaadja a kért fájlt, ami dolgozni kezd a kliensen. Innentől az van, amit a TFTP-szervertől kapott fájl csinál. Lehet 
    • egy induló operációs rendszer, 
    • vagy egy menü, amiből kiválaszthatjuk, hogy több rendszer közül mit indítunk, 
    • vagy egy telepítő, ami majd további fájlok letöltésével (ezt már nem kell TFTP-vel megtenni) operációs rendszert telepít a helyi gépre.
Na, akkor lássunk neki.
A lenti képen a kliens gép képernyője látható, amint a gép épp arról panaszkodik, hogy, bár IP-címet kapott, nem mondta meg neki senki, hogy milyen fájlt kéne letöltenie a bootoláshoz.
Elsőként ezen segítünk. Beírunk két új sort az /etc/dhcp/dhcpd.conf fájlba:
ddns-update-style none;
authoritative;
log-facility local7;

subnet 192.168.168.0 netmask 255.255.255.0 {
    #A szerver külső kártyáján lévő háló.
    #Csak definiáljuk az alhálót, nem írunk bele semmit.
    #Azért tesszük ide, mert a DHCP-szerver szeret tudni az általa nem kezelt hálózatokról is.
}


subnet 192.168.56.0 netmask 255.255.255.0 {
    range 192.168.56.200 192.168.56.220;
    option routers 192.168.56.101;
    option domain-name-servers 192.168.56.101;
    option domain-name "itthon.cucc";
    default-lease-time 300;
    max-lease-time 600;
    next-server 192.168.56.101;
    filename "pxelinux.0";
}
Az első sor azt mondja meg, hogy kitől kell kérni a fájlt. Ez tehát a TFTP-szerver IP-címe. Ha a TFTP-szerver ugyanazon a gépen van, mint a DHCP-szerver, akkor elvileg ez a sor nem kell. Én azonban maradok old-school, és kiírom. A második sor azt mondja meg, hogy a bootoló gépnek milyen nevű fájlt kell kérnie a TFTP-szervertől.

Ha a fájlt módosítottuk, kiadhatunk egy
sudo service isc-dhcp-server restart
parancsot.

A bootoló gép képernyője ilyen lesz:
Látjuk, hogy igyekszik betölteni a fájlt. Mondjuk nem fog neki menni, mert ugye az a fájl még nincs ott, sőt, még TFTP-szervert sem telepítettünk.

Holnap ezt fogjuk megtenni.

2 megjegyzés:

Peter Mikaczo írta...

Szia.
Szeretném megköszönni a sorozatot, sokat segített számomra. Régebben már foglalkoztam PXE-boot szerver készítésével, de csak windows-on. Egy ideje a linux világában dolgozok, így neki fogtam linux-alapokon. Sokat segítettél :) Írásomban megemlítettelek, hisz tagadhatatlanul van olyan rész amit tőled vettem át / te mutattad az utat, és ezért köszönettel tartozom.

Köszi ismét, ne fejezd be, nagyon jó dolgokat írsz :)

Tisztelettel:
Mikáczó Péter

raerek írta...

Nagyon köszönöm:) Sorban állnak az ötletek a folytatáshoz, és nagyon remélem, hogy eljutok oda, hogy legyen időm:)