Installare linux tramite rete senza supporto fisico

Installare linux tramite rete ethernet: PXE

In passato non capitava spesso di trovarsi di fronte un pc senza lettore dvd e senza porte USB ( oppure senza poter effettuare il boot dalle porte USB ). Per tale ragione si è sentita relativamente distante la necessità di effettuare il boot di sistemi tramite rete ethernet; oggigiorno però le cose sono molto cambiate: è decisamente più comune imbattersi in sistemi privi di lettori CD/DVD e spesso non si ha la possibilità di creare USB avviabili.

In questo articolo tratteremo di una tecnologia non troppo comune tra i meno esperti, ma molto in voga in ambienti enterprise a causa della potentissima flessibilità che essa permette: PXE, Preboot Execution Environment.

Questa tecnologia permette non solo di eseguire l'installazione di un sistema operativo senza l'ausilio di supporti di memorizzazioni di massa, ma permette di fatto l'utilizzo di sistemi del tutto privi di hard disk, caricando l'intero sistema operativo da una posizione remota.

Più in dettaglio in questo articolo ci occuperemo di fornire una spiegazione pratica su come eseguire l'installazione di un sistema linux debian su un computer sprovvisto di lettore dvd e di porte usb per l'installazione tramite pen-drive.

Cenni al funzionamento di PXE

Il meccanismo PXE si basa sull'utilizzo di protocolli di comunicazione di livello 2 e 3 di TCP/IP, ovvero MAC e IP. Non potendo spiegare in modo esaustivo un argomento così vasto in questo articolo, daremo una spiegazione informale e sommaria sul meccanismo che caratterizza PXE in modo da poterlo rendere comprensibile anche ai meno esperti di reti.

 

Ogni computer, all'atto dell'avvio, non conosce quali debbano essere i dati con cui configurare la propria scheda di rete. Per configurare correttamente la scheda di rete, il sistema operativo sfrutta quello che si chiama "DHCP" (Dynamic Host Configuration Protocol), ovvero un sistema che permette l'assegnazione automatica degli indirizzi di rete con i quali una scheda di rete può funzionare (indirizzo IP, Netmask, Gateway, DNS, ecc). Questo sistema "server dhcp" è spesso integrato ed amministrabile nei comuni router adsl che si acquistano nei grandi magazzini.

Quando un pc si avvia, il sistema operativo invia una pacchetto chiamato DHCP DISCOVER su tutta la rete: tale pacchetto serve a chiedere un indirizzo IP e gli altri dettagli della rete ad un eventuale server DHCP in ascolto. Questo pacchetto quindi giunge a tutti i dispositivi collegati alla rete ethernet, ma solo i server DHCP lo intercetteranno, mentre gli altri dispositivi lo scarteranno. Quando il server DHCP riceve questa richiesta, esso risponderà con un pacchetto DHCPOFFER, nel quale sono contenuti i parametri che si intende fornire al computer che ha richiesto un indirizzo ip. Se tali parametri sono accettabili per il richiedente, allora verranno confermati e da questo momento in poi il computer client (quello che non conosceva i parametri di rete all'avvio) ha finalmente configurato la propria interfaccia di rete.

Questo protocollo viene attuato nella normalità, quando nelle nostre schede di rete impostiamo l'opzione "ricevi automaticamente un indirizzo IP".

La tecnologia PXE si basa sullo stesso meccanismo con le dovute estensioni: la richiesta effettuata ai server DHCP presenta dei dettagli ulteriori che specificano la volontà di ricevere i file con i quali effettuare il boot. Non tutti i server DHCP sono in grado di rispondere a tale necessità, perciò l'unica offerta che verrà accettata dal client PXE sarà quella proveniente da un server DHCP speciale, uno cioè che supporti client PXE. Tale server "speciale" risponderà alla richiesta di parametri per configurare la scheda di rete con delle informazioni aggiuntive, tra cui vi saranno gli indirizzi di rete di un ulteriore server che contiene i file da caricare da remoto. Questo server è chiamato server TFTP, ed è simile ad un server FTP, cioè un server che contiene dei file che possono essere scaricati via rete. Il client a questo punto avrà tutte le informazioni per effettuare il boot di un sistema operativo che si trova in una posizione remota, appunto sul server TFTP.

 

Prerequisiti.

Per sfruttare la tecnologia PXE è necessario che il pc sul quale installare il sistema linux disponga di una scheda di rete ethernet che supporti tale tecnologia. Al giorno d'oggi tutte le schede madri hanno una scheda di rete che integri l'ambiente PXE, ma è necessario accertarsene prima di procedere alla lettura di questa guida.

Oltre all'ambiente PXE è necessario disporre di un ulteriore pc/computer dotato di connessione ethernet, che funga da server TFTP e DHCP. Su questo computer verrà reso disponibile il sistema operativo da installare sull'altra macchina; in questa guida noi utilizzeremo un sistema windows 8 tramite il software "serva" che funge sia da server DHCP che da server TFTP.

Infine è necessario un cavo ethernet cross-over (incrociato) per collegare direttamente il computer SERVER al CLIENT.

 

Preparazione del client: il pc da avviare

Il pc che si desidera avviare con una installazione via rete necessita di essere configurato per supportare tale modalità di boot. Per farlo si deve operare a livello di BIOS.

Considerata la varietà di nomi che i produttori di bios possono dare alle varie opzioni presenti nei menu del BIOS, si consideri che è possibile trovare nomi diversi da quelli indicati nei passi di seguito. La seguente lista di operazioni deve quindi essere interpretata in modo non letterale:

1) Nella sezione "boot" o "boot order" impostare come prima periferica la voce "LAN" o "LAN Boot Rom"

2) Nell'eventualità che la scheda madre possa permettere l'abilitazione/disabilitazione della funzione di boot della scheda di rete, è necessario accedere al menu "advanced" al fine di trovare la voce "enable LAN boot ROM" oppure "Boot from LAN" ed abilitarla. Qualora si disponesse di una scheda madre con più schede di rete è necessario abilitare la scheda cui si intende connettere il cavo ethernet.

3) Salvare le impostazioni del bios e riavviare.

 

Se tutto è stato configurato in modo corretto è possibile fare un prova immediatamente: riavviando il pc client, questo dovrebbe effettuare il boot tramite il bootrom della scheda di rete. Solitamente ci se ne accorge perché il client tanta di ottenere un indirizzo IP da un client DHCP che supporti il protocollo DHCP esteso per il boot: tale operazione occupa circa 30 secondi e visualizza diverse stringhe a monitor. Ovviamente, non avendo configurato alcun server TFTP e DHCP, tale procedura non andrà a buon fine ed il sistema procederà con il boot del sistema operativo precedentemente installato (qualora ve ne fosse uno).

 

Preparazione del server: DHCP e TFTP

Questa operazione è la più impegnativa, ma non sarà difficile se si eseguono con attenzione tutti i passi di questo articolo.

Innanzitutto è necessario scaricare ed installare il software SERVA, il quale integra al suo interno un server DHCP ed uno TFTP. E' possibile scaricare la propria versione 32/64 bit a questo indirizzo: http://www.vercot.com/~serva/download.html. Nel nostro caso il software SERVA necessario al pc server è a 64 bit, quindi abbiamo scaricato quello posto a questo link: http://www.vercot.com/~serva/download/Serva_Non-Supporter_64_v2.0.0.zip. Una volta scaricato si proceda con l'installazione.

Procediamo ora con la creazione di una cartella che conterrà il boot loader da avviare insieme ai file da installare sul pc client. Per comodità la chiameremo "NETBOOT" e la posizioneremo in "C:", quindi il suo percorso diventerà "C:\netboot".

A questo punto si deve procedere con la configurazione del software SERVA. Si avvii il software appena installato, si clicchi quindi su "Settings". Nelle tab in alto, selezionare la voce "TFTP", e spuntare la casella "TPTP Server", configurando il resto della schermata come riportato dalla seguente immegine:

I settaggi più importanti sono due: la "TFTP server root direcotry" deve puntare alla cartella che abbiamo precedentemente creato, nella quale posizioneremo i file da avviare.

La seconda configurazione importante è la "Bind TFTP to this address". Nel nostro caso abbiamo disabilitato questa opzione, in modo da porre il server TFTP in ascolto su tutte le interfacce di rete del nostro sistema. In sistemi dotati di più interfacce (esempio una wifi ed una o più cablate) sarebbe opportuno effettuare il binding sull'interfaccia di rete cablata. Per il momento consigliamo di lasciare il tutto invariato come riportato in figura: tale configurazione funzionerà anche se il pc server dispone di più interfacce di rete.

Ora è necessario procedere alla configurazione del server DHCP: cliccare sulla tab "DHCP". E' possibile configurare tale server in due maniere: proxy o stand alone. Senza entrare in dettagli tecnici si consideri che l'opzione "proxyDHCP" va abilitata se il computer server è già connesso ad un router dotato di server DHCP. Questo è il caso più comune nelle configurazioni domestiche, quindi - qualora siate indecisi - è meglio applicare questa opzione. In tal caso la configurazione deve rispecchiare il seguente screen-shot:

Si noti che il "Boot File" specificato è "pxelinux.0". Questo è il percorso relativo al path della root directory del server TFTP del file che verrà caricato in fase di boot. Nel nostro caso stiamo preparando il boot per un sistema linux netboot, quindi è necessario specificare questo file.

 

Configurazione alternativa per i più esperti

Se il pc server non è connesso ad alcun server DHCP, allora è possibile configurare il servizio DHCP come unico server sulla rete. In tal caso occorre selezionare la spunta "DHCP Server" e configurare i restanti parametri nel rispetto della nostra configurazione di rete. Più in dettaglio occorre specificare la subnetmask che si vuole utilizzare (es. 255.255.255.0 oppure /24) e gli indirizzi IP del router e domanin name server (in questo caso devono coincidere a quello della macchina che farà da server).

 

Abilitare il server DNS

L'abilitazione del server DNS non è indispensabile: servirà solo se il computer client si connette ad internet tramite il server. Qualora la connettività ad internet sia garantito da un router presente sulla rete, tale opzione può essere disabilitata.

 

Preparazione dei file di boot

Occorre ora scaricare i file necessari al boot via rete. Nel nostro caso scaricheremo quelli relativi a debian. Tali file sono reperibili alla seguente pagina web: http://www.debian.org/distrib/netinst. Scorrendo la pagina fino alla voce in grassetto "Network boot" si giunge ad una serie di link che identificano varie distribuzioni per le varie architetture. Nel nostro caso ci interessa la versione i386, quindi clicchiamo il link " http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-i386/current/images/ ". A questo punto facciamo click sul menu di sinitra sulla voce "netboot". Quello che dobbiamo fare è scaricare l'intera il file compresso netboot.tar.gz ed aprirlo tramite un apposita utiliti di decompressione. Noi abbiamo usato winrar.

Una volta aperto tale archivio occorre estrarre tutto il suo contenuto all'interno della root directory dello spazio TFTP, quindi in "C:\netboot".

La situazione finale dovrebbe seere la seguente:

C:\netboot\pxelinux.0

C:\netboot\version.info

C:\netboot\debian-installer\i386\linux

C:\netboot\debian-installer\i386\pxelinux.0

C:\netboot\debian-installer\i386\initrd.gz

C:\netboot\debian-installer\i386\pxelinux.cfg\default

C:\netboot\debian-installer\i386\boot-screens\..

... eccetera ...

 

Ora è necessario copiare l'intera cartella C:\netboot\debian-installer\i386\pxelinux.cfg in C:\netboot

La situazione rimane identica alla precedente, con l'eccezione che viene sarà presente un'ulteriore riga

C:\netboot\pxelinux.cfg\default

 

La configurazione è così terminata. Tuttavia occorre fare una puntualizzazione: la stringa di configurazione che permette l'avvio del boot-loader e dell'installer di linux si trova all'interno del file posto nel seguente percorso:

C:\netboot\debian-installer\i386\boot-screens\txt.cfg

Editando questo file è possibile aggiungere o rimuovere eventuali opzioni al bootloader. Lasciamo questa configurazione ai più esperti e temerari che potrebbero voler "customizzare" il proprio bootloader.

 

 

Test avvio

Ci siamo, il sistema è pronto per essere testato. Avviamo il programma serva e riavviamo il computer client. Se tutto è andato a buon fine, il sistema si avvierà e sarà possibile installare il sistema operativo.

Si tenga presente che in questa guida si è spiegato come permettere l'avvio di un'installazione via NETWORK, perciò sarà necessario essere connessi ad internet tramite router o tramite il computer che funge da server.