HOWTO su Gentoo Linux Netboot

Contenuti:

1.Introduzione

Nota: Questo documento è al momento centrato su SPARC e ha come scopo quello di farti impostare il tuo server netboot su di una macchina con già installato Gentoo Linux.

Questo documento descrive come impostare un ambiente con boot da rete per sistemi Sun Microsystem SPARC o su computer basati su UltraSPARC. Questo documento presuppone che hai già una macchina con Gentoo Linux da usare come server di netboot.

Siccome il protocollo ARP tipicamente non redirige su differenti subnet di rete, entrambi i netboot server e netboot client necessitano di essere nella stessa subnet.

Una panoramica generica di quanto succede durante il processo di netboot è la seguente:

  1. Il client invia una richiesta ARP inversa (RARP) per avere un indirizzo IP.
  2. Una macchina server ritorna la risposta al client con l'indirizzo IP:
  3. Il client ora può scaricare un immagine di boot dal server RARP utilizzando il protocollo tftp.
  4. Quando l'immagine è scaricata, il client netboot avvia l'immagine.

In base a questa panoramica, necessitiamo di installare un demone ARP e un demone tftp.

2.Installazione del software e configurazione

Il demone per ARP 

AL momento, ci sono due possibili scelte per un demone ARP. Queste due scelte sono net-misc/iputils (installato come parte del profilo di sistema) e net-misc/rarpd.

Nota: L'installazione di net-misc/rarpd sovrascrive rarpd e le pagine del manuale rarpd di net-misc/iputils.

Impostazione di elementi comuni per rarpd: /etc/ethers

Non importa quale rarpd hai deciso di utilizzare, devi impostare il file /etc/ethers in entrambe i casi. Il file indica quali host rarpd devono rispondere quando viene inviata una richiesta, e a che indirizzo devono rispondere.

Il file /etc/ethers deve contenere l'indirizzo MAC della periferica di rete da cui si dovrà fare il netboot e l'hostname. Gli spazi delimitano gli indirizzi MAC dal nome dell'host e ogni copia MAC hostname deve essere su di una riga. Il seguente esempio per per un host chiamato sparc-netboot.gentoo.org:

Esempio 1: Esempio di /etc/ethers

08:00:20:77:1f:3e	sparc-netboot.gentoo.org

Nota: Se l'indirizzo MAC inizia o è 0, puoi scegliere di omettere il primo 0 (per esempio 08:00:20:77:1f:3e diventa 8:0:20:77:1f:3e).

Siccome il file /etc/ethers viene controllato ogni volta che viene ricevuta una richiesta, quando aggiungi un nuovo host non hai bisogno di riavviare il servizio rarpd.

Traduzione degli hostnames: /etc/hosts

Dal momento che ogni elemento del file /etc/ethers possiede un hostname, il server netboot necessita di poter tradurre il nome dell'host con il suo relativo indirizzo IP. Questo può essere fatto in due modi: tramite /etc/ethers oppure tramite il nameserver del server netboot.

Un elemento del file /etc/hosts deve essere molto simile a quello che probabilmente esiste da quando si ha installato Gentoo sul server netboot. Per esempio, per il nostro host, sparc-netboot.gentoo.org, presupponiamo che ha un IP 10.0.1.15. Così il file /etc/hosts sarà simile a:

Esempio 2: /etc/hosts

10.0.1.15  sparc-netboot.gentoo.org

Nota: A dipendenza dell'ambiente, per avviare l'host da rete puoi necessitare di dover consultare l'amministratore di rete per avere un indirizzo IP oppure l'indirizzo del server.

Se usi un nameserver, l'amministratore del server DNS deve aggiungere un record per l'hostname, nel nostro esempio sparc-netboot.gentoo.org, deve puntare ad un appropriato indirizzo IP. Consulta il tuo amministratore del server DNS e/o la documentazione per il software DNS del server DNS per sapere come aggiungere un elemento.

Nota: Se entrambe /etc/hosts ed il nameserver hanno un elemento per l'host che necessita di fare in boot da rete, viene usato per primo /etc/hosts (a meno che l'ordine di /etc/nsswitch.conf non è cambiato da quello predefinito).

Impostare net-misc/iputils rarpd

Anche se ci sono più opzioni di quelle che spiegheremo qui, queste opzioni dovrebbero permettervi di cominciare. Dato che attualmente non c'è nessuno script init.d per la versione rarpd di net-misc/putils, un'aggiunta sarà necessaria al file /etc/conf.d/local.start se si vuole abilitare i servizi rarpd al boot. Un esempio di aggiunta è la seguente;

Esempio 3: /etc/conf.d/local.start

/usr/sbin/rarpd -v -e eth0

La spiegazione dell'opzione mostrata è questa (presa dal man):

  • -v modo verbose
  • -e non controlla la presenza di un'immagine di boot, risponde se l'indirizzo MAC si traduce in un IP valido utilizzando /etc/ethers e il DNS
  • eth0 rappresenta l'interfaccia rarpd da associare

Per maggiori informazioni, consultare la sezione 8 delle man page su rarpd

Impostazioni per net-misc/rarpd

Prima dobbiamo installare rarpd con il seguente comando:

Esempio 4: Installazione di rarpd

# emerge net-misc/rarpd

Poi, si devono impostare le opzioni in /etc/conf.d/rarpd. Per una configurazione equivalente a quella utilizzata precedentemente per /net-misc/iputils, sistema /etc/conf.d/rarpd in modo da assomigliare al seguente:

Esempio 5: /etc/conf.d/rarpd

RARPD_OPTS="-v -i eth0"

La spiegazione di questo comando (presa dal man):

  • -v modo verbose. Visualizza le richieste a cui il demone sta ripondendo.
  • -i associa all'interfaccia menzionata. L'impostazione predefinita prevede che rarpd associa l'interfaccia predefinita per il tipo di sistema locale, se disponibile.

Per maggiori informazioni, consulta la sezione 8 nella man pages su rarpd e rarpd --help.

Il servizio tftpd 

La scelta di un demone tftp si basa su tre possibilità, net-misc/atftp, net-misc/netkit-tftp e net-misc/tftp-hpa. Per un'appropriato utilizzo devi installare soltanto uno di questi tre.

Impostazione degli elementi comuni di tftpd

Ogni servizio tftp necessita di una directory in cui mettere i files per i clients tftp. La directory che useremo per questo howto sarà /tftpboot. Quando le richieste dei clients verranno ricevute, tale directory apparirà come la directory root (/) per i clients. Si può inoltre dire al servizio tftp di girare con utente e gruppo nobody.

Se la directory che hai scelto non esiste ancora, deve essere creata con il comando mkdir. Il comando di esempio per /tftpboot è;

Esempio 6: Creazione della directory /tftpboot

# /bin/mkdir /tftpboot

Dopo bisogna cambiare il proprietario di /tftpboot in modo di essere dell'utente nobody e gruppo nobody.

Esempio 7: Cambiamento del propietario

# chown nobody:nobody /tftpboot

Il servizio atftp 

Prima, installa il pacchetto net-misc/atftp come segue;

Esempio 8: Installazione di atftp

# emerge net-misc/atftp

Dopo che il pacchetto net-misc/atftp è stato installato, deve essere configurato. Se si desidera che il servizio tftp sia avviato ad ogni boot è necessario inserirlo nel file /etc/conf.d/local.start in quanto tftp non ha un suo init.d, inetd o xinetd script. Se vuoi usare inetd o xinetd per controllare il servizio tftp, guarda le loro rispettive man pages.

Qui sotto è mostrato un esempio di file /etc/conf.d/local.start per atftpd;

Esempio 9: /etc/conf.d/local.start

/usr/sbin/in.tftpd -v --daemon /tftpboot

La spiegazione del comando appena mostrato è (presa dalle man pages);

  • -v Aumenta o imposta il livello di log. Nessun argomento aumenta di uno il valore corrente. Per default il livello è LOG_NOTICE, guarda syslog(3) per il livello di log. I livelli disponiblili sono da 0 (LOG_EMERG) a 7 (LOG_DEBUG).
  • --daemon Gira come demone. Non usare questa opzione se atftpd viene avviato tramite inetd.

Per maggiori informazioni, consulta la sezione 8 delle man pages su atfptd.

Il servizio netkit-tftp 

Prima, installa il pacchetto net-misc/tftp come segue;

Esempio 10: Installazione di netkit-tftp

# emerge net-misc/netkit-tftp

Secondariamente, se non è già presente sul sistema installa sys-apps/xinetd. Dopo che net-misc/netkit-tftp e sys-apps/xinetd sono stati installati, è necessario configurare netkit-tftp. netkit-tftp necessita di girare da xinetd, altrimenti non dispone di scripts di esempi propri. Un esempio di file xinetd è fornito qui sotto;

Esempio 11: Esempio di /etc/xinetd.d/tftp

service tftp
{
    protocol        = udp
    port            = 69
    socket_type     = dgram
    wait            = yes
    user            = nobody
    group           = nobody
    server          = /usr/sbin/in.tftpd
    server_args     = /tftpboot
    only_from       = 10.0.1.0
    disable         = no
}

Nota: Questo esempio di configurazione per tftp utilizza la riga "disable = no", che abilita il servizio per default. Questa opzione è opposta a quella fornita nei packages di Gentoo, che per impostazione predefinita prevedono di avere i relativi file xinetd con disable settato a yes.

La spiegazione delle opzioni appena mostrate può essere cambiata; user user in.tftpd.Le richieste tftpd sono gestite da group group in.tftpd.Le richieste tftpd sono gestite da server_args root directory per il demone tftp daemon dal quale fornire i files only_from dice a xinetd quali host sono autorizzati a ricevere connessioni da tftp

Maggiori informazioni sulla configurazione di xinetd possono essere trovate nella sezione 5 delle man pages di xinetd.

Se xinetd è avviato, puoi inviargli il segnale HUP per leggere i suoi files di configurazione;

Esempio 12: Invio del segnale HUP a xinetd

# /bin/killall -HUP xinetd

Se xinetd non è avviato, avvialo con il comando init.d;

Esempio 13: Avvio di xinetd

# /etc/init.d/xinetd start

Per maggiori informazioni, consulta la sezione 8 dell man pages di in.tftpd.

Il demone tftp-hpa 

Prima di tutto, installa il pacchetto tftp-hpa usando il seguente comando;

Esempio 14: Installazione di tftp-hpa

# emerge net-misc/tftp-hpa

tftp-hpa possiede un un suo init.d ed il relativo file di configurazione conf.d. Controlla per sicurezza che INIITFTPD_PATH e INITFTP_OPTS in /etc/conf.d/in.tftpd siano impostati come i seguenti;

Esempio 15: /etc/conf.d/in.tftpd

INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s -v -l ${INTFTPD_PATH}"

Il demone tftp può ora essere avviato tramite lo script init.d;

Esempio 16: Avviare in.tftpd

# /etc/init.d/in.tftpd start

Per maggiori opzioni, consulta la sezione 8 delle man pages di tftpd.

3.Preparazione di una immagine tftpboot utilizzabile dal client

Assicurati di avere un'immagine da usare per l'avvio da rete. Per avere un'appropriata immagine per il boot da rete per macchine sparc o sparc64 cerca in un mirror locale per i distfiles di Gentoo sotto experimental/sparc/tftpboot. Ora assumiamo che stai pianificando di avviare un host sparc64 usando l'immagine gentoo-sparc64-1.4_rc4-20040102.tftpboot.

Quando hai l'immagine, copiala in /tftpboot;

Esempio 17: Copiare l'immagine

# cp gentoo-sparc64-1.4_rc4-20040102.tftpboot /tftpboot

Adesso, quando il client netboot fa una richiesta tftp, controlla l'essistenza di un file che è il numero esadecimale del suo corrente indirizzo IP, e in alcune piattaforme un suffisso .ARCH. Il numero esadecimale deve essere formato da caratteri stampatello.

Una guida per la conversione decimale-esadecimale è disponibile all'indirizzo http://www.permadi.com/tutorial/numDecToHex/

E per i pigri/impazienti, puoi trovare un tool di conversione decimale-esadecimale all'indirizzo http://dan.drydog.com/hextemp.html

Nota: Dovrai convertire ogni ottetto dell'IP (il 10 in 10.0.1.15 per esempio), in esadecimale e non convertire l'intero numero IP in una sola volta.

Per il nostro IP d'esempio, 10.0.1.15, l'equivalente in esadecimale sarà;

Esempio 18: Esempio di indirizzo IP

decimale       10  0   1   15
esadecimale    0A  00  01  0F

Così, il nostro client netboot sparc64, quando farà un boot tftp cercherà un file chiamato 0A00010F.

Su sparc, invece, il file dovrà essere 0A00010F.SUN4M, 0A00010F.SUN4C o 0A00010F.SUN4D a dipendenza del sistema sparc.

Se sei veramente pigro (come me), per avere il nome del file corretto puoi far fare il netboot dell'host e poi guardare nei log del server per vedere quale file viene cercato.

Assicurati che entrambi i servizi rarpd e tftpd che hai scelto sono avviati, poi avvia l'host come descritto nel capitolo "Netboot del client"

Il client viene avviato dopo che è stato dato il comando per l'avvio da rete. Controlla in seguito il log di sistema per vedere se è stata aggiunta una linea per in.tftpd.

L'esempio di una linea aggiunta al log di un netboot server che utilizza sysklogd e tftp-hpa assomiglierà alla seguente;

Esempio 19: Log per un netboot server

Jan  3 22:48:59 stargazer in.tftpd[8368]: RRQ from 10.0.1.15 filename 0A00010F

Il nome del file è mostrato sopra, dopo "filename" della linea del log che in questo caso è 0A00010F.

Un modo per tenere sotto controllo quale immagine netboot stai usando e per permettere a più macchine di usare la stessa immagine, è quello di usare un link simbolico per creare il file con il valore esadecimale. Per creare questa immagine, usando in nostro esempio per sparc64 e gentoo-sparc64-1.4_rc4-20040102.tftpboot,usa il seguente comando;

Esempio 20: Lincare il file d'immagine

# /bin/ln -s /tftpboot/gentoo-sparc64-1.4_rc4-20040102.tftpboot \ 
/tftpboot/0A00010F

Adesso tutto è impostato per l'avvio da rete!

4.Netboot del client

Sun SPARC, da OpenBoot PROM (OBP), dai il comando;

Esempio 21: Boot di OBP

ok boot net

Alternativa per alcune macchine:

Esempio 22: Boot di OBP, alternativa

ok boot net-tpe

Nota: Se il tuo sistema al boot non ti si presenta con OBP, dovrai premere i tasti Stop e A, o inviare un segnale di break dalla console seriale prima che il sistema avvia il sitema operativo. Se il tuo sistema non trova un sistema operativo, puoi anche provare il boot dall'interfaccia di rete (che è quello che vogliamo) o usare un propmpt OBP.

Questo inizializza il processo di avvio da rete. Verranno visualizzate delle stringhe esadecimali. Quando l'immagine avrà finito di essere caricata, interverrà il kernel che avvierà il processo di boot del sistema operativo. Nel nostro caso con sparc64, vieni lasciato ad una shell dalla quale puoi iniziare il processo di installazione.

5.Problemi

Preparazione dei prerequisiti del software

Se il netboot server è un sistema Gentoo/Linux e hai problemi con l'installazione dei pacchetti rarpd e tftpd, cerca su http://forums.gentoo.org e http://bugs.gentoo.org per vedere se i tuoi stessi problemi sono stati riscontrati da qualcun'altro. Se non trovi niente, o la soluzione trovata non funziona, allora apri un bug su http://bugs.gentoo.org.

Hai dato il comando per il netboot ma l'avvio si blocca

Questo succede presumibilmente perchè il file system che stai cercando di caricare da tftpboot non è disponibile. Nei sistemi SPARC, vedrai probabilmente il seguente avviso;

Esempio 23: L'avvio si blocca

Rebooting with command: boot
Boot device: net  File and args:

Controlla ancora che esista il file del client in /tftpboot. Puoi vedere il nome del file che viene richiesto nel log di sistema. Quando avrai messo il file richiesto al suo posto, il client prova a caricarlo. A volta, quando non c'è il file, il client mette in attesa il download fino a quando il file compare. Per risolvere questo problema, ritorna al prompt OBP, e dai il comando ancora una volta "boot net". L'host ora dovrebbe avviare il download dell'immagine tftpboot e avviare il sistema operativo.

Stai tentando di fare l'avvio da rete ma tutto quello che vedi è il messaggio "Timeout waiting for ARP/RARP packet".

Questo può essere dovuto da diversi problemi;

  1. Assicurati che nel file /etc/ethers esiste l'aggiunta per il client in questione. Se l'indirizzo MAC è sbagliato e/o il server non può associare il nome dell'host per il client, non può rispondere con le informazioni dovute.
  2. Verifica che lo switch o l'hub di rete che collegano server e client sono connessi e permettono al traffico RARP di viaggiare liberamente. Se la richiesta del client non può raggiungere il server, o vice versa, l'host non può procedere.
  3. Nessuno risponde alla richiesta del client perchè non ci sono servizi in ascolto. Verifica che il servizio rarpd è avviato correttamente.
  4. Il client non pensa che la sua interfaccia di rete è collegata ad un hub/switch. Controlla che la porta dello switch o dell'hub relativa all'interfaccia di rete abbia il led acceso. Se il led è acceso, controlla le impostazioni di tpe-link-test? presenti in OBP con il comando; printenv tpe-link-test?. Dovrai ricevere un messaggio tipo tpe-link-test? false true. La prima colonna rappresenta il nome del paramentro, la seconda colonna, mostra il valore corrente del paramentro, mentre la terza colonna mostra il valore predefinito per il parametro. Nell'esempio riportato, possiamo vedere che il valore corrente è false, che significa che il client non sta controllando se può stabilire la connessione con lo switch o l'hub prima di mandare una richiesta RARPD. Molte volte questa è la causa del problema.

Per cambiare i valori di tpe-link-test? tramite il prompt OBP, dai il seguente comando;

Esempio 24: Cambiamento del valore di tpe-link-test

ok setenv tpe-link-test? true
tpe-link-test? =      true

Questo mostra il valore di tpe-link-test? è ora true. Prova di nuovo a riavviare il client.



Ultimo aggiorn.:
2004-09-22
Jason Wever
SPARC Developer

Diana Fossati
Traduttore

Sommario:  Guida per impostare un server netboot da usare con l'immagine per l'installazione netboot di Gentoo/SPARC.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.