PXE per l'avvio di un elaboratore senza disco fisso

Con NLNX è possibile gestire l'avvio di elaboratori remoti, privi di disco fisso, principalmente per avviare un sistema completo, in un file system remoto, in sola lettura, funzionante in modo analogo a quello del DVD live. La configurazione di questo tipo di servizio riguarda il protocollo DHCP, ma può essere generata in modo guidato attraverso nlnxrc.

Tabella u44.4. Script nlnxrc: configurazione del servizio DHCP.

Comando Descrizione
nlnxrc dhcp-server config
nlnxrc dhcp-server unconf
Attiva o disattiva il funzionamento in qualità di servente DHCP.
nlnxrc dhcp-server edit
Modifica la configurazione del servente DHCP, intervenendo nel file di configurazione in modo libero.

Va comunque osservato che il sistema di avvio remoto, organizzato per NLNX, potrebbe servire anche per avviare attraverso la rete degli elaboratori che dispongono localmente di una copia di NLNX, sia in una partizione propria, sia in un file-immagine, il quale potrebbe essere stato organizzato in sola lettura o in lettura e scrittura.

PXE

Un sistema NLNX installato secondo le modalità descritte in altri capitoli, dispone della directory /var/lib/tftpboot/, accessibile attraverso il protocollo TFTP (lo si vede nel file /etc/inetd.conf). A partire da questa directory si articolano altre directory e file che servono all'avvio di un sistema remoto, utilizzando inizialmente il protocollo PXE.

Per attivare il protocollo PXE si utilizza PXELINUX che fa parte in generale di SYSLINUX. PXELINUX richiede il caricamento e l'esecuzione di un piccolo programma, pxelinux.0, con il quale viene letto un menù, conforme al formato usato dai vari sistemi di SYSLINUX. Precisamente, in base alla configurazione prevista per NLNX, attraverso il protocollo DHCP e TFTP, l'elaboratore remoto carica ed esegue il file pxelinux/pxelinux.0;(1) successivamente questo programma carica il menù pxelinux/pxelinux.cfg/default.(2) Il file pxelinux/pxelinux.cfg/default viene prodotto automaticamente da nlnxrc, quando lo si usa per configurare il servente DHCP.

Il menù contenuto nel file pxelinux/pxelinux.cfg/default offre diverse tipologie di avvio remoto. In generale è possibile selezionare la voce net che si riferisce all'avvio di un sistema NLNX su disco remoto e in sola lettura (analogamente al caso di un sistema su DVD live); in alternativa sono disponibili le voci menu e omenu, il cui comportamento è esattamente uguale a quello delle stesse voci disponibili in un DVD, pertanto con queste è possibile avviare sia un sistema locale, sia un sistema di emergenza, per la manutenzione. È anche disponibile la voce mem, per avviare Memtest86+.

This is the NLNX PXE boot loader. Please insert a name and
then press [Enter].

    rescue              Generic rescue system
    diskless            Generic diskless system
    nowayout            Diskless network limited
    telnet              Diskless telnet server
    mem                 Memory check

Se non si seleziona alcuna voce, ma si preme ugualmente [Invio], viene tentato l'avvio dal disco fisso locale. Così si possono configurare gli elaboratori in modo che la prima voce di avvio (del firmware, ovvero del BIOS) tenti l'uso della rete, perché se non si esegue una selezione si passa automaticamente al disco locale.

Questa scelta consente, per esempio, di installare una copia di NLNX in un file-immagine ospitato nel file system locale di un altro sistema operativo, senza doversi prendere cura del suo avvio, che così avverrebbe semplicemente attraverso la rete.

NLNX in un file system di rete

Se gli elaboratori remoti, senza disco fisso, dispongono di memoria centrale sufficiente, oppure hanno un piccolo disco fisso con una partizione per lo scambio della memoria, è possibile fare in modo che si avvii un sistema completo, con le stesse facoltà di un NLNX avviato da un DVD live, ovvero con un file system principale in sola lettura.

Per realizzare questo obiettivo si installa una copia del file-immagine nlnx.img nella directory /opt/nlnx/.

Oltre alla copia, occorre verificare la configurazione del file /etc/exports, il quale deve consentire un accesso in lettura a tale gerarchia, lasciando all'utente root tutti i suoi privilegi, come nell'esempio seguente che va adattato eventualmente alla propria rete locale:

...
/opt/nlnx   172.16.0.0/12(async,ro,no_root_squash,\
  \nohide,subtree_check) ...

Avendo sistemato questo, con l'ausilio di nlnxrc si va a completare la configurazione, cosa che comporta anche la copia dei file dei kernel e dei dischi RAM iniziali corretti:(3)

nlnxrc dhcp-server config[Invio]

.-----------------------DHCP range-------------------------.
| Current "/etc/dhcp3/dhcpd.conf" file might be set as it  |
| follows:                                                 |
| ...                                                      |
| subnet 172.21.0.0 netmask 255.255.0.0 {                  |
| #  range 172.21.254.100 172.21.254.199;                  |
|   option broadcast-address 172.21.255.255;               |
|   option routers 172.21.254.254;                         |
|   option domain-name-servers 172.21.254.254;             |
|   option time-servers pool.ntp.org;                      |
|   option ntp-servers pool.ntp.org;                       |
|   option root-path "172.21.254.254:/opt/nlnx";           |
|   option nis-domain "nis.nano";                          |
|   option nis-servers 172.21.254.254;                     |
|   option lpr-servers 172.21.254.254;                     |
|   option log-servers 172.21.254.254;                     |
|   ...                                                    |
| }                                                        |
|                                                          |
| Please insert or confirm the DHCP address range:         |
| .------------------------------------------------------. |
| |172.21.254.100 172.21.254.199                         | |
|-`------------------------------------------------------'-|
|               <  OK   >          <Annulla>               |
`----------------------------------------------------------'

Si ipotizza di voler utilizzare dinamicamente gli indirizzi da 172.21.1.100 a 172.21.1.199:

[Canc][Canc]...

172.21.1.100 172.21.1.199<OK>

.--------------DHCP server configuration----------------.
| Is the following configuration correct?               |
|                                                       |
| ddns-update-style none;                               |
| option option-128 code 128 = string;                  |
| option option-129 code 129 = text;                    |
| subnet 172.21.0.0 netmask 255.255.0.0 {               |
|   range 172.21.1.100 172.21.1.199;                    |
|   option broadcast-address 172.21.255.255;            |
|   option routers 172.21.254.254;                      |
|   option domain-name-servers 172.21.254.254;          |
|   option time-servers pool.ntp.org;                   |
|   option ntp-servers pool.ntp.org;                    |
|   option root-path "172.21.254.254:/opt/nlnx";        |
|   option nis-domain "nis.nano";                       |
|   option nis-servers 172.21.254.254;                  |
|   option lpr-servers 172.21.254.254;                  |
|   option log-servers 172.21.254.254;                  |
|   use-host-decl-names      on;                        |
|   filename "/pxelinux/pxelinux.0";                    |
| }                                                     |
|-------------------------------------------------------|
|               < Yes >          < No  >                |
`-------------------------------------------------------'

Se la configurazione proposta è quella che si desidera, si può confermare:

<Yes>

L'installazione del file-immagine nlnx.img rappresenta un metodo semplice, pratico ed efficace, per mettere a disposizione NLNX in rete. È sufficiente che nella directory /opt/nlnx/ sia presente tale file con il nome nlnx.img:

cp nlnx.img /opt/nlnx/[Invio]

Controllo dell'avvio di sistemi locali

La disponibilità di un elaboratore con NLNX che offre il servizio di avvio tramite PXE, come descritto in questo capitolo, può essere utile anche per avviare degli elaboratori remoti, i quali dispongono sì del sistema operativo, ma non della possibilità di avviarlo. In tal caso, dal menù di PXE va scelta la voce menu, oppure auto, ma nessuna delle due è quella predefinita.

Eventualmente, se il servizio PXE dovesse servire soltanto per avviare elaboratori con un proprio NLNX locale, si potrebbe intervenire manualmente nella configurazione di PXELINUX nel file pxelinux/pxelinux.cfg.

È il caso di rammentare che la possibilità di avviare degli elaboratori remoti diventa molto importante quando NLNX è stato installato lì in un file-immagine, ospitato nel file system di un altro sistema operativo. In tal caso, quel file-immagine deve chiamarsi nlnx.img ed essere collocato nella radice di quel file system.


1) Il percorso assoluto è /var/lib/tftpboot/pxelinux/pxelinux.0.

2) Il percorso assoluto è /var/lib/tftpboot/pxelinux/pxelinux.cfg/default.

3) Il sistema che viene installato nella directory /opt/nlnx/, per funzionare in sola lettura attraverso la rete, ha un proprio insieme di moduli e una propria coppia di kernel, potenzialmente differenti rispetto al sistema complessivo che lo ospita. Pertanto, il sistema di avvio attraverso la rete, con il protocollo PXE, deve utilizzare questi kernel e i dischi RAM iniziali relativi.

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net