4.5. Förbered filerna för nätverksuppstart via TFTP

Om din maskin är ansluten till ett lokalt nätverk har du möjligheten att starta upp via nätverket från en annan maskin med TFTP. Om du tänker starta upp installationssystemet från en annan maskin behöver uppstartsfilerna placeras på specifika platser på den maskinen och maskinen konfigureras för att få stöd för uppstart av din specifika maskin.

Du behöver konfigurera en TFTP-server, och för många maskiner även en DHCP-server, eller BOOTP-server.

BOOTP är ett IP-protokoll som informerar en dator om dess IP-adress och var på nätverket den kan hämta en uppstartsavbildning. DHCP (Dynamic Host Configuration Protocol) är en mer flexibel, bakåtkompatibel utökning av BOOTP. Vissa system kan endast konfigureras via DHCP.

Trivial File Transfer Protocol (TFTP) används för att erbjuda uppstartsavbildningar till klienten. Teoretiskt sett kan alla servrar, på alla plattformar, som implementerat de här protokollen, kan användas. I exemplen i det här avsnittet, tillhandahåller vi kommandon för SunOS 4.x, SunOS 5.x (även kallad Solaris) och GNU/Linux.

[Notera] Notera

För en Debian GNU/Linux-server så rekommenderar vi tftpd-hpa. Den är skriven av samma upphovsman som starthanteraren syslinux och är därför minst sannolik att orsaka problem. Ett bra alternativ är atftpd.

4.5.1. Konfigurering av DHCP-server

En fri DHCP-serverprogramvara är ISC dhcpd. För Debian GNU/Linux, rekommenderas paketet isc-dhcp-server. Här är en exempelkonfigurationsfil för det (se /etc/dhcp/dhcpd.conf):

option domain-name "exempel.se";
option domain-name-servers ns1.exempel.se;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servernamn";

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

I det här exemplet finns det en server kallad servernamn som gör allt arbete som DHCP-server, TFTP-server och nätverksgateway. Du behöver nästan säkert ändra domännamnsalternativen, såväl som servernamnet och klientens maskinvaruadress. Alternativet filename bör vara ange namnet på den fil som ska hämtas via TFTP.

Efter du har redigerat konfigurationsfilen för dhcpd, starta om den med /etc/init.d/isc-dhcp-server restart.

4.5.1.1. Aktivera PXE-uppstart i DHCP-konfigurationen

Här är ett annat exempel på en dhcp.conf, som använder Pre-boot Execution Environment-metoden (PXE) för TFTP.

option domain-name "exempel.se";

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

allow booting;
allow bootp;

# Nästa paragraf behöver ändras för att passa din miljö
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;
# gatewayadressen kan vara olik
# (tillgång till Internet till exempel)
  option routers 192.168.1.1;
# indikerar dns-servern du vill använda
  option domain-name-servers 192.168.1.3;
}

group {
 next-server 192.168.1.3;
 host tftpclient {
# maskinvaruadressen för tftp-klienten
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Observera att för PXE-uppstarter är klientfilnamnet pxelinux.0 en starthanterare, inte en kärnavbildning (se Avsnitt 4.5.4, ”Flytta TFTP-avbildningarna till rätt plats” nedan).

Om din maskin använder UEFI för att starta måste du ange en startladdare som är lämplig för UEFI-maskiner, till exempel

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. Konfigurera en BOOTP-server

Det finns två BOOTP-servrar tillgängliga för GNU/Linux. Den första är CMU bootpd. Den andra är faktiskt en DHCP-server: ISC dhcpd. I Debian GNU/Linux finns dessa i paketen bootp respektive 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 Avsnitt 4.5.4, ”Flytta TFTP-avbildningarna till rätt plats” for more details.

Tvärtemot är konfigurering av BOOTP med ISC dhcpd riktigt enkelt, för att den behandlar BOOTP-klienter som vanliga specialfall av DHCP-klienter. Vissa arkitekturer kräver en komplex konfiguration för att starta upp klienter via BOOTP. Om din dator är en av dessa, läs avsnittet Avsnitt 4.5.1, ”Konfigurering av DHCP-server”. Om inte, kommer du antagligen komma undan med att bara lägga till direktivet allow bootp till konfigurationsblocket för subnätet som innehåller klienten i /etc/dhcp/dhcpd.conf, och starta om dhcpd med /etc/init.d/isc-dhcp-server restart.

4.5.3. Aktivering av TFTP-server

För att få igång TFTP-servern så bör du först försäkra dig om att tftpd är aktiverad.

I det fallet med tftpd-hpa så finns det två sätt som tjänsten kan köras på. Den kan startas vid behov av systemets inetd-demon, eller så kan den konfigureras till att köras som en oberoende demon. Vilken av dessa metoder som används väljs när paketet installeras och kan ändras genom att konfigurera om paketet.

[Notera] Notera

Historiskt sett hanterade TFTP-servrarna avbildningar från katalogen /tftpboot. Dock kan Debian GNU/Linux-paket använda andra kataloger för att följa Filesystem Hierarchy Standard. Till exempel, tftpd-hpa använder som standard /srv/tftp. Du kan därför behöva justera konfigurationsexemplen i det här avsnittet.

Alla tillgängliga alternativ för in.tftpd i Debian bör logga TFTP-begäran till systemloggarna som standard. Vissa av dem har stöd för argumentet -v för att öka informationsnivån. Det rekommenderas att kontrollera dessa loggmeddelanden när uppstartsproblem sker eftersom de är en bra startpunkt för att diagnostisera orsaken till felen.

4.5.4. Flytta TFTP-avbildningarna till rätt plats

Placera sedan TFTP-uppstartsavbildningen du behöver, som du hittar i Avsnitt 4.2.1, ”Var man får tag på installationsfiler”, i katalogen för uppstartsavbildningar för tftpd. Du kan behöva att skapa en länk från den filen till den fil som tftpd kommer att använda för att starta upp en specifik klient. Tyvärr fastställs filnamnet av TFTP-klienten och det finns inga riktiga standarder.

För PXE-uppstart är allt du behöver konfigurerat i filen netboot/netboot.tar.gz. Extrahera helt enkelt den här filen till katalogen för uppstartsavbildningar för tftpd. Se till att din dhcp-server är konfigurerad att skicka pxelinux.0 till tftpd som det filnamn som ska användas för uppstart. För UEFI maskiner, så måste du skicka ut ett lämpligt EFI-startavbildsnamn (som /debian-installer/amd64/bootnetx64.efi ).