Vai al contenuto | Salta in fondo

Home

Main.EthernetBoot r1.9 - 09 Jan 2006 - 15:16 - FrancescoLovergine Fine pagina


Inizio pagina | Salta alle attività

Guida passo passo al boot via ethernet



Introduzione

I computer con architettura Intel, hanno raggiunto in tempi relativamente recenti lo status di workstation. Uno degli aspetti che ne ha limitato l'uso in ambienti come reti di server e workstation Unix fino a pochi anni fa, erano le limitazioni intrinseche del BIOS e la capacità di booting solo da dispositivi ''ovvi'' come dischi, cd-rom o floppy.

Quando si devono amministrare parecchie decine o centinaia di macchine - come capita spesso in ambienti come certi campus universitari o certe aziende - la possibilità di installare un boot server e di bootstrappare le workstation di lavoro via rete, per la installazione, per l'uso come sistemi disk less o semplicemente allo scopo di centralizzare le configurazioni e le aree di lavoro su un unico server, diventa una feature largamente appetibile.

In alcuni casi inoltre, come un laptop, il PC potrebbe essere acquistato senza floppy (dispositivo ormai in disuso anche su parecchi desktop) e senza cd-rom, ipotesi non trascurabile nel caso di certi ultra-portatili (che lo hanno tipicamente esterno e opzionale, quindi $$$). Volendo installare GNU/Linux su tali macchine, può tornare utile il boot di rete, generalmente ormai disponibile. Non molti portatili infatti consentono di effettuare il boot da dispositivi USB.

Per quanto riguarda la possibilità di controllo remoto delle console delle workstation - altra caratteristica estremamente importante in ambienti professionali - si sono fortunatamente diffusi anche dei dispositivi KVM (keyboard-video-mouse) intelligenti che consentono di controllare non solo la console, ma anche l'alimentazione e l' awakening dei PC, soprattutto in configurazione rackable. Tutte cose che, in larga parte, workstation e server Unix blasonati (Sun, Digital, SGI, ecc.) erano in grado di fare già vent'anni fa, grazie a firmware decisamente ben fatti, rispetto all'ancora oggi primitivo BIOS dei PC. Ma questa è un'altra storia...

A rigore di logica, per effettuare il boot del sistema via rete - per esempio TCP/IP - la macchina deve essere in grado di ricevere l'assegnazione del suo indirizzo e nome, unitamente all'indirizzo del boot server, al percorso del kernel sul server ed eventuali altri parametri di boot, direttamente via ethernet, con un opportuno protocollo. I protocolli usati a tale scopo sono diversi, i più noti sono BOOTP, MOP e DHCP. Nel seguito ci concentreremo solo su DHCP, che di fatto è anche quello più complesso da utilizzare ed è il più largamente usato per i PC.

A questo si deve aggiungere un protocollo semplice di trasferimento file che consenta di caricare il kernel e quindi effettuare il boot (tranne per MOP, per la verità). Invariabilmente il protocollo più utilizzato a tale scopo è una variante di FTP che si chiama TFTP (trivial FTP appunto).

Vedremo nel seguito quindi i due aspetti fondamentali di configurazione di un boot server (completo di server DHCP e server TFTP) e di configurazione di un boot client, con lo scopo di installare il sistema operativo. Questa scelta ci permette di concentrarci sulle sole configurazioni per il boot, in quanto la preparazione di un sistema con boot stabilmente via rete (come un sistema diskless) è tipicamente cosa molto più complessa. E' infatti necessario modificare profondamente il sistema degli init script della distribuzione per il client e produrre un acconcio filesystem generale per l'uso diskless via NFS.

Nota: quanto segue fa riferimento alla configurazione di un sistema Debian GNU/Linux ''sarge'', ma può essere adattato all'uso di qualsiasi distribuzione che preveda l'installazione via rete tra quelle possibili .

Configurazione di un server di boot

Come precedentemente indicato occorre configurare un boot server come server DHCP e server TFTPD. I due servizi non devono necessariamente risiedere sulla stessa macchina per la verità, ma ipotizzeremo per semplicità che la stessa macchina sia usata per entrambi i servizi.

Configurazione di un server DHCP come boot server

Supponiamo che la nostra LAN abbia subnet 192.168.0.0/24 con gateway 192.168.0.1, nameserver principale 192.168.0.2 e secondario 192.168.0.3, e che il nostro boot server sia 192.168.0.4. Il boot server potrà usare un range di 20 indirizzi dinamici 192.168.0.200-219 da assegnare alle macchine che ne fanno richiesta. Per semplicità supponiamo di non avere l'esigenza di assegnare staticamente degli indirizzi a macchine specifiche, cosa peraltro fattibile.

L'installazione di un server DHCP è immediata, è sufficiente installare la versione disponibile in Debian con

apt-get install dhcp3-server

Si tratta poi di configurare il file /etc/dhcp3/dhcpd.conf come segue:

allow booting;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.219;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.2, 192.168.0.3;
option broadcast-address 192.168.0.255;
option domain-name "pincopallo.com";
filename "pxelinux.0";
next-server 192.168.0.4;
}

Le righe in grassetto in particolare sono quelle necessarie a consentire il boot in protocollo PXE usando un file di configurazione pxelinux.0 mantenuto sul server 192.168.0.4. Si possono configurare stanzas differenti a seconda delle esigenze, per specificare file di boot diversi, generalmente in base a uno specifico indirizzo ethernet di client. Questo accorgimento è opportuno ad esempio per evitare che, inavvertitamente, venga fatto il boot automatico di macchine in giro per la LAN ad ogni avvio di queste ultime, causando le ire degli ignari proprietari...

Configurazione di un server TFTP

Anche l'installazione di un server TFTP in Debian è immediata:

apt-get install tftpd-hpa

Alert! Si noti che il server da installare per sarge è quello indicato, altri programmi possono avere problemi con il protocollo di boot PXE.

Una volta installato ci si accerti che sia stata aggiunta una riga

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

al file /etc/inetd.conf nella ipotesi si avere inetd installato (il default). Se il daemon è in ascolto eseguendo netstat -an si vedrà una riga tipo:

udp        0      0 0.0.0.0:69              0.0.0.0:*

Diversamente è sufficiente eseguire

pkill -1 inetd

per dare la "sveglia" a inetd e attivare la modifica. Nel caso di filtri netfilter inbound attivi (regole di iptables per intenderci), ci si accerti di aprire la porta incoming 69/udp alla LAN 192.168.0.0/24. La directory /var/lib/tftpboot è quella direttamente accessibile a un client TFTP per scaricare un qualsiasi file di cui sia noto il sub-path. Se si è curiosi sul funzionamento di TFTP rispetto al tradizionale protocollo FTP, è sufficiente installare anche il client tftp e fare qualche prova. Per il seguito non è necessario farlo, comunque.

Installazione dei file di boot

Il sistema di installazione per sarge può essere scaricato dal link

http://ftp.it.debian.org/debian/dists/sarge/main/installer-i386/current/images/netboot/netboot.tar.gz

o da un qualsiasi mirror sparso per il pianeta. Si dovrà scompattare il TarPalla nella directory di lavoro di tftpd ovvero

cd /var/lib/tftpboot
tar xzvf /path/to/netboot.tar.gz
ln -s debian-installer/i386/pxelinux.0
ln -s debian-installer/i386/pxelinux.cfg

I due link al programma pxelinux.0 e alla sua directory di configurazione pxelinux.cfg servono a semplificare la configurazione dei path. In particolare tale directory contiene il solo file default che è quello da modificare nel caso occorrano particolari altri parametri per il boot del debian-installer.

Per conoscenza il file default standard ha il contenuto seguente per il programma pxelinux.0:

display debian-installer/i386/boot-screens/syslinux.txt
default linux

F1 debian-installer/i386/boot-screens/f1.txt
F2 debian-installer/i386/boot-screens/f2.txt
F3 debian-installer/i386/boot-screens/f3.txt
F4 debian-installer/i386/boot-screens/f4.txt
F5 debian-installer/i386/boot-screens/f5.txt
F6 debian-installer/i386/boot-screens/f6.txt
F7 debian-installer/i386/boot-screens/f7.txt
F8 debian-installer/i386/boot-screens/f8.txt
F9 debian-installer/i386/boot-screens/f9.txt
F0 debian-installer/i386/boot-screens/f10.txt

label linux
        kernel debian-installer/i386/linux
        append vga=normal initrd=debian-installer/i386/initrd.gz \
               ramdisk_size=9438 root=/dev/rd/0 devfs=mount,dall rw  -- 
label expert
        kernel debian-installer/i386/linux
        append DEBCONF_PRIORITY=low vga=normal \ 
               initrd=debian-installer/i386/initrd.gz ramdisk_size=9438 \
               root=/dev/rd/0 devfs=mount,dall rw  --
label linux26
        kernel debian-installer/i386/2.6/linux
        append vga=normal initrd=debian-installer/i386/2.6/initrd.gz \
               ramdisk_size=10948 root=/dev/rd/0 devfs=mount,dall rw  --
label expert26
        kernel debian-installer/i386/2.6/linux
        append DEBCONF_PRIORITY=low vga=normal \
               initrd=debian-installer/i386/2.6/initrd.gz ramdisk_size=10948 \
               root=/dev/rd/0 devfs=mount,dall rw  --

prompt 1
eimeout 0

Alert! Si noti che append deve essere seguito da una riga unica, il carattere \ di continuazione è stato solo inserito per comodità di formattazione nel testo

Configurazione di un client per il boot via ethernet

Le macchine con BIOS relativamente nuovo non richiedono nulla di particolare per il boot PXE, semplicemente è necessario inserirlo tra i boot possibili e nel giusto ordine nel setup del PC. Fatto quello, la macchina farà il boot e inizierà la fase di installazione in modo totalmente automatico, assegnandosi preventivamente un indirizzo IP disponibile nel pool prescelto. Nel caso in cui la macchina non preveda il boot via rete, è sempre possibile utilizzare un apposito floppy/cdrom di boot, avendo l'accortezza di sceglierne uno con il supporto per la propria scheda di rete, per esempio

cat eb-5.4.0-3c509.zdsk > /dev/fd0

L'opportuna ROM può essere scelta su http://rom-o-matic.net/. E' necessario selezionare accuratamente l'immagine corretta per il proprio chipset. Maggiore documentazione in merito è disponibile su http://etherboot.sourceforge.net/

-- FrancescoLovergine - 19 Aug 2005

Inizio pagina


Sei qui: Main > TipsAndTricks > EthernetBoot



Inizio pagina

Copyright © 2008 dei contributori. Tutto il materiale di questo sito è sotto copyright dei rispettivi autori.
Idee, richieste, problemi riguardanti LUGBari? Invia suggerimenti