Odpravljanje težav ali agonija poraza

Če ste začetniki, se pripravljene zagonske diskete pogosto ne bodo hotele zagnati v prvih nekaj poskusih. Splošni pristop k pripravi korenske diskete je zbrati komponente iz obstoječega sistema ter zatem poskusiti zagnati sistem vsaj do točke, kjer se na konzoli začno prikazovati sporočila. Ko je enkrat mogoče brati sporočila, je pol bitke že za vami, ker lahko vidite, zaradi česa se pritožuje, in lahko tako odpravljate posamezne probleme, dokler sistem ne teče gladko. Če se sistem kratkomalo obesi brez obrazložitve, je ponavadi težko ugotoviti vzrok. Priporočen postopek za raziskovanje problemov, kjer sistem ne izpisuje sporočil, je naslednji:

Ko ste obdelali te splošne vidike, je treba preveriti še nekaj določenih datotek:

  1. Prepričajte se, da je datoteka init vključena kot /sbin/init ali /bin/init. Prepričajte se, da je izvršljiva.

  2. Poženite ukaz ldd init da ugotovite, od katerih knjižnic je init odvisen. Ponavadi je to samo knjižnica libc.so, vendar vseeno raje preverite. Prepričajte se, da ste vključili potrebne knjižnice in nalagalnike.

  3. Prepričajte se, da imate pravi nalagalnik za knjižnice -- ld.so za a.out oz. ld-linux.so za ELF.

  4. V datoteki /etc/inittab na zagonski disketi preverite klice programa getty (ali kakšne zamenjave zanj, npr. agetty, mgetty ali getty_ps). Dvakrat jih preverite v primerjavi z inittabom na trdem disku. Poglejte priročniško stran uporabljenega programa, da se prepričate, ali imajo smisel. Datoteka inittab verjetno predstavlja najzapletenejši del, ker sta njena skladnja in vsebina odvisni od programa init in od narave sistema. Edini način, da se je lotite, je branje priročniških strani za init in inittab ter da do potankosti ugotovite, kaj vaš sistem počne ob zagonu. Preverite, ali /etc/inittab vsebuje vnos za inicializacijo sistema. Ta vnos bi moral vsebovati ukaz za izvršitev skripta za to nalogo in ta skript vsekakor mora obstajati.

  5. Podobno, kot ste storili pri ukazu init, poženite ldd še na ukazu getty, da vidite, katere knjižnice potrebuje in da preverite, ali so te knjižnice in nalagalniki vključeni v korenski datotečni sistem.

  6. Prepričajte se, da ne manjka lupinski program (npr. bash ali ash), ki je sposoben izvesti vse zagonske skripte rc.

  7. Če imate na reševalni disketi datoteko /etc/ld.so.cache, jo naredite znova.

Če se init zažene, vendar dobite sporočilo, podobno naslednjemu:

        Id xxx respawning too fast: disabled for 5 minutes
je to sporočila procesa init, ki ponavadi pomeni, da se program getty ali login prekine takoj po zagonu. Preglejte njuni izvršilni datoteki in knjižnice, od katerih sta odvisna. Prepričajte se, da sta v datoteki /etc/inittab klicana pravilno. Če dobite čudna sporočila od programa getty, lahko to pomeni, da je obrazec za njegovo izvajanje v datoteki /etc/inittab napačen.

Če dobite vnosnik za prijavo in vnesete veljavno uporabniško ime, sistem pa vas takoj spet vpraša po uporabniškem imenu, je lahko problem s PAM ali NSS. Oglejte si podrazdelek Podpora za PAM in NSS. Lahko pa uporabljate senčna gesla (angl. shadow) in ste pozabili prepisati /etc/shadow na korensko disketo.

Če poskusite pognati neko izvršljivo datoteko na reševalni disketi, npr. df, in dobite sporočilo v slogu "df: not found", preverite dvoje: (1.) ali je imenik z izvršljivimi datotekami naveden v spremenljivki PATH, in (2.) ali imate knjižnice (in nalagalnike), ki jih program potrebuje.