4.3. 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 RARP-server, eller BOOTP-server.

Reverse Address Resolution Protocol (RARP) är ett sätt att berätta för din klient vilken IP-adress den själv ska använda. Ett annat sätt är att använda BOOTP-protokollet. 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.

4.3.1. Konfigurering av RARP-server

För att ställa in RARP behöver du veta Ethernet-adressen (även kallad MAC-adress, maskinvaruadress eller hårdvaruadress) på klientdatorerna som ska installeras. Om du inte har den informationen så kan du hämta den från uppstartsmeddelandena i OpenPROM, använda kommandot .enet-addr i OpenBoot, eller starta upp i Räddningsläge (t.ex. från räddningsdisketten) och använda kommandot ip addr show dev eth0.

På ett RARP-serversystem som använder en Linux 2.4 eller 2.6-kärna, eller Solaris/SunOS, använder du programmet rarpd. Du behöver se till att Ethernet-hårdvaruadressen för klienten är listad i ethers-databasen (antingen i filen /etc/ethers, eller via NIS/NIS+) och i hosts-databasen. Sedan behöver du starta om RARP-demonen. Kör kommandot (som root): /usr/sbin/rarpd -a på de flesta Linux-system och SunOS 5 (Solaris 2), /usr/sbin/in.rarpd -a på vissa andra Linux-system, eller /usr/etc/rarpd -a på SunOS 4 (Solaris 1).

4.3.2. 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.3.3. 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.

För att använda CMU bootpd, måste du först kommentera bort (eller lägga till) den relevanta raden i /etc/inetd.conf. På Debian GNU/Linux kan du köra update-inetd --enable bootps, sedan /etc/init.d/inetd reload för att göra det. Om din BOOTP-server inte kör Debian, bör raden i fråga se ut så här:

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

Nu måste du skapa filen /etc/bootptab. Den har samma sorts familjära och kryptiska format som de gamla goda BSD-filerna printcap, termcap och disktab. Se manualsidan för bootptab för mer information. För CMU bootpd behöver du känna till maskinvaruadressen (MAC) för klienten. Här är ett exempel på en /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:

Du behöver ändra åtminstone alternativet ha, som anger maskinvaruadressen för klienten. Alternativet bf anger filen som klienten bör hämta via TFTP; se Avsnitt 4.3.5, ”Flytta TFTP-avbildningarna till rätt plats” för mer detaljer.

By contrast, setting up BOOTP with ISC dhcpd is really easy, because it treats BOOTP clients as a moderately special case of DHCP clients. Some architectures require a complex configuration for booting clients via BOOTP. If yours is one of those, read the section Avsnitt 4.3.2, ”Konfigurering av DHCP-server”. Otherwise you will probably be able to get away with simply adding the allow bootp directive to the configuration block for the subnet containing the client in /etc/dhcp/dhcpd.conf, and restart dhcpd with /etc/init.d/isc-dhcp-server restart.

4.3.4. 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

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.3.5. 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å installationsavbildningar”, 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.

4.3.5.1. Uppstart via TFTP för SPARC

Vissa SPARC-arkitekturer lägger till underarkitekturens namn, såsom SUN4M eller SUN4C; till filnamnet. Därför, om ditt systems arkitektur är en SUN4C, och dess IP är 192.168.1.3, borde filnamnet vara C0A80103.SUN4C. Dock, det finns även underarkitekturer där filen som klienten letar efter är bara klient-ip-i-hex. Ett lätt sätt att fastställa den hexadecimala koden för IP-adressen är att ange följande kommando i ett skal (anta att maskinens tilltänkta IP-adress är 10.0.0.4).

$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4

För att få det korrekta filnamnet, behöver du ändra alla bokstäver till versaler om och det behövs även lägga till underarkitekturens namn.

Om du har gjort allt det här korrekt, ska kommandot boot net från OpenPROM läsa in avbildningen. Om avbildningen inte kan hittas, försök leta i loggarna på din tftp-server för att se vilket avbildningsnamn som efterfrågas.

Du kan också tvinga vissa sparc-system att leta efter ett specifikt filnamn genom att lägga till det på slutet av uppstartskommandot för OpenPROM, såsom boot net min-sparc.avbildning. Den måste dock finnas i katalogen som TFTP-servern letar i.