R I S O L U Z I O N E D E I P R O B L E M I
Se si incontra un qualsiasi problema durante l'installazione o l'uso
di questo pacchetto, per favore come prima cosa si legga il seguente
testo e tutta la documentazione pertinente. In particolare, se si hanno
dei problemi nel configurare il server, è il caso di consultare la
documentazione del server. Si faccia anche riferimento al manuale
utente della propria scheda di rete o alla documentazione del sistema
operativo dei client diskless. Comunque, se ancora non si riesce a
risolvere il problema per conto proprio, è possibile inviarmi una email
presso
gero@gkminix.han.de
Gli utenti che parlano tedesco possono mandarmi mail in tedesco.
Altrimenti vi prego di scrivere in inglese. Ho ricevuto delle email
in un inglese così penoso che non sono riuscito nemmeno a capire quale
fosse il problema; in tal caso non posso essere d'aiuto. Vi prego
inoltre di scusarmi, ma non posso rispondere a domande fattemi per
posta normale o per telefono; semplicemente non ho il tempo per
occuparmene.
Se si decide di mandarmi una email, per favore si descriva il proprio
problema nella maniera più precisa possibile. Di solito è utile mandare
parti rilevanti dei file di configurazione (devo pagarmi da solo
l'accesso ad Internet, quindi, per favore, si citi nella forma più
breve possibile). Riguardo i problemi con le bootrom, di solito
aiuta riportare _esattamente_ l'output dello schermo, ma anche
includere qualsiasi messaggio d'errore. Inoltre si descriva nella
maniera più fedele possibile come si è creato il problema, così che io
possa provare a simularlo sul mio hardware.
Inoltre si osservi che non posso essere d'aiuto riguardo qualsiasi
problema relativo al server, visto che ci sono tantissimi sistemi
diversi sul mercato. Lo stesso vale riguardo i problemi con le schede
di rete; semplicemente non dispongo delle possibilità economiche per
comprare tutte le schede presenti sul mercato per provarle.
Personalmente uso le schede NE2000 e WD8013, quindi probabilmente posso
essere d'aiuto con queste.
Se trovate un problema che sembra essere un bug nel codice apprezzerei
veramente che mi mandaste una nota. E se aveste anche una soluzione per
quel bug apprezzerei ancor più il vostro messaggio.
Oltre a contattarmi direttamente c'è anche una mailing list riguardante
il boot via rete a cui ci si può iscrivere. Si scriva una mail a
majordomo@baghira.han.de contenente il messaggio 'subscribe netboot'
nel corpo del testo (il subject della mail non è importante). Gli
iscritti alla mailing list potrebbero essere in grado di aiutarvi con
qualsiasi problema doveste incontrare nel preparare un client diskless.
Oltre a ciò io uso tale lista per comunicare l'uscita di ogni nuova
versione del pacchetto netboot.
Problema: Il mio sistema operativo OS/XY non è supportato da netboot
Fornirei volentieri il supporto per tutti i sistemi operativi
sul mercato, ma non ho le risorse per farlo. Tuttavia, se
desiderate che un certo sistema operativo venga supportato,
mettetevi in contatto con me. Dovreste comunque fornirmi una
copia funzionante e provvista di licenza di quel sistema
operativo. Siete anche invitati a scrivere un vostro boot
loader e a mandarmelo affinché lo includa in netboot sotto i
termini della GPL GNU.
Problema: Provando a preparare una bootrom ottengo un errore di
compilazione
Gli script di installazione richiedono la compilazione di un
paio di programmi di utilità che sono necessari solo durante
la compilazione della bootrom. Essi vanno compilati su un
sistema Unix; quindi, se ottenete un errore, per favore
comunicatemelo, così che io possa includere una patch nelle
prossime versioni.
Problema: Ottengo un errore da make che dice qualcosa tipo "missing
delimiter"
Alcuni Makefile usano degli ifdef, che compilatori più vecchi
non capiscono. Anche alcuni sistemi più "moderni", come lo
SCO Open-Server 5, hanno tali problemi. In tal caso dovete
procurarvi e installare il make GNU sul vostro sistema (che è
comunque la scelta migliore).
Problema: La bootrom non parte affatto
O avete un floppy nel vostro lettore, oppure avete un disco
rigido installato con una partizione segnata come attiva
e la bootrom è stata fatta in modo tale da lasciare effettuare
al BIOS la ricerca di partizioni attive all'avvio. Entrambi i
casi inducono il sistema ad effettuare l'avvio dal supporto
avviabile anziché dalla bootrom. Semplicemente togliete il
floppy o usate fdisk per segnare tutte le partizioni come non
avviabili (cioè inattive). In alternativa, potete anche
preparare la bootrom in modo tale che non permetta al BIOS di
cercare partizioni avviabili. Il programma che effettivamente
crea la bootrom ('makerom', viene chiamato quando si lancia
'make bootrom') vi chiederà se volete farlo dopo aver
selezionato l'immagine kernel della bootrom.
Problema: La bootrom si comporta stranamente dopo l'avvio e può anche
inchiodare l'intero sistema
Se avete compilato i programmi mknbi su un sistema avente i
byte in ordine big endian (come i sistemi Motorola o PPC) ciò
potrebbe indicare che il programma di configurazione non è
stato in grado di trovare l'ordine giusto dei byte. Potrebbe
anche essere che ci sia un bug nel codice di ordinamento dei
byte. Inoltre alcuni sistemi, come gli SPARC, non permettono
l'accesso ai dati su indirizzi non allineati. Di solito
'configure' dovrebbe accorgersi di tali condizioni. Comunque,
se 'configure' non è in grado di rilevare correttamente il
tipo di sistema che state usando, correggete a mano il file
config.h e riprovate. Per favore, comunicate tali condizioni
ed annotate anche quale sistema avete usato per
l'installazione.
Problema: Il packet driver non è in grado di partire correttamente
Innanzitutto controllate quale messaggio d'errore stampa il
packet driver. Di solito questo problema è il risultato di
una non corretta configurazione della scheda di rete, quindi
controllate che usi un indirizzo I/O, una linea di interrupt e
un canale DMA (se applicabile) per conto suo, e che il packet
driver usi i valori giusti. Un altro problema comune con le
schede ethernet che usano la memoria condivisa (come le schede
WD80?3) è la sovrapposizione di tale memoria condivisa con
l'area della rom usata dalla bootrom. In tal caso scegliete un
diverso indirizzo di memoria condivisa. Se funziona, dovreste
poi controllare di aver configurato correttamente il packet
driver attraverso il programma di configurazione della bootrom.
Di solito il packet driver stampa come si aspetta che sia
l'hardware, così potete usare tali informazioni per controllare
la vostra configurazione.
Problema: La bootrom mi dice che non c'è abbastanza memoria ma ho xx
megabyte installati
Questo problema è un risultato del fatto che il BIOS avvia la
bootrom nel modo reale del processore. La bootrom è quindi in
grado di accedere solo al primo megabyte inferiore della
memoria, indipendentemente da quanti ne siano installati.
Inoltre 384 kB di esso sono riservati per la ROM e la memoria
video, quindi restano solo 640 kB. Sfortunatamente alcuni
sistemi riservano anche parte di questi 640 kB per dati interni
del BIOS. Questa è chiamata area dati estesa del BIOS e si sa
che è usata nella maggior parte dei sistemi PS/2. Ma anche
altri BIOS usano tale area dati estesa del BIOS che è
generalmente selezionabile nella configurazione del BIOS.
Quindi dovreste provare a deselezionare tale caratteristica.
Se ciò non è possibile allora siete sfortunati - spiacente.
Problema: La bootrom non riceve una risposta bootp e si blocca
stampando dei puntini
Innanzi tutto bisogna controllare se bootpd gira sul proprio
server o se è avviato correttamente da inetd. Poi bisogna
controllare che /etc/bootptab del server sia configurato
correttamente. Specialmente l'indirizzo hardware, il nome e
l'indirizzo IP del client devono essere corretti.
La maggior parte dei server bootp hanno la capacità di
scrivere informazioni di debugging in un file di log. Usate
tale capacità per controllare che il vostro server riceva
veramente le richieste bootp dalla bootrom del client e che
invii una risposta valida. Cercate anche i messaggi d'errore
nel file di log. Anche se il proprio bootpd non scrive in un
file di log distinto, potrebbe usare syslog sul vostro sistema,
quindi va cercato il nome del file di log nel file di
configurazione di syslogd e poi cercate gli errori al suo
interno.
Se potete usare un programma di tracciamento degli errori,
come tcpdump, sarà possibile controllare che la bootrom
invii richieste corrette e che il server stia rispondendo
correttamente. In tal caso è più probabile che sia un problema
nella bootrom e quindi bisogna creare una nuova immagine della
bootrom con il modulo di debugging del packet driver, che è
incluso. Bisognerebbe poi vedere i pacchetti di richiesta
della bootrom che sono in uscita e le risposte del server in
entrata. Se non ci sono pacchetti in arrivo, sebbene abbiate
verificato che il server sta inviando risposte corrette, allora
potrebbe esserci un problema con la vostra scheda di rete.
L'avete configurata correttamente? C'è attaccato un cavo (non
vi sto prendendo in giro, sono cose che succedono veramente)?
Se non funziona niente provate ad avviare il client diskless
col sistema operativo scelto e provate ad accedere alla scheda
di rete usando gli strumenti di quel sistema operativo.
Se il server non invia pacchetti di risposta ma il file di log
di bootpd indica delle risposte corrette, potrebbe essere un
problema di impostazione arp sul vostro server. Di solito l'arp
non dovrebbe interessarvi, tuttavia alcune vecchie versioni di
bootpd per Linux hanno dei problemi in tal senso che potrebbero
essere risolti impostando manualmente la tabella arp.
Problema: La bootrom riceve una risposta da bootp ma non riesce a
caricare il file con l'immagine di boot
Questo è probabilmente un problema dovuto alla configurazione
di tftpd sul server. tftpd è in esecuzione quando avviate il
codice della bootrom? Se no controllate che inetd sia
configurato correttamente. Potrebbe anche esserci un wrapper
TCP/IP che gira sul vostro server e che proibisce l'accesso al
servizio tftp (che è notoriamente molto insicuro e quindi
candidato per essere avviato da un wrapper per la sicurezza
in Internet, come tcpd). Controllate tutti i file di
configurazione d'accesso di tcpd. Inoltre tftpd deve essere in
grado di accedere al file con l'immagine di avvio. Di solito,
per motivi di sicurezza, gira come utente con privilegi molto
modesti e potrebbe non avere il permesso per leggere il file
con l'immagine di boot; quindi dovete controllare e
configurare correttamente i permessi del file con l'immagine
di boot.
Problema: Il boot loader dell'immagine riporta un errore
Congratulazioni! Avete appena scoperto un bug nel boot loader.
Per favore comunicatemelo.
Problema: Quando uso il menu di bootrom per caricare il sistema Unix
senza il disco fisso locale, mi dà un misterioso messaggio
d'errore (in particolare, SCO Unix dice che non è in grado
di aprire il boot device). Tuttavia, l'avvio senza la bootrom
funziona senza problemi.
Alcuni sistemi operativi, in particolar modo i sistemi di tipo
Unix, leggono la tabella delle partizioni dopo l'avvio e
provano a trovarsi da soli la loro partizione di boot. Quando
si usa la bootrom non è necessario segnare la partizione Unix
come avviabile, quindi il loader di avvio di Unix fallisce. Per
risolvere tale problema segnate la partizione Unix come attiva
con un qualche programma fdisk. Per evitare che incominci a
girare al posto della bootrom, create la bootrom in modo tale
che essa non permetta al BIOS di cercare partizioni di boot
sugli hard disk installati (il programma 'makerom', che parte
quando lanciate 'make bootrom', vi chiederà se volete farlo
dopo aver selezionato una immagine del kernel).
Problema: Sto caricando Linux sul mio client diskless e il kernel
mi dice di inserire un floppy di boot e di premere enter.
Innanzi tutto dovete controllare di aver preparato
correttamente il vostro kernel. Deve avere il supporto per il
filesystem principale integrato. Se volete usare come root una
directory montata via NFS il kernel deve avere il supporto
TCP/IP installato. Inoltre deve avere un driver integrato per
la vostra scheda di rete e NFS e NFSROOT devono essere entrambi
specificati. Se usate un ramdisk il suo supporto deve essere
integrato, insieme al supporto per il filesystem con cui avete
formattato l'immagine del ramdisk. Prego, osservate che il
kernel caricato non è in grado di usare moduli all'avvio (può
farlo solo _dopo_ che il filesysem principale è stato montato,
non prima), quindi tutto deve essere compilato in modo
monolitico.
Se il kernel non è in grado di montare la sua root via NFS, ciò
potrebbe avere diverse cause. Serve che tutti gli indirizzi
nel file /etc/bootptab siano corretti e che i diritti di
accesso sul server siano impostati correttamente (non solo
quelli in /etc/exports ma anche i permessi per la directory da
montare). Se sono corretti controllate che sul server stia
girando un portmapper e che abbia registrato correttamente i
servizi mountd e nfsd. In genere ciò si può fare tramite il
comando
rpcinfo -p
Notate che i servizi mostrati qui sono solo quelli il cui
processo server sta realmente girando. L'output di rpcinfo
dovrebbe quindi somigliare a:
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
100005 1 udp 663 mountd
100005 1 tcp 665 mountd
Comunque i numeri di porta potrebbero essere diversi.
Quando il kernel inizia a montare la directory principale NFS,
esso emette il nome che quella directory ha sul server.
Dovrebbe essere lo stesso di quello configurato in
/etc/bootptab. Controllate che sia corretto. Se non lo è potete
provare ad usare l'opzione -d di mknbi-linux per specificare
esplicitamente il nome.
Se il kernel riceve un errore dall'nfsd del server, stampa un
numero definito concordemente al protocollo NFS. I numeri che
si presentano più spesso sono:
1 - permesso di accesso alla directory negato
2 - la directory non esiste
5 - errore di I/O sul filesystem del server
13 - nfsd non riesce ad accedere alla directory
20 - il path non è una directory
63 - il path è troppo lungo
Osservate che i programmi nfsd e mountd leggono solo
/etc/exports all'avvio; se in seguito avete cambiato tale file
dovete riavviare entrambi i demoni. In più, con nfsd nelle
versioni per Linux precedenti la 2.1, incontrerete dei problemi
con i file speciali, tipo i socket di dominio UNIX o i file
speciali a blocchi/caratteri sulle vostre partizioni NFS.
Dovreste quindi usare le versioni più recenti disponibili.
Problema: Il kernel Linux monta correttamente la sua root ma non mi
dà un prompt di login.
1.) Ciò potrebbe essere dovuto ad una non corretta installazione
del filesystem principale (vedere il n.2, sotto). Tuttavia, è
anche possibile che il vostro server abbia riportato i numeri
primario e secondario errati per il dispositivo console, sebbene
li abbiate specificati correttamente nella directory principale
montata via NFS. So di questo problema con i server AIX e
HP-UX, ma potrebbe verificarsi anche su quegli altri che non
trasferiscono i device speciali, perché Linux invece ne ha
bisogno. Una soluzione per risolvere questo problema è di
avviare il client diskless con una immagine su ramdisk come
sua root e poi montare quella che dovrebbe-essere la directory
root sul server usando NFS. Poi potete creare i file speciali
nella directory dev usando il programma mknod per Linux e
quindi usare la root NFS montando di nuovo la bootimage.
Un altro modo è di provare a scoprire in che modo il sistema
operativo del server codifica i numeri primario/secondario sul
suo filesystem. Per esempio, HP-UX usa numeri di dispositivo a
32 bit, con gli 8 bit più significativi che rappresentano il
numero primario e i 24 bit meno significativi che rappresentano
il numero secondario del device:
primario << 24 | secondario ==> aaaaaaaabbbbbbbbbbbbbbbbbbbbbbbb
In questa rappresentazione (a) indica un bit del numero primario
e (b) un bit del numero secondario. Linux invece usa il seguente
schema:
primario << 8 | secondario ==> 0000000000000000aaaaaaaabbbbbbbb
Ora, il protocollo NFS trasferisce questi 32 bit proprio come
sono, senza nessuna interpretazione riguardo i numeri primario/
secondario. Ciò significa che tutti i bit importanti nella
rappresentazione Linux entrano nel numero secondario in HP-UX.
Quindi, se si crea un device sul server HP-UX, bisogna sempre
dargli un numero primario zero e comporre il numero secondario
nel modo suddetto per Linux. Ad esempio, per fare in modo che
Linux veda un device 5/2 nella sua directory /dev (montata con
NFS), bisogna comporre il numero secondario del device su HP-UX
come segue:
5 << 8 | 2 ==> 1282
In tal modo il device da creare sul server HP-UX è 0/1282, di
modo che Linux, una volta che il filesystem è stato montato
via NFS, vedrà 5/2.
2.) Un'altra causa di questo problema potrebbe essere che il
processo init non è partito affatto. Ciò potrebbe essere dovuto
a delle librerie condivise in modo errato, che il client
potrebbe riuscire a vedere ma senza un appropriato file
ld.so.cache. Oppure le librerie condivise non sono
raggiungibili affatto dal client. Bruce Janson e Markus
Gutschke hanno raccolto un discreto elenco di possibilità che
dovreste controllare:
- non avete una copia privata delle directory /, /etc,
/var, ...
- nella vostra directory /dev mancano le voci /dev/zero
e/o /dev/null oppure le voci dei device sono
condivise con un server che usa diversi numeri
primario e secondario (cioè un server su cui non sta
girando Linux - vedere sopra).
- nella vostra directory /lib mancano delle librerie
(molto probabilmente libc* e/o libm*) oppure non ha
i file loader ld*.so*.
- avete trascurato di lanciare ldconfig per aggiornare
/etc/ldconfig.cache oppure non avete un file di
configurazione per ldconfig.
- i vostri file /etc/inittab e/o /etc/rc.d/* non sono
stati adattati ai client.
- al vostro kernel mancano alcune fondamentali capacità
che andavano scelte in fase di compilazione (tipo il
supporto per filesystem NFS, il boot via rete, trans-
name (opzionale), il supporto per i file ELF, il
supporto per la rete, i driver per la vostra scheda
ethernet).
- manca l'eseguibile init (in una delle directory note
al kernel: /etc, /sbin, ?)
- manca /etc/inittab
- manca /dev/tty?
- manca /bin/sh
- programmi di sistema che insistono nel voler creare/
scrivere al di fuori di /var (gli esempi tipici sono
mount e /etc/mtab*).
Problema: Impossibile compilare la bootrom
Per favore, mettetevi in contatto con me se incontrate
qualsiasi problema durante la ricompilazione della bootrom.