Avanti Indietro Indice

13. Appendice B - Risoluzione dei problemi

 
          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.

Avanti Indietro Indice