4.6. Příprava souborů pro zavedení ze sítě pomocí TFTP

Pokud je váš počítač připojen do lokální sítě, můžete jej zavést ze sítě pomocí TFTP. Jestliže chcete pomocí TFTP zavést instalační systém, musíte na vzdáleném počítači nakopírovat zaváděcí soubory do specifických adresářů a povolit zavádění vaší stanice.

Musíte nastavit TFTP server a pro CATS stroje BOOTP server nebo RARP nebo DHCP server.

Klientovi můžete sdělit jeho IP adresu protokolem RARP (Reverse Address Resolution Protocol) nebo BOOTP. BOOTP je IP protokol, který informuje počítač o jeho IP adrese a prozradí mu, odkud si má stáhnout zaváděcí obraz. DHCP (Dynamic Host Configuration Protocol) je flexibilnější, zpětně kompatibilní rozšíření protokolu BOOTP. Některé systémy mohou být nastaveny pouze pomocí DHCP.

Pro přenos zaváděcího obrazu ke klientovi se používá protokol TFTP (Trivial File Transfer Protocol). Teoreticky můžete použít server na libovolné platformě, která jej implementuje. Ukázky v této kapitole se vztahují k operačním systémům SunOS 4.x, SunOS 5.x (neboli Solaris) a GNU/Linux.

4.6.1. Nastavení RARP serveru

Pro úspěšné nastavení RARP serveru potřebujete znát ethernetovou adresu klienta (stanice, kterou zavádíte), jinými slovy MAC adresu. Pokud tuto informaci nemáte k dispozici, můžete zavést do záchranného (rescue) režimu (např. pomocí záchranné diskety) a použít příkaz /sbin/ifconfig eth0.

Na systémech používajících linuxové jádro řady 2.2 potřebujete zanést příslušný záznam do RARP tabulky udržované jádrem. Můžete toho dosáhnout příkazy:

/sbin/rarp -s jméno-klienta eternetová-adresa-klienta

/usr/sbin/arp -s ip-adresa-klienta eternetová-adresa-klienta

Pokud uvidíte hlášku

SIOCSRARP: Invalid argument

pravděpodobně budete muset zavést jaderný modul s rarp, nebo, pokud jej nemáte, překompilovat jádro s RARP podporou. Zkuste příkaz modprobe rarp a pak znovu spusťte předchozí příkazy.

Na systémech používajících jádro řady 2.4 žádný RARP modul neexistuje a místo něj byste měli použít program rarpd. Postup je podobný jako u SunOS v následujícím odstavci.

Pokud používáte SunOS, musíte zaručit, že ethernetová adresa klienta bude zaznamenána v databázích ,,ethers'' (buďto v souboru /etc/ethers nebo pomocí NIS/NIS+) a ,,hosts''. Nyní můžete spustit RARP démona. V systému SunOS 4 spusťte (jako superuživatel root) /usr/etc/rarpd -a; v systému SunOS 5 použijte /usr/sbin/rarpd -a.

4.6.2. Nastavení BOOTP serveru

V GNU/Linuxu můžete použít v zásadě dva BOOTP servery. Jednak je to CMU bootpd a druhý je vlastně DHCP server — ISC dhcpd. V distribuci Debian GNU/Linux jsou k dispozici v balíčcích bootp a dhcp.

Pokud chcete použít CMU bootpd, musíte nejprve odkomentovat (nebo přidat) jeden důležitý řádek v souboru /etc/inetd.conf. V systému Debian GNU/Linux můžete spustit update-inetd --enable bootps a následně restartovat inetd pomocí /etc/init.d/inetd reload. V jiných systémech přidejte řádku, která bude vypadat zhruba takto:


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

Nyní musíte vytvořit soubor /etc/bootptab. Jeho struktura je velmi podobná té, co používají staré dobré soubory printcap, termcap, a disktab ze systému BSD. Bližší informace jsou v manuálové stránce bootptab. Pokud používáte CMU bootpd, musíte rovněž znát hardwarovou (MAC) adresu klienta. Následuje příklad souboru /etc/bootptab:


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

Z příkladu budete muset změnit minimálně volbu ,,ha'', která značí hardwarovou adresu klienta. Volba ,,bf'' specifikuje soubor, který si klient stáhne protokolem TFTP, viz 4.6.5 – „Přesun TFTP obrazů na místo“.

V kontrastu s předchozím je nastaveni BOOTP pomocí ISC dhcpd velmi jednoduché, protože dhcpd považuje BOOTP klienty za speciální případ DHCP klientů. Některé architektury však vyžadují pro zavádění klientů pomocí BOOTP komplikované nastavení. Je-li to váš případ, přečtěte si 4.6.3 – „Nastavení DHCP serveru“. V opačném případě stačí v konfiguračním souboru vložit do bloku podsítě, ve které se nachází klient, direktivu allow bootp. Potom restartujte dhcpd server příkazem /etc/init.d/dhcpd restart.

4.6.3. Nastavení DHCP serveru

V době psaní tohoto manuálu existuje pouze jeden svobodný DHCP server — ISC dhcpd. Debian GNU/Linux jej obsahuje jako balík dhcp. Následuje ukázka jednoduchého konfiguračního souboru (obvykle /etc/dhcpd.conf):


option domain-name "priklad.cz";
option domain-name-servers ns1.priklad.cz;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "karel";

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/tftpboot.img";
  server-name "karel";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB; 
  fixed-address 192.168.1.90;
}

V tomto příkladu máme jeden server jménem karel, který obstarává práci DHCP a TFTP serveru a také slouží jako brána do sítě. Ve svém nastavení si musíte změnit alespoň doménové jméno, jméno serveru a hardwarovou adresu klienta. Položka filename by měla obsahovat název souboru, který si klient stáhne přes TFTP.

Po úpravách konfiguračního souboru musíte restartovat dhcpd příkazem /etc/init.d/dhcpd restart.

4.6.3.1. PXE zavádění

Další příklad souboru dhcp.conf tentokrát využívá metodu PXE (Pre-boot Execution Environment) protokolu TFTP.


option domain-name "priklad.cz";

default-lease-time 6048;
max-lease-time 604800;

allow booting;
allow bootp;

# Následující odstavec si musíte upravit dle skutečnosti
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.255;
# adresa brány 
# (například pro přístup k internetu)
  option routers 192.168.1.1;
# dns server, který chcete použít
  option domain-name-servers 192.168.1.3;
}

host tftpserver {
# ip adresa tftp serveru
  fixed-address 192.168.1.90;
# hardwarová adresa tftp serveru
  hardware ethernet 01:23:45:67:89:AB;
}

group {
 next-server 192.168.1.3;
 host tftpclient {
# hardwarová adresa tftp klienta
  hardware ethernet  00:10:DC:27:6C:15;
  filename "/tftpboot/pxelinux.0";
 }
}

Při PXE zavádění není soubor pxelinux.0 obraz jádra, ale zavaděč (viz 4.6.5 – „Přesun TFTP obrazů na místo“ dále v textu).

4.6.4. Povolení TFTP serveru

Aby vám TFTP server fungoval, měli byste nejprve zkontrolovat, zda je tftpd povolen. Toho obvykle docílíte následující řádkou v souboru /etc/inetd.conf:


tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /tftpboot

Podívejte se do souboru /etc/inetd.conf a zapamatujte si název adresáře, jehož jméno je za in.tftpd; budete jej dále potřebovat. Přepínač -l umožňuje některým verzím in.tftpd zaznamenávat všechny požadavky, které mu byly zaslány, do systémových logů. To je vhodné zejména v situaci, kdy zavádění neprobíhá tak, jak má. Pokud musíte změnit obsah souboru /etc/inetd.conf, musíte proces inetd upozornit, aby aktualizoval svá nastavení. Na počítači s Debianem stačí spustit /etc/init.d/inetd reload (pro slink/2.1 a starší použijte /etc/init.d/netbase reload). Na jiných systémech musíte zjistit ID běžícího procesu inetd a spustit kill -HUP inetd-pid.

Abyste mohli využít PXE (Pre-boot Execution Environment) metodu TFTP zavádění, musíte mít TFTP server s podporou tsize, například tftp-hpa.

4.6.5. Přesun TFTP obrazů na místo

Dále je potřeba umístit příslušný TFTP obraz (viz ???) do adresáře, kde má tftpd uloženy obrazy, obvykle /tftpboot. Bohužel TFTP klient očekává jméno souboru v určitém tvaru, pro který neexistují žádné závazné standardy. Proto ještě musíte na příslušný obraz vytvořit odkaz, který tftpd použije pro zavedení konkrétního klienta.

TFTP klient často hledá soubor hex-ip-adresa-klienta-architektura. Tento název se spočítá relativně jednoduše: K části hex-ip-adresa-klienta dojdete tak, že vyjádříte každý bajt IP adresy klienta v šestnáctkové soustavě. Pokud máte po ruce program bc klidně jej použijte. Příkazem obase=16 nastavíte výstup na hexadecimální a potom už jen zadáte jednotlivé části IP adresy. Pro proměnnou architektura vyzkoušejte různé hodnoty.

Pro PXE zavádění můžete použít zavaděč pxelinux.0, jež je součástí balíku syslinux. Zavaděč nakopírujte do adresáře /tftpboot. Tamtéž vytvořte podadresář /tftpboot/pxelinux.cfg, který bude obsahovat textový soubor default. Možný obsah souboru:


default lanlinux
prompt 1

label lanlinux
  kernel tftpboot.img
  append load initrd=root.bin devfs=mount

Parametr devfs=mount je podstatný, protože bez něj by nešlo připojit kořenový souborový systém ze souboru root.bin.

Závěrem nakopírujte do adresáře /tftpboot soubory tftpboot.img a root.bin (naleznete je na ftp archivech Debianu).

4.6.6. TFTP instalace na systémech s nedostatkem paměti

Na některých systémech se standardní instalační RAMdisk a zaváděcí TFTP obraz nemusí vlézt do paměti. V takovém případě musíte navíc přes NFS připojit také kořenový adresář. Tento postup je shodný s instalací na bezdiskové nebo bezdatové klienty.

Nejprve proveďte všechny kroky podle 4.6 – „Příprava souborů pro zavedení ze sítě pomocí TFTP“.

  1. Nakopírujte obraz linuxového jádra (a.out verzi pro vaši architekturu) na TFTP server.

  2. Na NFS serveru rozbalte kořenový archiv. (NFS i TFTP mohou běžet na stejném počítači):

    
    # cd /tftpboot
    # tar xvzf root.tar.gz
    
    

    Ujistěte se, že používáte GNU tar, protože některé implementace (konkrétně ta na SunOS) pracují (chybně) se zařízeními jako s obyčejnými soubory.

  3. Na klienta exportujte adresář /tftpboot/debian-sparc-root (s rootovským přístupem). Tj. do souboru /etc/exports přidejte následující řádek (toto je GNU/Linux syntaxe - pro SunOS by to mělo být podobné):

    
    /tftpboot/debian-sparc-root klient(rw,no_root_squash)
    
    

    Poznámka: ,,klient'' je jméno nebo IP adresa instalovaného počítače tak, jak ji vidí server, když se klient zavádí.

  4. Vytvořte symbolický odkaz z klientské IP adresy, v tečkové notaci, na soubor debian-sparc-root v adresáři /tftpboot. Například pokud je IP adresa klienta 192.168.1.3, napište:

    
    # ln -s debian-sparc-root 192.168.1.3
    
    

4.6.7. Instalace za použití TFTP a NFS

Instalace přes TFTP a použití kořenového adresáře přes NFS je podobné jako 4.6.6 – „TFTP instalace na systémech s nedostatkem paměti“, protože nebudete do paměti nahrávat RAMdisk, ale zavedete systém z kořenového souborového systému připojeného přes NFS. Musíte pak nahradit symbolický odkaz, aby ukazoval na jádro (například linux-a.out) a ne na tftp obraz.

RARP/TFTP vyžadují, aby všechny démony běžely na stejném serveru. (Stanice totiž odešle TFTP požadavek tomu, kdo odpoví na RARP zprávu).

Nyní máte nachystáno vše potřebné a můžete přejít k zavedení klientské stanice — 5.1.6 – „Zavedení z TFTP“.