4.5. 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 často i DHCP server nebo BOOTP server.

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.

[Poznámka] Poznámka

Pokud na serveru běží Debian, doporučujeme použít TFTP server tftp-hpa od stejného autora jako zavaděč syslinux, protože by mezi nimi mělo nastat nejméně problémů. Vhodnou alternativou je i atftpd.

4.5.1. Nastavení DHCP serveru

Jedním ze svobodných DHCP serverů je ISC dhcpd. Debian GNU/Linux jej obsahuje jako balík isc-dhcp-server. Následuje ukázka jednoduchého konfiguračního souboru (obvykle /etc/dhcp/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.img";
  server-name "karel";
  next-server dalsiserver.priklad.cz;
  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/isc-dhcp-server restart.

4.5.1.1. Povolení 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 600;
max-lease-time 7200;

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 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;
}

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

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

If your machine uses UEFI to boot, you will have to specify a boot loader appropriate for UEFI machines, for example

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

4.5.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 isc-dhcp-server.

To use CMU bootpd, you must first uncomment (or add) the relevant line in /etc/inetd.conf. On Debian GNU/Linux, you can run update-inetd --enable bootps, then /etc/init.d/inetd reload to do so. Just in case your BOOTP server does not run Debian, the line in question should look like:

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

Now, you must create an /etc/bootptab file. This has the same sort of familiar and cryptic format as the good old BSD printcap, termcap, and disktab files. See the bootptab manual page for more information. For CMU bootpd, you will need to know the hardware (MAC) address of the client. Here is an example /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:

You will need to change at least the ha option, which specifies the hardware address of the client. The bf option specifies the file a client should retrieve via TFTP; see 4.5.4 – „Přesun TFTP obrazů na místo“ for more details.

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.5.1 – „Nastavení DHCP serveru“. V opačném případě stačí v konfiguračním souboru /etc/dhcp/dhcpd.conf vložit do bloku podsítě, ve které se nachází klient, direktivu allow bootp. Potom restartujte dhcpd server příkazem /etc/init.d/isc-dhcp-server restart.

4.5.3. Povolení TFTP serveru

Aby vám TFTP server fungoval, měli byste nejprve zkontrolovat, zda je tftpd povolen.

V případě balíku tftpd-hpa existují dva způsoby, jak službu provozovat. Jednak se může tftpd-hpa spouštět jako samostatný daemon při startu systému, nebo může jeho spuštění zajišťovat systémový daemon inetd v okamžik, kdy je ho potřeba. Způsob, který zrovna používáte, můžete zvolit při instalaci balíku, respektive ho můžete kdykoliv změnit rekonfigurací balíku.

[Poznámka] Poznámka

TFTP servery historicky používaly pro uložení nabízených obrazů adresář /tftpboot. Aby byl Debian v souladu se standardem FHS, mohou debianí balíky používat jiná umístění. Například tftpd-hpa implicitně používá adresář /srv/tftp. Je proto možné, že budete muset cesty uváděné v této kapitole upravit pro konkrétní situaci.

Všechny alternativní in.tftpd v Debianu by měly automaticky zaznamenávat všechny požadavky, které jim byly zaslány, do systémových logů. To se hodí zejména v situaci, kdy zavádění neprobíhá tak, jak má. Některé TFTP servery umí zvýšit svou upovídanost parametrem -v.

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

Dále je potřeba umístit příslušný TFTP obraz (viz 4.2.1 – „Where to Find Installation Files“) do adresáře, kde má tftpd uloženy obrazy. 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.

For PXE booting, everything you should need is set up in the netboot/netboot.tar.gz tarball. Simply extract this tarball into the tftpd boot image directory. Make sure your dhcp server is configured to pass pxelinux.0 to tftpd as the filename to boot. For UEFI machines, you will need to pass an appropriate EFI boot image name (such as /debian-installer/amd64/bootnetx64.efi).