4.5. Bestanden klaarmaken om over het netwerk op te starten met TFTP

Indien uw machine verbonden is met een lokaal netwerk, kunt u ze misschien over het netwerk vanaf een andere machine laten opstarten met TFTP. Indien u van plan bent het installatiesysteem op te starten vanaf een andere machine, moeten de opstartbestanden op een specifieke plaats op die machine geplaatst worden en moet die machine geconfigureerd worden om het opstarten van specifiek uw machine te ondersteunen.

U moet een TFTP-server opzetten en voor veel machines een DHCP-server of een BOOTP-server.

BOOTP is een IP-protocol dat een computer zijn IP-adres geeft en hem zegt waar op het netwerk hij een opstart-image kan krijgen. Het DHCP (Dynamic Host Configuration Protocol) is een meer flexibele en neerwaarts compatibele uitbreiding van BOOTP. Sommige systemen kunnen enkel via DHCP geconfigureerd worden.

Het Trivial File Transfer Protocol (TFTP) wordt gebruikt om het opstart-image aan te leveren aan de cliënt. In theorie kan elke server op gelijk welk platform die in staat is om deze protocollen te gebruiken, gebruikt worden. In de voorbeelden in dit gedeelte zullen we de commando's demonstreren voor SunOS 4.x, SunOS 5.x (ook Solaris genoemd) en GNU/Linux.

[Opmerking] Opmerking

Voor een Debian GNU/Linux-server bevelen we tftpd-hpa aan. Het werd geschreven door de auteur die ook de opstartlader syslinux schreef en het is daarom het minst waarschijnlijk dat er zich problemen zullen voordoen. Een goed alternatief is atftpd.

4.5.1. Een DHCP-server opzetten

Een DHCP-server uit vrije software is ISC dhcpd. Voor Debian GNU/Linux wordt het pakket isc-dhcp-server aanbevolen. Hierna volgt een voorbeeld van een configuratiebestand ervoor (zie /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 "servernaam";

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 cliëntnaam {
  filename "/tftpboot.img";
  server-name "servernaam";
  next-server servernaam;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

In dit voorbeeld is er één server servernaam die als DHCP-server, TFTP-server en netwerk-gateway fungeert. U zult bijna zeker de 'domain-name' opties moeten aanpassen, evenals de servernaam en het hardware-adres van de cliënt. De optie filename moet de naam vermelden van het bestand dat via TFTP opgehaald zal worden.

Nadat u het configuratiebestand voor dhcpd aangepast heeft, moet u de achtergronddienst herstarten met /etc/init.d/isc-dhcp-server restart.

4.5.1.1. In de configuratie van DHCP het opstarten via PXE aanzetten

Hier volgt nog een voorbeeld van het bestand dhcp.conf waarin de methode Pre-boot Execution Environment (PXE) van TFTP gebruikt wordt.

option domain-name "example.com";

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

allow booting;
allow bootp;

# De volgende paragraaf moet aangepast worden aan uw geval
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;
# het gateway-adres kan anders zijn
# (bijvoorbeeld toegang tot het internet)
  option routers 192.168.1.1;
# vermeld de dns-server die u wilt gebruiken
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# hardware-adres van de tftp-cliënt
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Merk op dat bij het opstarten via PXE het bestand pxelinux.0 een opstartlader is voor de cliënt en geen kernel-image (zie Paragraaf 4.5.4, “De TFTP-images op hun plaats zetten” hieronder).

Indien uw computer gebruik maakt van UEFI bij het opstarten, zult u een voor UEFI-machines geschikte opstartlader moeten opgeven, bijvoorbeeld

group {
  next-server 192.168.1.3;
  host tftpclient {
# hardware-adres van de tftp-cliënt
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}

4.5.2. Een BOOTP-server opzetten

Voor GNU/Linux zijn twee BOOTP-servers beschikbaar. De eerste is CMU bootpd. De andere is in feite een DHCP-server: ISC dhcpd. In Debian GNU/Linux zijn ze respectievelijk te vinden in het pakket bootp en het pakket isc-dhcp-server.

Om de CMU bootpd te gebruiken, moet u eerst in het bestand /etc/inetd.conf de juiste regel toevoegen of het commentaarteken dat aan het begin ervan staat, wegnemen. Op Debian GNU/Linux kunt u daarvoor het commando update-inetd --enable bootps geven en dan het commando /etc/init.d/inetd reload. In het geval uw BOOTP-server niet op een Debian-systeem staat, moet de regel in kwestie er zo uitzien:

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

Nu moet u een bestand /etc/bootptab aanmaken. Dit heeft hetzelfde soort bekende en cryptische indeling als de goede oude BSD-bestanden printcap, termcap en disktab. Raadpleeg de man-pagina van bootptab voor meer informatie. Voor CMU bootpd moet u het hardware-adres (MAC) van de cliënt kennen. Hierna is een voorbeeld van een /etc/bootptab-bestand:

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

U zult minstens de optieha moeten aanpassen. Die preciseert het hardware-adres van de cliënt. De optie bf preciseert het bestand dat de cliënt moet ophalen via TFTP. Zie Paragraaf 4.5.4, “De TFTP-images op hun plaats zetten” voor verdere details.

Daartegenover is het instellen van BOOTP met ISC dhcpd echt gemakkelijk, omdat het BOOTP-cliënten behandelt als een enigszins bijzondere soort van DHCP-cliënten. Voor sommige architecturen is een complexe configuratie nodig om cliënten via BOOTP op te starten. Indien uw architectuur daar één van is, moet u het onderdeel Paragraaf 4.5.1, “Een DHCP-server opzetten” lezen. Anders zal het wellicht volstaan om in het bestand /etc/dhcp/dhcpd.conf gewoon de opdracht allow bootp toe te voegen aan het configuratieblok dat betrekking heeft op het subnet waartoe uw cliënt behoort, en dhcpd opnieuw te starten met het commando /etc/init.d/isc-dhcp-server restart.

4.5.3. De TFTP-server werkzaam maken

Opdat de TFTP-server klaar voor de dienst zou zijn, moet u eerst controleren of tftpd geactiveerd is.

In het geval van tftpd-hpa kan de dienst op twee manieren functioneren. Hij kan op vraag van de achtergronddienst inetd van het systeem geactiveerd worden, of hij kan ingesteld worden om als een onafhankelijke achtergronddienst te werken. Welke van beide methodes gebruikt wordt, wordt ingesteld bij het installeren van het pakket en kan gewijzigd worden door het pakket opnieuw te configureren.

[Opmerking] Opmerking

Lange tijd gebruikten TFTP-servers /tftpboot als map van waaruit images aangeboden werden. Nochtans kunnen pakketten van Debian GNU/Linux andere mappen gebruiken om te beantwoorden aan de standaard van de Filesystem Hierarchy Standard. tftpd-hpa bijvoorbeeld gebruikt standaard /srv/tftp. Misschien zult u de configuratievoorbeelden uit dit onderdeel dienovereenkomstig moeten aanpassen.

Alle in Debian aanwezige in.tftpd alternatieven zouden TFTP-verzoeken standaard moeten registreren in de systeemlogbestanden. Sommige onder hen hebben een argument -v waarmee de hoeveelheid gegeven informatie kan verhoogd worden. Het wordt aangeraden om deze logberichten na te kijken in geval van opstartproblemen omdat ze een goed beginpunt zijn voor het diagnosticeren van de oorzaak van problemen.

4.5.4. De TFTP-images op hun plaats zetten

Plaats vervolgens het TFTP boot-image dat u nodig heeft en dat te vinden is in Paragraaf 4.2.1, “Waar u installatiebestanden kunt vinden”, in de map van tftpd voor opstart-images. Eventueel moet u een koppeling maken van dat bestand naar het bestand dat tftpd zal gebruiken om een specifieke cliënt op te starten. Spijtig genoeg wordt de bestandsnaam bepaald door de TFTP-cliënt en zijn er geen duidelijke standaarden.

Alles wat u nodig heeft voor het opstarten via PXE is ingesteld in het tararchief netboot/netboot.tar.gz. U moet dit archief gewoon uitpakken in de tftpd-map voor opstart-images. Zorg ervoor dat uw dhcp-server ingesteld staat om pxelinux.0 door te geven aan tftpd als de naam van het opstartbestand. Voor UEFI-machines zult u de naam van een passend EFI-opstartimage moeten opgeven (zoals /debian-installer/amd64/bootnetx64.efi).