Pxebootinstall

förord

Installation med nätverksstart får inte förväxlas med DebianNetworkInstall. I Network install börjar du med en CD (eller USB-minne eller liknande) för att installera ett minimalt Linux-system innan du fortsätter att ladda ner ytterligare paket över nätverket.

Installation med nätverksstartning skiljer sig också från att använda nätverket för att starta ett redan installerat system: i så fall förblir klientmaskinen beroende av att servern är igång vid varje framtida start. Linux Terminal Server Project (LTSP) fungerar till exempel så.

den här sidan beskriver installation av ett nytt Debiansystem utan CD, DVD, USB alls. I slutet av installationsprocessen kan den nya maskinen köras utan serverns stöd. Under installationen behöver du en nätverksstartsserver.

eftersom det inte finns några fiducial startservrar ute i naturen måste du ställa in din egen. Detta är betydligt mer komplicerat än att installera Debian från CD (förkortning för CD eller USB eller …). Normalt används nätverksstart endast om det verkligen inte finns något sätt att starta från CD. Om uppstart från CD misslyckas kan det bero på BIOS-problem som också förhindrar nätverksstart (typiska felsökningsförsök inkluderar att stänga av Säker Uppstart, byta från UEFI till äldre startläge och liknande).

på webben kan flera artiklar hittas som beskriver mer eller mindre detaljerat hur man konfigurerar en nätverksstartsserver. Alla har samma svaghet: du måste utföra en lång lista med instruktioner utan att få någon feedback före slutet av proceduren när du försöker starta. Om det fungerar, bra. Om inte, kommer felsökning att bli mycket mycket svårt. Därför bryter vi ned proceduren i steg som kan felsökas separat.

http://www.debian.org/releases/stable/amd64/ch04s05 – Installationsguide för Debian – 4.5. Förbereda filer för TFTP-nätstart

Obs: Om ditt system stöder iPXE använder du netboot.xyz är sannolikt mycket enklare.

förutsättningar

datorn du vill installera på kallas klienten.

datorn du installerar från kommer att kallas servern. Vi antar att servern kör Debian.

för att vara specifik antar vi att klienten och servern är en del av ett LAN med följande IP-adresser:

Du kommer att ta reda på värdet på x senare.

Observera att många routrar också tillhandahåller en DHCP-server: du måste stänga av den, eftersom endast en DHCP-server kan köras i ett visst LAN. Om du inte kan konfigurera routerns DHCP-server för att följa isc DHCP-serverkonfigurationen nedan, men detta ligger utanför omfattningen av detta dokument.

det är också möjligt att routern och servern är samma maskin, dvs att din Debianserver är standardgatewayen för detta LAN. Detta kommer att fungera bra.

Följande instruktioner har testats med Debian 8.2 (Jessie) i September 2015.

aktivera PXE boot

Ställ in BIOS-startmenyn för klienten för att starta från nätverket.

Starta om. På de flesta system producerar detta en utgång som innehåller klientens MAC-adress. Då kommer det att misslyckas med

 PXE-E53: no boot filename received.

notera MAC-adressen; det kommer att vara till hjälp för att tolka loggmeddelanden.

på många servrar är det också möjligt att tillfälligt byta till PXE-start utan att permanent ändra BIOS-inställningarna. Det kommer att finnas någon form av tangenttryckning att slå under BIOS-posten. På Dell-servrar kommer F12 att göra tricket (eller ESC då @ från en seriell eller IPMI-konsol).

Ställ in DHCP-server

på servern måste vi ställa in en DHCP-server.

nuvarande bästa praxis verkar vara att använda paketet isc-dhcp-server, som tillhandahåller en daemon dhcpd.

dess konfigurationsfil är / etc/dhcp / dhcpd.conf. Ändra den här filen så att den innehåller ungefär följande; anpassa IP-och MAC-adresser till dina lokala behov:

Efter varje ändring av ovanstående, starta om DHCP-servern med

 # /etc/init.d/isc-dhcp-server restart

eller med systemd-ekvivalenten

 # systemctl restart isc-dhcp-server

kontrollera att den faktiskt körs:

 # pgrep -lf dhcpd 32277 /usr/sbin/dhcpd -q

eller

 # systemctl status isc-dhcp-server

vilket ger lite mer information.

innan du startar om klienten kanske du vill köra

 # journalctl -fu isc-dhcp-server

som visar de sista raderna i DHCP-serverns logg och sedan uppdaterar skärmen med varje ny loggpost. (Om du inte vill ”följa” loggen, lämna bara ut ”f”)

 PXE-E32: TFTP open timeout

och samtidigt ser du loggmeddelanden på serverns skärm som visar DHCP-förfrågningarna och erbjudanden som liknar utmatningen under det alternativa kommandot under

om du föredrar att inte använda systemd eller vill jämföra den traditionella loggutgången för diagnostiska ändamål kan du slå upp /var/log/syslog, till exempel med detta kommando

 # grep DHCP /var/log/syslog
  • där du ska se något som:

(Observera att tidigare Debianutgåvor använde /var/log/daemon.logga istället för syslog)

om inget visas i loggen med något av kommandona, kontrollera nätverkslänkarna mellan servern och klienten. Observera att vissa nätverksswitchar kan medföra allvarliga begränsningar för DHCP-trafik; för Cisco-sådana, använd ”portfast” om möjligt (se http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a00800b1500.shtml).

Ställ in TFTP-server

Därefter måste vi ställa in en TFTP-server på servern.

återigen finns det flera paket som tillhandahåller TFTP (trivial FTP, osäker, som endast ska användas i LAN). Det verkar bästa praxis att använda paketet tftpd-hpa. Vid installationen ställs några frågor. Svaret på dessa frågor går in i en konfigurationsfil, /etc/default/tftpd-hpa. Det bör inte finnas något behov av att ändra följande standardinnehåll:

 TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"

ignorera äldre webbplatser som instruerar dig att infoga något som ’RUN_DAEMON=”ja”’.

Starta om TFTP-servern med

 # /etc/init.d/tftpd-hpa restart

eller

 # systemctl restart tftpd-hpa

på Jessie skapas katalogen/srv / tftp automatiskt. Det betyder att de två följande stegen inte är nödvändiga om du använder Jessie.

initialt, på pre-Jessie-versioner, kan omstart av TFTP-servern misslyckas med ett meddelande som

 Restarting HPA's tftpd: in.tftpd/srv/tftp missing, aborting.

därför, som root, skapa katalogen /srv/tftp. Starta om TFTP-demonen. Kontrollera att det faktiskt körs:

 # pgrep -lf tftpd 12555 /usr/sbin/in.tftpd

eller

 # systemctl status tftpd-hpa

som återigen ger några rader i loggen snarare än bara det faktum att uppgiften är (inte) körs.

det är användbart att testa din tftp-server med en TFTP-klient; du kan helt enkelt använda TFTP-hPa-paketet för detta ändamål:

 # cd /tmp # uname -a >/srv/tftp/test # tftp 192.168.0.2 tftp> get test tftp> quit # diff test /srv/tftp/test (nothing, they are identical)

det är också användbart att se vilka loggposter du får när du laddar ner en fil som finns och när du försöker ladda ner en som inte gör det. När du använder tftp för att testa din tftpd-server kan du försöka spåra dina experiment med gamla och nya former av loggkommandot medan du använder din TFTP-klient för att ladda ner filer som gör det, liksom filer som inte finns.

det traditionella kommandot på Jessie

 # tail -f /var/log/syslog

(notera igen att tidigare Debianutgåvor använde/var/log / daemon.logga istället för syslog.)

på systemd

 # journalctl -fu tftpd-hpa

tyvärr verkar dessa ge olika resultat, från och med januari 2017. Systemd-kommandot visar inte filförfrågningar för filer som inte finns.

det är ganska användbart att veta vad klienten ber om, eftersom det hjälper dig att flytta filer till den förväntade platsen om du gör misstag senare. För närvarande är det förmodligen värt att använda det traditionella sättet att logga spårning för TFTPD.

Starta om klienten. Du bör se felmeddelanden på klientskärmen som börjar med

 PXE-T01: File not found

vilket är helt korrekt eftersom vi ännu inte tillhandahöll några filer. På serverskärmen ser du exakt vad klienten bad om.

ange startbilden

ladda ner netboot / netboot.tjära.gz från en Debianspegel (se http://www.debian.org/distrib/netinst#netboot).

valfritt: för att verifiera den digitala signaturen, skriv dessa kommandon:

packa upp netboot.tjära.gz to / srv/ tftp, som nu ska innehålla

 debian-installer/ pxelinux.0@ pxelinux.cfg@ version.info

det kan vara nödvändigt att chmod-R a+r * för att göra alla filer i den här katalogen läsbara för TFTP-demonen.

Du kan också behöva redigera grub / grub.cfg för att ställa in din seriekonsol, om det behövs (Jag ersatte avsnittet om den grafiska terminalen):

serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1terminal_input console serialterminal_output console serial

samt den seriella konsolen för debian-installer genom att lägga till detta till kärnan kommandoraden:

console=ttyS1,115200n8r console=tty1

Starta om TFTP-demonen, och igen kanske du vill följa loggposterna när de visas

 # tail -f /var/log/syslog

starta sedan om klienten. Du bör komma till en Debians installationsskärm.

Om du tittar på/var / log / syslog ser du vad som har laddats ner från TFTP-servern av PXE bootloader och sedan av SYSLINUX. Du kan också se några” NAK ” – svar när SYSLINUX bad om filer som inte finns (det försöker flera platser för några viktiga filer).

PXE-laddaren (firmware i BIOS eller klientens nätverkskontroller) försöker ladda i denna ordning:

  • pxelinux.0 (eller mer exakt, vad du sa till det att ladda ner i fältet’ Filnamn ’ i DHCP-svaret)

sedan försöker SYSLINUX/PXELINUX söka sin konfiguration på olika vägar, från det mest specifika till det minsta:

  • pxelinux.cfg /GUID
  • pxelinux.cfg / MAC
  • pxelinux.cfg/default

och om konfigurationsmenyn beror på andra konfigurationsobjekt laddas de också ner. Debian kommer åtminstone att behöva ’bootmenu’.txt ’ fil som är huvudmenyn.

som standard kommer du till den grafiska startmenyn för Debian install. Tryck på ’enter’ för att starta installationen. Ha tålamod: det kan ta över en minut innan nästa skärm (’Välj ett språk’) visas.

alternativt sätt att få startbilden

Om du har ett Debiansystem med samma utgåva som du vill installera kan du installera startbilden med apt.

peka nu TFTP-servern till/usr/lib/debian-installer/images/$VERSION/$ARCH / $INTERFACE där INTERFACE=text för textlägesinstallatören eller INTERFACE=gtk för den grafiska installationsprogrammet. Ett enkelt sätt att uppnå detta är att vända /srv/tftp till en symbolisk länk.

ett annat sätt-använd Dnsmasq

dnsmasq är en lätt, lätt att konfigurera DNS skotare och DHCP-server med BOOTP/TFTP/PXE funktionalitet. Det vill säga, Du kan ersätta isc-dhcp-server och tftpd-hpa med Dnsmasq.

Följande är / etc / dnsmasq.conf tillhandahåller samma funktionalitet som metoden för installation och konfiguration av isc-dhcpd-server och tftpd-hpa som beskrivs ovan.

ladda ner netboot.tjära.GZ och extrahera den i / srv / tftp som tidigare beskrivning.

potentiella problem

om kärnan i netboot-bilden blir synkroniserad med kärnmodulpaketen laddas inte modulerna och installationen misslyckas, de vanliga symptomen är att meddelanden om ”saknade symboler” visas i ctrl-alt-f4-konsolen.

för att åtgärda detta, uppdatera kärnan och initrd på netboot-servern.

det finns förmodligen ett Debian BTS-problem öppet för detta, men jag kan inte hitta det nu.

Se även

  • http://www.debian.org/releases/stable/amd64/ch04s05 – Installationsguide för Debian – 4.5. Förbereda filer för TFTP-nätstart

  • di-netboot-assistant automatiserar de flesta stegen som beskrivs ovan: DebianInstaller/NetbootAssistant

  • Lenny-installationsprogrammet i netboot.tjära.gz stöder inte installation med seriell konsol som standard nu. Mer information om det här problemet och en patch för att aktivera seriell konsolåtkomst finns i 309223.

  • https://networkboot.org/

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *