Avvio da rete con Linux – PXE

Questo articolo è in qualche modo legato al nostro precedente, in quanto tratta l’argomento dell’avvio e dell’installazione di Linux usando la rete, sia essa locale o meno. Questa volta tratteremo l’installazione di Linux senza supporti ottici, floppy o altri supporti rimovibili, usando solo la LAN. Ci si aspetta che tu abbia almeno due computer nella tua rete, e il client avrà bisogno di una NIC e un BIOS in grado di usare PXE. Vi guideremo dall’inizio alla fine, ma sono richieste alcune conoscenze di base sulla rete e sulla configurazione di Linux, oltre all’uso di un editor di vostra scelta. Imparerete cos’è PXE, come configurare un server DHCP, come configurare un server TFTP in modo che il client possa avere accesso ai file, più molte cose interessanti, come al solito.

PXE

PXE (pronunciato “pixie”) sta per Preboot eXecution Environment ed è stato introdotto da Intel e Systemsoft nel 1999. In breve, è una capacità che la maggior parte delle schede di rete e dei BIOS moderni hanno e che permette al sistema di avviarsi dalla LAN, proprio come si avvierebbe dal disco rigido o dal CD-ROM. Il supporto PXE deve essere presente nel firmware della NIC che, se impostato di conseguenza nel BIOS, otterrà un indirizzo IP dal server PXE e scaricherà le immagini di avvio necessarie. Affinché un indirizzo IP sia disponibile, il server deve offrire DHCP. Dopo che un indirizzo IP è stato affittato, il server TFTP (che può essere la stessa scatola del server DHCP) distribuisce i file necessari al client, in modo da poterli avviare dopo il caricamento. Questa è l’intera idea, quindi basta parlare, mettiamoci al lavoro, va bene?

Installazione degli strumenti necessari e impostazione

Prima di iniziare, è importante capire come è disposta la configurazione della rete su cui abbiamo provato questo. Il server è una macchina Debian con due schede di rete, e la distribuzione che installeremo è anch’essa Debian, cioè Squeeze, amd64. È possibile utilizzare qualsiasi altra distribuzione, ma probabilmente alcune posizioni dei file di configurazione saranno diverse. Questo articolo non tratta di come impostare i sorgenti del software per l’installazione effettiva. Vi porteremo solo ad un debian-installer funzionante e questo è tutto. Troverete molti tutorial là fuori su come impostare un repository Debian locale o come configurare un gateway su Linux.

Quindi, la lista di controllo: avremo bisogno di un server DHCP, un server TFTP e l’initrd e l’immagine del kernel da trasferire al client. Abbiamo scelto un approccio piuttosto insolito nella nostra configurazione, e vedrete perché.

 Outside world ------> Router ------> Switch ------>(eth0) Server(eth1) ------> Client

Dunque, il router distribuisce indirizzi DHCP (piccolo router domestico) sotto forma di 192.168.0.x . Il server, che distribuirà anche gli indirizzi DHCP, ha la sua connessione esterna tramite eth0 e la connessione interna per il client tramite eth1. Il client ha l’unica connessione Ethernet direttamente al server PXE, ma questo non significa che non puoi configurare il server come gateway per netinstall o aggiungere un’altra NIC al client per l’accesso esterno. Ci sono molte possibilità, la questione importante è l’avvio via PXE. Iniziamo installando il server TFTP.

SUBSCRIBE NEWSLETTER & RSS
Sottoscrivi RSS e NEWSLETTER e ricevi le ultime notizie su Linux, lavori, consigli di carriera e tutorial.

TFTP

TFTP sta per Trivial File Transfer Protocol ed è il “linguaggio” de facto quando si tratta di trasferire file da usare con PXE. Su Debian, lo installiamo così:

 # aptitude install tftpd-hpa

Ora dobbiamo configurarlo correttamente. Prima di tutto, nel nostro esempio eseguiremo tftpd standalone, cioè non useremo xinetd. La configurazione sarà diversa se avete intenzione di usare xinetd, e non lo raccomandiamo. Ora tutto quello che dobbiamo fare è modificare /etc/default/tftpd-hpa :

#make sure these lines are presentRUN_DAEMON=yesTFTP_OPTIONS="-l -s /var/lib/tftpboot"

Assicuriamoci che la directory di cui sopra esista e avviamo il demone:

 # mkdir -p /var/lib/tftpboot # /etc/init.d/tftpboot-hpa start

DHCP

Dobbiamo offrire al client un indirizzo prima di iniziare l’installazione via rete, e questo viene fatto utilizzando il Dynamic Host Configuration Protocol. Il server DHCP ha un pool di indirizzi da cui offre IP quando richiesto. Si installa la parte server con

 # aptitude install dhcp3-server

Ora dobbiamo impostare le informazioni di rete di eth1, che si trovano in /etc/network/interfaces :

allow-hotplug eth1iface eth1 inet staticaddress 192.168.1.2netmask 255.255.255.0

Riavvia la rete e abbiamo quasi finito:

 # ifdown eth1 # ifup eth1

Configurare PXE

Ora dobbiamo configurare il file che il client richiederà, un file in cui gli diremo come trovare ciò di cui ha bisogno. Quindi, creiamo la directory pxelinux.cfg :

 # mkdir /var/lib/tftpboot/pxelinux.cfg 

e creiamo un file chiamato ‘default’ che avrà il seguente contenuto:

Si vede un riferimento al file boot.txt , quindi createlo in /var/lib/tftpboot e aggiungeteci la linea “squeeze_amd64_install”.

Ora, per copiare i file necessari da qualche parte per essere trovati dal client:

Ora, sperando che tutto sia a posto, puoi semplicemente avviare il tuo client e modificare le sue impostazioni BIOS per l’avvio da rete. Prima di finire, vi dobbiamo una spiegazione per questa configurazione di rete che abbiamo scelto. Probabilmente avremmo potuto renderla più semplice, come usare direttamente la connessione del nostro ISP ed essere in grado di accedere anche alla rete (Internet). L’idea è che il server PXE nel nostro scenario non può ottenere il suo indirizzo IP (eth0) da DHCP, poiché questa configurazione non funzionerebbe: se non hai intenzione di usare lo scenario a due NIC sul server, come abbiamo fatto noi, hai bisogno di un qualche tipo di indirizzo IP fisso. Quindi, le possibilità sarebbero: ISP collegato direttamente, impostare il router per dare solo IP statici, rendere il server PXE/DHCP/TFTP anche un gateway o creare un repository locale. Abbiamo scelto quest’ultimo perché si adatta meglio alla nostra topologia e ai nostri scopi, e comporta solo l’impostazione di un webserver sulla LAN, in realtà. Se avessimo spiegato tutte le scelte, compreso iptables per un gateway o apache per un server HTTP, questo articolo sarebbe stato enorme. Invece, abbiamo preferito attenerci al titolo e darvi esattamente questo: Avvio di rete con Linux.

Ricorda che questo è solo un esempio: come con NetbootCD, puoi aggiungere tutte le distribuzioni che vuoi, purché tu abbia lo spazio necessario sul server.

Pensieri finali

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.