Po stworzeniu dyskietek kilka pierwszych prób wystartowania systemu często kończy się niepowodzeniem. Najlepszym podejściem podczas budowania głównego systemu plików jest łączenie elementów istniejącego systemu tak, aby system dyskietkowy przynajmiej wyświetlał komunikaty na konsoli. Gdy zacznie on komunikować się z tobą, jesteś już w połowie drogi do sukcesu, ponieważ możesz zobaczyć, co sprawia problemy i naprawić je pojedynczo aż system będzie działał poprawnie. Jeśli system po prostu wiesza się bez żadnego komunikatu, to odnalezienie przyczyny staje się trudne. Stworzenie systemu, który zostanie poprawnie wystartowany do momentu, w którym będzie mógł komunikować się z użytkownikiem, wymaga zainstalowania i skonfigurowania kilku komponentów. Zalecaną metoda badania problemu gdy system nie chce się komunikować z użytkownikiem jest następująca:
Kernel panic: VFS: Unable to mount root fs on XX:YYJest to powszechny problem i ma jedynie kilka przyczyn. Po pierwsze, sprawdz nazwę urządzenia XX:YY z listą. Czy to poprawne urządzenie główne? Jeśli nie, prawdopodobnie nie uruchomiłeś
rdev -R, lub zrobiłeś to na
złym obrazie. Jeśli kod urządzenia jest poprawny, sprawdź uważnie sterowniki
włączone do jądra. Upewnij się że stacja dysków, ramdysk i system plików
ext2 zostały wbudowane.
/bin.
/dev na dysku
twardym istnieją także dla odpowiednich urządzeń na głównej dyskietce.
W wielu sytuacjach szczególnie istotne jest /dev/console.
/dev/tty1, /dev/null, /dev/zero,
/dev/mem, /dev/ram i /dev/kmem.
Gdy przeanalizujesz już wszystkie powyższe przypadki, możesz sprawdzić następujące pliki:
ldd init aby sprawdzić biblioteki wymagane przez
init. Na ogół jest to jedynie libc.so, ale zawsze warto sprawdzić.
Upewnij się, że istnieją wymagane biblioteki i program ładujący.
ld.so dla bibliotek a.out lub ld-linux.so dla bibliotek
ELF.
getty (lub podobnego programu, jak
agetty, mgetty czy getty_ps) w pliku inittab.
Porównaj je z plikiem inittab na dysku twardym. Przejrzyj strony man
używanych programów. Właśnie w pliku inittab może wystąpić najwięcej
problemów, ponieważ jego składnia zależy od konkretnego systemu i wersji
programu init. Jedynym rozwiązaniem jest przeczytanie stron man o
init oraz inittab, prześledzenie, co dokładnie system robi po
wystartowaniu. Sprawdź, czy w pliku /etc/inittab znajduje się
pozycja inicjalizacji systemu. Zawiera ona ścieżkę do skryptu inicjalizacji
systemu, który musi istnieć.
init, uruchom ldd podając jako
parametr twój program getty i sprawdź, czy istnieją wszystkie
potrzebne biblioteki oraz program ładujący.
bash czy ash), która
potrafi wykonać wszystkie skrypty rc.
Jeśli init startuje, ale otrzymujesz komunikat:
Id xxx respawning too fast: disabled for 5 minutes
pochodzi on z programu init i oznacza, że getty lub login
kończą pracę zaraz po uruchomieniu.
Sprawdz pliki getty i login i wszystkie potrzebne im biblioteki.
Upewnij się, że ich wywołania w pliku /etc/inittab są
prawidłowe. Jeśli otrzymujesz dziwne komunikaty od getty, może to
oznaczać, że jego wywołanie z /etc/inittab jest nieprawidłowe.
Opcje dla programów getty są zróżnicowane, nawet poszczególne wersje
agetty posiadają niekompatybilne ze sobą opcje przy
wywołaniu.
Jeśli podajesz poprawną nazwę użytkownika, ale system pyta natychmiast o inną nazwę, to problemem może być PAM bądź NSS. Zajrzyj do działu PAM i NSS. Problem może być także spowodowany tym, że korzystasz z haseł shadow, ale nie skopiowałeś pliku /etc/shadow na dyskietkę.
Jeśli próbujesz uruchomić jakiś program, przykładowo df, który znajduje
się na dyskietce, ale otrzymujesz komunikat: df: not found, to sprawdź
dwie rzeczy. Po pierwsze, upewnij się, że katalog w którym znajduje się
program jest w zmiennej PATH. Po drugie, sprawdź, czy istnieją wszystkie
potrzebne biblioteki oraz program ładujący.