4.5. Fájlok előkészítése TFTP hálózati bootoláshoz

Ha a géped csatlakozik egy helyi hálózathoz, akkor lehetőség van arra, hogy egy másik gépről, TFTP segítségével bootolj. Ha egy másik gépről szeretnéd elindítani a telepítési rendszert, a boot fájlokat az adott gépen meghatározott helyekre kell elhelyezni, és a gépet úgy kell konfigurálni, hogy támogassa a saját géped bootolását.

Be kell állítanod egy TFTP szervert, és sok gép esetében egy DHCP szervert, vagy BOOTP szervert.

A BOOTP egy IP protokoll, amely tájékoztatja a számítógépet az IP-címéről és arról, hogy a hálózaton hol találja meg a boot képet. A DHCP (Dynamic Host Configuration Protocol) egy rugalmasabb, visszafelé kompatibilis kiterjesztése a BOOTP-nek. Egyes rendszerek csak DHCP-n keresztül konfigurálhatók.

Az egyszerű fájlátviteli protokollt (TFTP) használják a boot kép kiszolgálására a kliensnek. Elméletileg bármilyen szerver, bármilyen platformon, amely megvalósítja ezeket a protokollokat, használható. Az ebben a részben található példákhoz SunOS 4.x, SunOS 5.x (ismertebb nevén Solaris) és GNU/Linux parancsokat fogunk megadni.

[Megjegyzés] Megjegyzés

Egy Debian GNU/Linux szerverhez a tftpd-hpa használatát ajánljuk. Ugyanaz az írója, mint a syslinux bootloadernek, így ez a legkevésbé valószínű, hogy problémát okoz. Egy jó alternatíva az atftpd.

4.5.1. DHCP szerver beállítása

Egy ingyenes DHCP szerver szoftver az ISC dhcpd. Debian GNU/Linux rendszeren a isc-dhcp-server csomagot ajánljuk. Itt egy példa konfigurációs fájl (lásd /etc/dhcp/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Ebben a példában van egy servername szerver, amely elvégzi a DHCP szerver, TFTP szerver és hálózati átjáró minden feladatát. Szinte biztosan módosítanod kell a domain-név opciókat, valamint a szerver nevét és a kliens hardvercímét. A filename opciónak annak a fájlnak a nevét kell megadnod, amelyet TFTP-n keresztül fogsz letölteni.

Miután szerkesztetted a dhcpd konfigurációs fájlt, indítsd újra ezzel a paranccsal: /etc/init.d/isc-dhcp-server restart.

4.5.1.1. PXE bootolás engedélyezése a DHCP konfigurációban

Itt van egy másik példa egy dhcp.conf fájlra, amely a Pre-boot Execution Environment (PXE) módszert használja a TFTP-hez.

option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# A következő bekezdést a saját esetedhez kell igazítani
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# az átjáró cím, amely eltérhet
# (például internet eléréshez)
  option routers 192.168.1.1;
# add meg a használni kívánt DNS-t
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp kliens hardvercíme
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Fontos megjegyezni, hogy PXE bootolás esetén a kliens fájlneve, pxelinux.0, egy boot loader, nem pedig egy kernel kép (lásd az alábbi 4.5.4. szakasz - Helyezd át a TFTP képeket a megfelelő helyre részt).

Ha a géped UEFI-t használ a bootoláshoz, meg kell adnod egy UEFI gépekhez megfelelő boot loader-t, például

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp kliens hardvercíme
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}

4.5.2. BOOTP szerver beállítása

Két BOOTP szerver érhető el GNU/Linux rendszerekhez. Az egyik a CMU bootpd. A másik valójában egy DHCP szerver: az ISC dhcpd. Debian GNU/Linux alatt ezek a bootp és az isc-dhcp-server csomagokban találhatók meg.

A CMU bootpd használatához először ki kell kommentelned (vagy hozzá kell adnod) a megfelelő sort a /etc/inetd.conf fájlban. Debian rendszeren futtathatod az update-inetd --enable bootps parancsot, majd az /etc/init.d/inetd reload parancsot. Ha a BOOTP szervered nem Debianon fut, akkor a kérdéses sor így nézzen ki:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Most létre kell hoznod egy /etc/bootptab fájlt. Ennek a formátuma hasonló a régi BSD printcap, termcap és disktab fájlokéhoz, ami ismerős, de kissé rejtélyes lehet. További információért nézd meg a bootptab kézikönyv oldalát. A CMU bootpd esetében tudnod kell a kliens hardver (MAC) címét. Itt van egy példa /etc/bootptab fájlra:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Legalább a ha opciót kell megváltoztatnod, amely a kliens hardver címét adja meg. A bf opció azt a fájlt jelzi, amelyet a kliensnek TFTP-n keresztül le kell töltenie; további részletekért lásd a 4.5.4. szakasz - Helyezd át a TFTP képeket a megfelelő helyre részt.

Ezzel szemben, a BOOTP beállítása az ISC dhcpd segítségével igazán egyszerű, mivel a BOOTP klienseket a DHCP kliensek egy speciális eseteként kezeli. Néhány architektúra bonyolult konfigurációt igényel a BOOTP-n keresztüli kliens indításhoz. Ha a tiéd is ilyen, olvasd el a 4.5.1. szakasz - DHCP szerver beállítása szakaszt. Ellenkező esetben valószínűleg elég lesz, ha egyszerűen hozzáadod az allow bootp direktívát annak a hálózati alhálózatnak a konfigurációs blokkjához, amelyik a klienst tartalmazza a /etc/dhcp/dhcpd.conf fájlban, majd újraindítod a dhcpd-t a /etc/init.d/isc-dhcp-server restart paranccsal.

4.5.3. A TFTP szerver engedélyezése

Ahhoz, hogy a TFTP szerver készen álljon, először győződj meg róla, hogy a tftpd engedélyezve van.

A tftpd-hpa esetében két módon lehet futtatni a szolgáltatást. A rendszer inetd démonja indíthatja el igény szerint vagy önálló démonként is beállítható. Hogy melyik módszer kerül alkalmazásra, az a csomag telepítésekor választható ki, és a csomag újrakonfigurálásával megváltoztatható.

[Megjegyzés] Megjegyzés

Régebben a TFTP szerverek a /tftpboot könyvtárat használták a képek kiszolgálására. Azonban a Debian GNU/Linux csomagok más könyvtárakat használhatnak a Filesystem Hierarchy Standard (Fájlrendszer hierarchia szabványnak) betartása érdekében. Például a tftpd-hpa alapértelmezés szerint a /srv/tftp könyvtárat használja. Előfordulhat, hogy ennek megfelelően módosítanod kell a szakaszban található konfigurációs példákat.

Minden Debian-ban elérhető in.tftpd alternatíva alapértelmezetten naplózza a TFTP kéréseket a rendszer naplóiba. Néhányuk támogatja a -v argumentumot a részletesség növelésére. Ajánlott ellenőrizni ezeket a naplóüzeneteket, ha boot problémák merülnek fel, mivel ezek jó kiindulópontot jelentenek a hibák okának diagnosztizálásához.

4.5.4. Helyezd át a TFTP képeket a megfelelő helyre

Ezután helyezd el a szükséges TFTP boot képet, amelyet a 4.2.1. szakasz - Hol találhatóak a telepítési fájlok szakaszban találsz, a tftpd boot képek könyvtárába. Lehet, hogy létre kell hoznod egy linket ahhoz a fájlhoz, amelyet a tftpd egy adott kliens indításához fog használni. Sajnos a fájlnevet a TFTP kliens határozza meg, és nincsenek szigorú szabványok rá.

PXE bootoláshoz minden szükséges beállítás megtalálható a netboot/netboot.tar.gz tarballban. Egyszerűen csomagold ki ezt a tarballt a tftpd boot képek könyvtárába. Győződj meg róla, hogy a dhcp szerver úgy van beállítva, hogy a pxelinux.0 fájlnevet adja át a tftpd-nek indítási céllal. UEFI gépeknél egy megfelelő EFI boot képnevet kell megadnod (például /debian-installer/amd64/bootnetx64.efi).