Gentoo Logo

Guida al Netboot su Gentoo Linux

Indice:

1.  Introduzione

Nota: Questo documento è al momento centrato su SPARC e ha come scopo quello di fare impostare il proprio 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 si abbia 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 può così tentare di 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, c'è la necessità di installare un demone ARP e un demone TFTP.

2.  Installazione del software e configurazione

Il demone per ARP

È già presente un demone ARP nel proprio sistema, e fa parte del pacchetto net-misc/iputils.

Impostazione di elementi comuni per rarpd: /etc/ethers

Bisogna impostare il file /etc/ethers, che 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 il suo 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:

Codice 2.1: Esempio di /etc/ethers

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

Nota: Se l'indirizzo MAC inizia o è 0, si può 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 si aggiunge un nuovo host non c'è 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/hosts 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 proprio host, sparc-netboot.gentoo.org, presupporre che abbia un IP 10.0.1.15. Così il file /etc/hosts sarà simile a:

Codice 2.2: /etc/hosts

10.0.1.15  sparc-netboot.gentoo.org

Nota: In base all'ambiente, per avviare l'host da rete si potrebbe avere la necessità di dover consultare l'amministratore di rete per avere un indirizzo IP oppure l'indirizzo del server.

Se si usa un nameserver, l'amministratore del server DNS deve aggiungere un record per l'hostname, nell'esempio di questa guida sparc-netboot.gentoo.org, deve puntare ad un appropriato indirizzo IP. Consultare il proprio amministratore del server DNS e/o la documentazione per il software DNS del server DNS per sapere come aggiungere un elemento.

Nota: Se sia /etc/hosts che 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 sia diverso da quello predefinito).

Impostare rarpd

Anche se ci sono più opzioni di quelle spiegate qui, queste opzioni dovrebbero permettere di cominciare. Dato che attualmente non c'è nessuno script init.d per rarpd, un'aggiunta sarà necessaria al file /etc/conf.d/local.start se si vogliono abilitare i servizi rarpd all'avvio. Un esempio di aggiunta è la seguente;

Codice 2.3: /etc/conf.d/local.start

/usr/sbin/rarpd -v -e eth0

La spiegazione dell'opzione mostrata è questa (presa dalla pagina di manuale):

  • -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 man 8 rarpd.

Il Demone tftpd

La scelta di un demone TFTP si basa su due possibilità, net-ftp/atftp e net-ftp/tftp-hpa. Per operare correttamente bisogna installare soltanto uno di questi due.

Impostazione degli elementi comuni di tftpd

Ogni servizio TFTP necessita di una directory in cui mettere i file per i client tftp. La directory che verrà usata in questa guida sarà /tftpboot. Quando le richieste dei client verranno ricevute, tale directory apparirà come la directory root (/) per i client. Si può inoltre specificare di eseguire il servizio TFTP come utente e gruppo nobody.

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

Codice 2.4: Creazione della directory /tftpboot

# /bin/mkdir /tftpboot

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

Codice 2.5: Cambiamento del proprietario

# chown nobody:nobody /tftpboot

Il servizio atftp

Per prima cosa, installare il pacchetto atftp come segue;

Codice 2.6: Installazione di atftp

# emerge 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 atftp non ha un suo init.d, inetd o script xinetd. Se si vuole usare inetd o xinetd per controllare il servizio tftp, guardare le loro rispettive pagine di manuale.

Qui di seguito viene mostrato un esempio di file /etc/conf.d/local.start per atftpd.

Codice 2.7: /etc/conf.d/local.start

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

La spiegazione del comando appena mostrato è (presa dalle pagine di manuale);

  • -v Aumenta o imposta il livello di log. Nessun argomento aumenta di uno il valore corrente. Come impostazione predefinita il livello è LOG_NOTICE, guardare syslog(3) per il livello di log. I livelli disponibili 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, consultare man 8 atftpd.

Il demone tftp-hpa

Prima di tutto, installare il pacchetto tftp-hpa:

Codice 2.8: Installazione di tftp-hpa

# emerge tftp-hpa

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

Codice 2.9: /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:

Codice 2.10: Avviare in.tftpd

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

Per maggiori opzioni, consultare man 8 tftpd.

3.  Preparazione di una immagine tftpboot utilizzabile dal client

Assicurarsi di avere un'immagine da usare per l'avvio da rete. Controllare nel proprio mirror distfiles locale la disponibilità dell'immagine appropriata. Ora assumere che si stia pianificando di avviare un host sparc64 usando l'immagine gentoo-sparc64-20100128.tftpboot.

dopo aver recuperato l'immagine, copiarla in /tftpboot:

Codice 3.1: Copiare l'immagine

# cp gentoo-sparc64-20100128.tftpboot /tftpboot
# chmod 644 /tftpboot/gentoo-sparc64-20100128.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 in stampatello.

Per l'IP d'esempio in questa guida, 10.0.1.15, l'equivalente in esadecimale sarà:

Codice 3.2: Convertire in esadecimale

# printf "%.2X%.2X%.2X%.2X\n" 10 0 1 15

Codice 3.3: Esempio di indirizzo IP

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

Così, per il client netboot d'esempio, quando esso farà un boot tftp cercherà un file chiamato 0A00010F.

Se si è veramente pigri (come l'autore di questa guida), per avere il nome del file corretto si può far fare il netboot dell'host e poi guardare nei log del server per vedere quale file viene cercato.

Assicurarsi che sia li servizio rarpd che il demone TFTP scelti in precedenza siano avviati, poi avviare l'host come descritto nel capitolo Netboot del client.

Il client viene avviato dopo che è stato dato il comando per l'avvio da rete. Controllare in seguito il log di sistema per individuare un riferimento a in.tftpd.

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

Codice 3.4: 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 si sta 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-20100128.tftpboot,, usare il seguente comando:

Codice 3.5: Creare un collegamento al file d'immagine

# /bin/ln -s /tftpboot/gentoo-sparc64-20100128.tftpboot \
/tftpboot/0A00010F

Adesso tutto è impostato per l'avvio da rete!

4.  Netboot del client

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

Codice 4.1: Boot di OBP

ok boot net

Alternativa per alcune macchine:

Codice 4.2: Boot di OBP, alternativa

ok boot net-tpe

Nota: Se il proprio sistema al boot non si presenta con OBP, bisognerà premere i tasti Stop e A, o inviare un segnale di break dalla console seriale prima che il sistema avvii il sistema operativo. Se la propria macchina non trova un sistema operativo, si può anche provare il boot dall'interfaccia di rete (che è quello che si desidera) o restituire un prompt di 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. In questo caso con sparc64, si verrà 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 si hanno problemi con l'installazione dei pacchetti rarpd e tftpd, cercare sui Forum di Gentoo e su Gentoo Bugzilla per vedere se i propri stessi problemi sono stati riscontrati da qualcun'altro. Se non si trova niente, o la soluzione trovata non funziona, allora aprire un nuovo bug.

È stato dato il comando per il netboot ma l'avvio si blocca

Questo succede presumibilmente perchè il file system che si sta cercando di caricare da tftpboot non è disponibile. Nei sistemi SPARC, si vedrà probabilmente il seguente avviso:

Codice 5.1: L'avvio si blocca

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

Controllare ancora che esista il file del client in /tftpboot. Si può vedere il nome del file che viene richiesto nel log di sistema. Quando il file richiesto esisterà, il client proverà a caricarlo. A volte, quando non c'è il file, il client mette in attesa il download fino a quando il file compare. Per risolvere questo problema, ritornare al prompt OBP, e dare nuovamente il comando "boot net". L'host ora dovrebbe avviare il download dell'immagine tftpboot ed avviare il sistema operativo.

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

Questo può essere dovuto da diversi problemi:

  1. Assicurarsi che nel file /etc/ethers esista la voce 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. Verificare che lo switch o l'hub di rete che collegano server e client siano connessi e permettano 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. Verificare che il servizio rarpd è avviato correttamente.
  4. Il client non pensa che la sua interfaccia di rete sia collegata ad un hub/switch. Controllare che la porta dello switch o dell'hub relativa all'interfaccia di rete abbia il led acceso. Se il led è acceso, controllare le impostazioni di tpe-link-test? presenti in OBP con il comando; printenv tpe-link-test?. Si dovrebbe ricevere un messaggio tipo tpe-link-test? false true. La prima colonna rappresenta il nome del parametro, la seconda colonna, mostra il valore corrente del parametro, mentre la terza colonna mostra il valore predefinito per il parametro. Nell'esempio riportato, si può 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, dare il seguente comando;

Codice 5.2: Cambiamento del valore di tpe-link-test

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

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



Stampa

Aggiornato il 8 luglio 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Guida per impostare un server netboot da usare con l'immagine per l'installazione netboot di Gentoo/SPARC.

Jason Wever
Sviluppatore SPARC

Joshua Saddler
Redazione

Diana Fossati
Traduzione

Davide Cendron
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.