Amikor indítólemezeket készítesz, az első néhány próba esetén valószínűleg nem fog indulni. A gyökér lemezt egy általános megközelítés szerint a már létező rendszered komponenseiből célszerű összeállítanod, és próbálj meg addig eljutni, hogy a lemez-alapú rendszered üzeneteket jelenít meg a konzolon. Ha már elkezd veled beszélgetni, a csatát félig megnyerted, mert már láthatod, hogy miről van szó, és kijavíthatod a felmerülő különálló problémákat, amíg a rendszer zökkenőmentesen nem működik. Ha a rendszer minden magyarázat nélkül áll meg, a hiba okát megtalálni elég nehéz. Ahhoz, hogy a rendszer addig eljusson, amikor már kommunikál veled, több fontos komponens jelenlétére, és helyes konfigurálásra van szükség. Amikor a rendszer nem beszél hozzád, a probléma kivizsgálásának ajánlott eljárása a következő:
Kernel panic: VFS: Unable to mount root fs on XX:YYEz gyakori probléma, és csak néhány oka lehet. Először, ellenőrizd az XX:YY eszközt az eszközök kódjának listájában, ez a helyes gyökér eszköz? Ha nem, valószínűleg nem futtattad az
rdev -R
parancsot,
vagy rossz image-re alkalmaztad. Ha az eszközkód helyes, gondosan
ellenőrizd a kernelbe fordított eszközmeghajtó szoftvereket. Győződj
meg róla, hogy szerepel-e floppy lemez, memória meghajtó és ext2
állományrendszer.
/bin
a gyökér lemezeden.
/lib
alkönyvtárában láthatsz.
/dev
alkönyvtárában
lévő szimbolikus láncok léteznek-e a gyökérlemez állományrendszereden,
ahol a láncok olyan eszközre mutatnak, melyek léternek a gyökér lemezeden
is. Néhány esetben a /dev/console
láncok fontosak lehetnek.
/dev/tty1, /dev/null, /dev/zero,
/dev/mem, /dev/ram
és /dev/kmem
állományokat.
Ha ezeket az általános dolgokat megvizsgáltad, íme néhány konkrétabb állomány, amit ellenőrizhetsz.
init
-et /sbin/init vagy
/bin/init néven mellékelted. Ellenőrizd, hogy futtatható-e.
ldd init
-et, hogy ellenőrizd az init eljáráskönyvtárait.
Általában ez csak a libc.so
, de azért csak ellenőrizd. Bizonyosodj meg róla,
hogy mellékelted az összes eljáráskönyvtárat és a betöltőket.
ld.so
-t az a.out-hoz, vagy ld-linux.so
-t
az ELF-hez.
getty
(vagy valami getty
-szerű program, mint a
agetty
, mgetty
vagy getty_ps
) programhívásokat.
Kétszer is hasonlítsd össze ezeket a merevlemezeden lévő inittab
-bal.
Nézd meg az általad használt program manuálját, hogy egyáltalán értelmes
dolgok vannak-e benne. Az inittab
valószínűleg a legtrükkösebb rész,
mert a szintakszis, és a tartalom az általad használt init programtól és
a rendszer természetétől függ. Az egyetlen lehetőség, hogy megbirkózz vele,
ha elolvasod az init
és inittab
programokra vonatkozó manuál
oldalakat, valamint pontosan megvizsgálod, hogy mit is csinál a rendszered
induláskor. Ellenőrizd, hogy az /etc/inittab-nak van-e
inicializáló bejegyzése. Ennek a rendszer inicializáló szkript végrehajtására
kell utasítást tartalmaznia, és a szkriptnek is léteznie kell.
init
-nél, futtasd az ldd
-t a getty
-dre is,
hogy lássad, mi szükséges hozzá, és hogy meggyőződhess róla, hogy a szükséges
eljáráskönyvtár-állományokat és betöltőket elhelyezted a gyökér állományrendszereden.
bash
vagy
ash
), mely képes futtatni az rc szkriptjeidet.
Ha az init
elindul, de a következő üzenetet kapod:
Id xxx respawning too fast: disabled for 5 minutes
az az init
-ből jön, általában azt jelzi, hogy a getty
vagy
login
az elindulása után közvetlenül meg is hal.
Ellenőrizd a getty
és a login
futtatható állományokat és az
eljáráskönyvtárakat, amiktől függenek. Nézd meg, hogy a /etc/inittab
állománybeli meghívásuk helyes-e. Ha szokatlan üzeneteket kapsz a getty
-től,
az jelentheti azt, hogy hibásan hívod a /etc/inittab-ból.
A getty paraméterei változnak, még az agetty
különböző verziói
között is számos inkompatibilis hívásformát jeleztek.
Ha megkapod a bejelentkező promptot és érvényes felhasználói nevet adsz meg, de a rendszer azonnal egy újabb felhasználói név megadását kéri, a probléma valószínűleg a PAM-mal vagy az NSS-el lesz. Nézd meg a PAM and NSS fejezetet. A probléma származhat még abból is, hogy shadow jelszavakat használsz, de nem másoltad át az indítólemezedre a /etc/shadow állományt.
Ha megpróbálsz néhány futtatható állományt lefuttatni, mint például a df
parancsot, ami megtalálható a mentő lemezeden, és ilyen üzenetet kapsz:
df: not found
(a df nem található), két dolgot nézz meg:
(1) Győződj meg róla, hogy a binárist tartalmazó alkönyvtár szerepel a PATH
elérési útvonalban, és
(2) Győződj meg róla, hogy a program számára szükséges eljáráskönyvtárak
(és betöltők) rendelkezésedre állnak-e.