The Linux Bootdisk HOWTO: Rozwiązywanie problemów.
Następna strona
Poprzednia strona
Spis treści
7. Rozwiązywanie problemów.
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:
Możesz ujrzeć komunikat taki jak ten:
Kernel panic: VFS: Unable to mount root fs on XX:YY
Jest 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.
Sprawdź, czy główna dyskietka faktycznie zawiera odpowiednie katalogi.
Może się zdarzyć, że skopiujesz nieodpowiedni katalog, w rezultacie
otrzymując na głównej dyskietce przykładowo katalog /rootdisk/bin
zamiast /bin.
Sprawdź, czy plik /lib/libc.so jest dowiązaniem do tego
samego pliku, co /lib/libc.so na twardym dysku.
Sprawdź, czy symboliczne dowiązania z katalogu /dev na dysku
twardym istnieją także dla odpowiednich urządzeń na głównej dyskietce.
W wielu sytuacjach szczególnie istotne jest /dev/console.
Sprawdź, czy dołączyłeś pliki /dev/tty1, /dev/null, /dev/zero,
/dev/mem, /dev/ram i /dev/kmem.
Sprawdź konfigurację jądra, obsługa wszystkich zasobów wymaganych do
zalogowania się musi być wbudowana w jądro, a nie w postaci modułów. Tak
więc obsługa ramdysku i systemu plików ext2 musi być wbudowana.
Sprawdź, czy w jądrze główne urządzenie oraz parametry ramdysku są
ustawione poprawnie.
Gdy przeanalizujesz już wszystkie powyższe przypadki, możesz sprawdzić
następujące pliki:
Upewnij się, że istnieje plik /sbin/init lub
/bin/init. Upewnij się, że ma on uprawnienia do
wykonywania.
Uruchom 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.
Upewnij się, że posiadasz odpowiedni program ładujący biblioteki --
ld.so dla bibliotek a.out lub ld-linux.so dla bibliotek
ELF.
Sprawdź odwołania do 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ć.
Tak samo jak w przypadku init, uruchom ldd podając jako
parametr twój program getty i sprawdź, czy istnieją wszystkie
potrzebne biblioteki oraz program ładujący.
Upewnij się, że dołączyłeś powłokę (np. bash czy ash), która
potrafi wykonać wszystkie skrypty rc.
Jeśli na dyskietce istnieje plik /etc/ld.so.cache, to
odśwież go.
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.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
bootdisk howto pl 8bootdisk howto pl 13bootdisk howto pl 3bootdisk howto pl 4bootdisk howto pl 10bootdisk howto pl 5bootdisk howto pl 6bootdisk howto pl 9bootdisk howto pl 2bootdisk howto pl 11bootdisk howto plbootdisk howto plbootdisk howto pl 12bootdisk howto pl 14bootdisk howto pl 1PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5więcej podobnych podstron