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 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 uppstartsavbild. 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 uppstartsavbilder 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. 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 dhcp3-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.4, “Flytta TFTP-avbilderna till rätt plats” för mer detaljer.

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 maskin är en av dessa, läs avsnittet Avsnitt 4.3.2, “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, och starta om dhcpd med /etc/init.d/dhcpd3-server restart.

4.3.2. Konfigurering av DHCP-server

En fri DHCP-serverprogramvara är ISC dhcpd. För Debian GNU/Linux, rekommenderas paketet dhcp3-server. Här är en exempelkonfigurationsfil för det (se /etc/dhcp3/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/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/dhcpd3-server restart.

4.3.3. Aktivering av TFTP-server

För att få TFTP-servern klar att köra, bör du först se till att tftpd är aktiverad. Den aktiveras normalt sett genom att ha en rad som liknar följande rad i /etc/inetd.conf:

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

Debian-paketen kommer normalt sett att ställa in det korrekt som standard när de installeras.

Notera

Historiskt sett hanterade TFTP-servrarna avbilder 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 /var/lib/tftpboot. Du kan därför behöva justera konfigurationsexemplen i det här avsnittet.

Leta i filen /etc/inetd.conf och kom ihåg katalogen som används som argument till in.tftpd[3]; du behöver det senare. Om du behövde ändra /etc/inetd.conf, behöver du meddela till den körande inetd-processen att filen har ändrats. På en Debian-maskin, kör /etc/init.d/inetd reload; på andra maskiner, ta reda på vilket process-id som inetd har, och kör kill -HUP inetd-pid.

4.3.4. Flytta TFTP-avbilderna till rätt plats

Placera sedan TFTP-uppstartsavbilden du behöver, som du hittar i Avsnitt 4.2.1, “Var man får tag på installationsavbilder”, i katalogen för uppstartsavbilder 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.4.1. Avbilder för DECstation TFTP

För DECstation, finns det tftpimage-filer för varje underarkitektur, som innehåller både kärna och installerare i en fil. Namnkonventionen är underarkitektur/netboot-boot.img. Kopiera den tftpimage-fil du vill använda till /tftpboot/tftpboot.img om du arbetar med det exemplet för BOOTP/DHCP-konfigurationer som beskrivs ovan.

DECstationens firmware kan starta upp via TFTP med kommandot boot #/tftp, där # är numret på den TurboChannel-enhet från vilken uppstarten ska ske. På de flesta DECstationer är det “3”. Om BOOTP/DHCP-servern inte ger ut filnamnet eller om du behöver skicka ytterligare parametrar, kan de valfritt läggas till med följande syntax:

boot #/tftp/filename param1=värde1 param2=värde2 ...

Flera revisioner av DECstation-firmware har ett problem angående nätverksuppstart: överföringen startar, men efter en viss tid stoppar den med en a.out err. Det kan finnas flera anledningar:

  1. Firmware svarar inte på ARP-begäran under en TFTP-överföring. Det leder till en ARP-timeout och överföringen stoppas. Lösningen är att statiskt lägga till MAC-adressen på Ethernet-kortet i DECstationen till ARP-tabellen på TFTP-servern. Det görs genom att köra arp -s IP-adress MAC-adress som root på maskinen som fungerar som TFTP-server. MAC-adressen för DECstationen kan läsas av genom att ange cnfg i DECstationens firmware-prompt.

  2. Firmware har en storleksgräns på de filer som kan startas upp via TFTP.

Det finns också revisioner av firmware som inte kan starta upp via TFTP alls. En översikt av de olika revisionerna av firmware kan hittas på webbsidorna för NetBSD: http://www.netbsd.org/Ports/pmax/board-list.html#proms.



[3] Argumentet -l gör att vissa versioner av in.tftpd loggar alla begäran till systemloggarna; det här är användbart för att felsöka uppstartsfel.