Mire jelent megoldást?
Ritka de kerülhetünk olyan helyzetbe mikor nincs kéznél sem CD-rom sem floppy maghajtó csak egy UTP kábelt fogadni képes hely figyel a számítógépben. Az én esetemben is hasonló probléma ütötte fel a fejét, volt itthon egy laptop aminek a CD-romját akárhogy is erőlködtünk nem tudtuk működésre bírni. Floppy nincs, külső usb interfésszel rendelkező CD meghajtó sok pénzt emésztene fel, így egy lehetőség maradt hálózatról telepíteni a rendszert. Abban az esetben is jó szolgálatot tehet ez a módszer ha több gépre kell föltelepítenünk ugyanazt az operációs rendszert. Semmi más nem kell hozzá mint egy Ubuntu operációs rendszert futtató számítógép szélessávú internetkapcsolattal. Mindemellett a művelethez segítségül fogjuk hívni a PXE(http://en.wikipedia.org/wiki/Preboot_Execution_Environment) erejét és a DNSmasq egy egyszerű dns és dhcp kiszolgáló képességeit.
Nagy vonalakban:
PXE(Preboot eXecution Environment (PXE, aka Pre-Execution Environment, vagy 'pixie')) egy olyan környezet amely lehetővé teszi, hogy az adott számítógép hálózatról bootoljon függetlenül bármilyen adattártól(pl.:hdd) vagy operációs rendszertől. Az Intel egy projektjének(Wired for Management) részeként lett bemutatva. A következő protokollokat használja IP, UDP, DHCP és TFTP.
DNSmasq egy dhcp és dns szerver kisebb hálózatok számára, a célnak tökéletesen megfelel.
A szükséges programok telepítése:
$ sudo aptitude install install dnsmasq atftp atftpd
Készítsünk egy könyvtárat a az atftpd-nek(alapértelmezett beállítások mellett /tftpboot de ez megváltoztatható, bővebben a manualban lehet tájékozódni):
$ sudo mkdir /tftpboot
Belépünk:
$ cd /tftboot
Letöltjük a telepítéshez használt netboot installert:
$ wget http://archive.ubuntu.com/ubuntu/dists/gutsy/main/installer-i386/current/images/netboot/netboot.tar.gz
Aztán kicsomagoljuk:
$ tar zxf netboot.tar.gz
Megváltoztatjuk a tulajdonost:
$ sudo chown -R nobody: .
Az első résszel már készen is vagyunk.
A hálózat beállítása( a példában eth0-on keresztül fog kommunikálni a kliens és a szerver, értelemszerűen be kell helyettesíteni (eth2, 1 stb.) a saját konfiguráció alapján):
Parancssoros megoldás:
Nyissuk meg a konfigurációs állományt:
$ sudo gedit /etc/network/interfaces
Adjuk hozzá ezen sorokat:
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
auto eth0
Mentsük el és zárjuk be az ablakot.
Grafikus megoldás:
Rendszer-> Adminisztráció -> Hálózat
A használni kívánt hálózati csatolót(itt:eth0) aktiváljuk(pipa), aztán a tulajdonságoknál a következőket állítjuk be:
Ip : 192.168.0.1
Netmask : 255.255.255.0
Bezárjuk az ablakokat és újraindítjuk a hálózatot:
$ sudo /etc/init.d/networking restart
Mindkét megoldásnál szükséges!
A DNSmasq és a tftpd beállítása:
DNSmasq:
Ha futna állítsuk le:
$ sudo /etc/init.d/dnsmasq stop
Nyissuk meg a konfigurációs fájlt:
$ sudo gedit /etc/dnsmasq.conf
És Keressük meg a következő részeket(minden rész előtt találunk egy #-t ezt töröljük ki a megadott sorok elől, azaz kommentezzük ki őket, majd írjuk be a következő értékeket):
dhcp-range=192.168.1.2,192.168.1.6,24h (ezzel szabályozhatjuk az ip kiosztás tartományát)
dhcp-boot=pxelinux.0,"server_ip" (pl.:192.168.0.1)
Mentsük el a változásokat a Ctrl+s billentyűkombinációval ezután zárjuk be az ablakot. A dhcp-range beállítása más értékekkel is működik, én most ezt a tartományt választottam a példában.
Tftpd:
Állítsuk le ha futna:
$ sudo /etc/init.d/atftpd stop
Nyissuk meg a konfigurációs fájlt:
$ sudo gedit /etc/default/atftpd
Győződjünk meg róla, hogy ezek az értékek szerepelnek a konfigurációs állományban.(a két # jel közötti részt kell figyelembe venni)
#USE_INETD=false
OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot"#
Mentsük a változásokat és zárjuk be az ablakot.
Akik semmilyen formában nem használják(firestarter, shorewall stb...) a csomagszűrőt azok ezt a részt átugorhatják.
Iptables csomagszűrő beállítása. A következő portokra lesz szükségünk: (1758, 67:68, 53. 69)
Akik használtak már iptablest azoknak nem okoz problémát a művelet, akik nem biztosak magukban azok az alább található megoldást válasszák.
Ki is kapcsolhatjuk a csomagszűrőt(mindenképpen egyszerűbb de egyáltalán nem biztonságos, azok akik router mögül interneteznek nyugodtan használhatják ezt az opciót a telepítés erejéig. Firestarter felhasználók a szokásos módon kikapcsolhatják a tűzfalat.):
$ sudo iptables -F
$ sudo iptables -X
$ sudo iptables -P INPUT ACCEPT
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -P OUTPUT ACCEPT
$ sudo iptables -t mangle -F 2>/dev/null
$ sudo iptables -t mangle -X 2>/dev/null
$ sudo iptables -t nat -F 2>/dev/null
$ sudo iptables -t nat -X 2>/dev/null
Índítsuk el a szolgáltatásokat:
$ sudo /etc/init.d/atftpd
$ sudo /etc/init.d/dnsmasq
Ellenőrzés:
Iptables teszt: ha kikapcsoltuk a csomagszűrőt akkor kilistázás alkalmával nem szabad, hogy egyetlen szabály is megjelenjék. Az alap Policy -nál pedig mindenhol ACCEPT -nek kell szerepelnie.
$ sudo iptables -L
$ sudo iptables -t nat -L
$ sudo iptables -t mangle -L
DNSmasq teszt:
$ sudo netstat -nulp | grep '67.*dnsmasq' # should display udp 0 0 0.0.0.0:67 0.0.0.0:* /dnsmasq
Atftpd teszt:
$ sudo netstat -nulp | grep atftpd # should display udp 0 0 0.0.0.0:69 0.0.0.0:* /atftpd
Ellenőrizzük, hogy megkapjuk e a PXE boot kernelt:
$ cd /tmp
$ echo 'get pxelinux.0' | atftp SERVER_IP
(jelen esetben 192.168.0.1)
$ ls -l pxelinux.0
# -rw-r--r-- 1 hm hm 13552 2008-03-05 13:05 pxelinux.0 (ehhez hasonló sornak kell szerepelnie a terminálban)
A rendszer már csak arra vár, hogy összekössük gépeinket és indtsuk a kliens gépet.A biosban ne felejtsük el átállítani a boot sorrendet, a
hálózati bootolás opciót állítsuk be elsőnek! A kliensgép elindítása után már a szokásos Ubuntu telepítő képernyő villan fel szemünk előtt.
Forrás : http://en.wikipedia.org/wiki/Preboot_Execution_Environment, https://help.ubuntu.com/community/Installation/QuickNetboot