PXEBootInstall

Prefazione

L’installazione tramite avvio di rete non deve essere confusa con DebianNetworkInstall. In installazione di rete, si inizia con un CD (o una memoria flash USB o simile) per installare un sistema Linux minimo prima di procedere a scaricare ulteriori pacchetti attraverso la rete.

L’installazione tramite l’avvio di rete è anche diversa dall’utilizzo della rete per avviare un sistema già installato: in tal caso, la macchina client rimane dipendente dal server installato e funzionante ad ogni avvio futuro. Il Linux Terminal Server Project (LTSP) funziona così, per esempio.

Questa pagina descrive l’installazione di un nuovo sistema Debian senza CD, DVD, USB. Alla fine del processo di installazione, la nuova macchina è in grado di funzionare senza il supporto del server. Durante l’installazione, è necessario un server di avvio di rete.

Poiché non ci sono server di avvio fiduciali in natura, è necessario impostare il proprio. Questo è molto più complicato dell’installazione di Debian da CD (abbreviazione per CD o USB o …). Normalmente, l’avvio di rete viene utilizzato solo se non c’è davvero alcun modo per avviare da CD. Se l’avvio da CD fallisce, ciò potrebbe essere dovuto a problemi del BIOS che impediranno ugualmente l’avvio di rete (i tipici tentativi di risoluzione dei problemi includono lo spegnimento dell’avvio sicuro, il passaggio da UEFI alla modalità di avvio legacy e simili).

Nel Web si possono trovare diversi articoli che descrivono in modo più o meno dettagliato come configurare un server di avvio di rete. Hanno tutti la stessa debolezza: si sono tenuti a eseguire una lunga lista di istruzioni senza ottenere alcun feedback prima della fine della procedura quando si tenta di avviare. Se funziona, bene. In caso contrario, il debug diventerà molto molto difficile. Pertanto, nel seguito, suddividiamo la procedura in passaggi che possono essere sottoposti a debug separatamente.

http://www.debian.org/releases/stable/amd64/ch04s05 – Guida all’installazione di Debian – 4.5. Preparazione dei file per l’avvio da rete TFTP

Nota: se il sistema supporta iPXE, utilizzare netboot.xyz è probabile che sia molto più semplice.

Precondizioni

Il computer su cui si desidera installare verrà chiamato Client.

Il computer da cui si installa verrà chiamato Server. Supponiamo che il Server stia eseguendo Debian.

Per essere precisi, assumiamo che il Client e il Server facciano parte di una LAN con i seguenti indirizzi IP:

Scoprirai il valore di x in seguito.

Si noti che molti router forniscono anche un server DHCP: sarà necessario spegnerlo, poiché solo un server DHCP può essere eseguito in una determinata LAN. A meno che non sia possibile configurare il server DHCP del router in modo che sia conforme alla configurazione del server DHCP DH riportata di seguito, ma ciò non rientra nell’ambito di questo documento.

È anche possibile che il router e il server siano la stessa macchina, cioè che il server Debian sia il gateway predefinito per questa LAN. Questo funzionerà bene.

Le seguenti istruzioni sono state testate con Debian 8.2 (Jessie) nel settembre 2015.

Attiva PXE boot

Imposta il menu di avvio del BIOS del Client per l’avvio dalla rete.

Riavvia. Sulla maggior parte dei sistemi, questo produce un output che contiene l’indirizzo MAC del client. Quindi, fallirà con

 PXE-E53: no boot filename received.

Nota l’indirizzo MAC; sarà utile per interpretare i messaggi di log.

Su molti server, è anche possibile passare temporaneamente all’avvio PXE senza modificare in modo permanente le impostazioni del BIOS. Ci sarà una sorta di battitura da colpire durante il POST DEL BIOS. Sui server Dell, F12 farà il trucco (o Esc quindi @ da una console seriale o IPMI).

Impostare il server DHCP

Sul server, abbiamo bisogno di impostare un server DHCP.

La migliore pratica attuale sembra essere quella di utilizzare il pacchetto dh-dhcp-server, che fornisce un demone dhcpd.

Il suo file di configurazione è /etc/dhcp/dhcpd.conf. Modificare il file che contiene i seguenti; adeguare indirizzi IP e MAC alle proprie necessità:

Dopo ogni modifica di cui sopra, riavviare il server DHCP con

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

o con systemd equivalente

 # systemctl restart isc-dhcp-server

Controllare che sia effettivamente in esecuzione:

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

o

 # systemctl status isc-dhcp-server

che dà leggermente più informazioni.

Prima di riavviare il client, è possibile eseguire

 # journalctl -fu isc-dhcp-server

che mostra le ultime righe del registro del server DHCP, quindi aggiorna la schermata con ogni nuova voce di registro. (Se non si vuole “seguire” il registro, basta lasciare fuori la “f”)

 PXE-E32: TFTP open timeout

e, allo stesso tempo, vedrete i messaggi di log sul server schermata con il DHCP richieste ed offerte simili a l’uscita sotto il comando alternativo al di sotto

Se si preferisce non usare systemd, o desidera confrontare il tradizionale registro di uscita per scopi diagnostici, si può guardare in su /var/log/syslog, per esempio con questo comando

 # grep DHCP /var/log/syslog
  • dove si dovrebbe vedere qualcosa di simile:

(Si noti che le versioni precedenti di Debian utilizzavano/var/log / daemon.log invece di syslog)

Se non viene visualizzato nulla nel log con entrambi i comandi, controllare i collegamenti di rete tra il Server e il Client. Si noti che alcuni switch di rete possono imporre gravi limitazioni al traffico DHCP; per quelli Cisco, utilizzare ‘portfast’ se possibile (vedere http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a00800b1500.shtml).

Configurazione del server TFTP

Successivamente, dobbiamo impostare un server TFTP sul server.

Ancora una volta, ci sono diversi pacchetti che forniscono TFTP (FTP banale, non sicuro, da usare solo nelle LAN). Sembra la migliore pratica usare il pacchetto tftpd-hpa. All’installazione, vengono poste alcune domande. La risposta a queste domande va in un file di configurazione, / etc / default / tftpd-hpa. Non dovrebbe essere necessario modificare i seguenti contenuti predefiniti:

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

Ignora i siti Web meno recenti che richiedono di inserire qualcosa come ‘RUN_DAEMON = “yes”‘.

Dopo ogni modifica del file di configurazione di cui sopra, riavviare il server TFTP con

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

o

 # systemctl restart tftpd-hpa

Su Jessie, verrà creata automaticamente la directory /srv/tftp. Ciò significa che i prossimi due passaggi non sono necessari se si utilizza Jessie.

Inizialmente, nelle versioni pre-Jessie, il riavvio del server TFTP potrebbe non riuscire con un messaggio come

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

Quindi, come root, creare la directory/srv / tftp. Riavviare il demone TFTP. Controlla che sia effettivamente in esecuzione:

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

o

 # systemctl status tftpd-hpa

che di nuovo fornisce alcune righe del registro piuttosto che solo il fatto che l’attività è (non è) in esecuzione.

È utile testare il tuo server TFTP con un client TFTP; puoi semplicemente usare il pacchetto tftp-hpa per questo scopo:

 # 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)

È anche utile vedere quali voci di registro ottieni quando scarichi un file che esiste e quando provi a scaricarne uno che non lo fa. Mentre usi tftp per testare il tuo server tftpd, prova a monitorare i tuoi esperimenti con vecchie e nuove forme del comando log mentre usi il tuo client TFTP per scaricare file che esistono, così come file che non esistono.

Il comando tradizionale su Jessie

 # tail -f /var/log/syslog

(Si noti ancora una volta che le versioni precedenti di Debian usavano/var/log / daemon.log invece di syslog.)

Su systemd

 # journalctl -fu tftpd-hpa

Purtroppo, questi sembrano dare risultati diversi, a partire da gennaio 2017. Il comando systemd non visualizza le richieste di file per i file che non esistono.

È abbastanza utile sapere cosa chiede il client, in quanto ti aiuta a spostare i file nella posizione prevista se commetti errori in seguito. Allo stato attuale, probabilmente vale la pena utilizzare il modo tradizionale di tracciamento dei log per TFTPD.

Riavvia il client. Dovresti vedere i messaggi di errore nella schermata del client che iniziano con

 PXE-T01: File not found

che è abbastanza corretto dal momento che non abbiamo ancora fornito alcun file. Nella schermata del server, vedrai esattamente ciò che il client ha chiesto.

Fornire l’immagine di avvio

Scaricare netboot / netboot.impeciare.gz da un mirror Debian (vedere http://www.debian.org/distrib/netinst#netboot).

Opzionale: Per verificare la firma digitale, digitare questi comandi:

Disimballare netboot.impeciare.gz a / srv / tftp, che dovrebbe ora contenere

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

Potrebbe essere necessario chmod-R a+r * per rendere tutti i file in questa directory leggibili per il demone TFTP.

Potrebbe anche essere necessario modificare grub / grub.cfg per impostare la console seriale, se necessario (ho sostituito la sezione relativa al terminale grafico):

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

così come la console seriale per debian-installer aggiungendo questo alla riga di comando del kernel:

console=ttyS1,115200n8r console=tty1

Riavviare il servizio TFTP, e di nuovo si possono seguire le voci del registro di come appaiono

 # tail -f /var/log/syslog

riavviare il Client. Si dovrebbe arrivare a una schermata di installazione Debian.

Se cerchi in /var/log/syslog, vedrai cosa è stato scaricato dal server TFTP dal bootloader PXE e poi da SYSLINUX. Potresti anche vedere alcune risposte ” NAK ” quando SYSLINUX ha chiesto file che non esistono (prova diverse posizioni per alcuni file importanti).

Il caricatore PXE (il firmware nel BIOS o il controller di rete del client) tenta di caricare in questo ordine:

  • pxelinux.0 (o più esattamente, quello che gli hai detto di scaricare nel campo ‘filename’ della risposta DHCP)

Quindi SYSLINUX/PXELINUX proverà a cercare la sua configurazione in percorsi diversi, dal più specifico al meno:

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

E se il menu di configurazione dipende da altri elementi di configurazione, vengono anche scaricati. Debian avrà almeno bisogno del ‘ bootmenu.txt ‘ file che è il menu principale.

Per impostazione predefinita, si arriva alla schermata grafica del menu di avvio dell’installazione Debian. Premere ‘invio’ per avviare l’installazione. Sii paziente: potrebbe volerci più di un minuto prima che venga visualizzata la schermata successiva (“Seleziona una lingua”).

Modo alternativo per ottenere l’immagine di avvio

Se si dispone di un sistema Debian della stessa versione che si desidera installare, è possibile installare l’immagine di avvio usando apt.

Ora puntare il server tftp a/usr/lib/debian-installer/images/VERSION VERSION/ARCH ARCH / INTERFACE INTERFACE dove INTERFACE=text per l’installatore in modalità testo o INTERFACE=gtk per l’installatore grafico. Un modo semplice per ottenere ciò è trasformare / srv / tftp in un collegamento simbolico.

Un altro modo – utilizzare Dnsmasq

dnsmasq è un peso leggero, facile da configurare spedizioniere DNS e server DHCP con funzionalità BOOTP/TFTP / PXE. Cioè, è possibile sostituire Dn-dhcp-server e tftpd-hpa con Dnsmasq.

Di seguito è riportato il file / etc / dnsmasq.conf fornisce le stesse funzionalità del metodo di installazione e configurazione di t-dhcpd-server e tftpd-hpa sopra descritti.

Scarica il netboot.impeciare.gz ed estrarlo in / srv / tftp come descrizione precedente.

Potenziali problemi

Se il kernel nell’immagine netboot non viene sincronizzato con i pacchetti del modulo del kernel, i moduli non verranno caricati e l’installazione fallirà, i sintomi usuali sono che i messaggi sui “simboli mancanti” appaiono nella console ctrl-alt-f4.

Per risolvere questo problema, aggiornare il kernel e initrd sul server netboot.

Probabilmente c’è un problema Debian BTS aperto per questo, ma non riesco a trovarlo ora.

Vedere anche

  • http://www.debian.org/releases/stable/amd64/ch04s05 – Debian Installation Guide – 4.5. Preparazione dei file per l’avvio da rete TFTP

  • di-netboot-assistant automatizza la maggior parte dei passaggi descritti sopra: DebianInstaller/NetbootAssistant

  • Il programma di installazione Lenny in netboot.impeciare.gz NON supporta l’installazione utilizzando console seriale per impostazione predefinita ora. Ulteriori informazioni su questo problema e una patch per abilitare l’accesso alla console seriale sono disponibili in 309223.

  • https://networkboot.org/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *