Kernel HOWTO pl 7 (2)


Opis jądra Linux-a, jego instalacji itp.: Niektóre pułapki. Następna strona Poprzednia strona Spis treści 7. Niektóre pułapki. 7.1 make clean Jeśli twoje nowe jądro zaczyna robić dziwne rzeczy po rutynowym odnowieniu, przypuszczalnie zapomniałeś wydać polecenie make clean przed kompilacją nowego jądra. Oznaki takie to może być cokolwiek od zawieszania się systemu bez powodu, przez dziwne problemy z funkcajmi I/O, do ślimaczej szybkości. Nie zapomnij także wydać polecenia make dep. 7.2 Wielkie albo wolne jądro. Jeśli twoje jadro zżera ogromną ilość pamięci, jest zbyt duże, albo po prostu kompiluje się w nieskończoność nawet jeśli masz swoje nowiutkie Quadbazillium-III/4400, najprawdopodobniej skonfigurowałeś niepotrzebnie pełno sterowników. Jeśli czegoś nie używasz, to nie konfiguruj, bo to naprawdę zabiera niepotrzebnie pamięć. Najbardziej oczywistym symptomem przy zbyt dużym jądrze jest bardzo częste swapowanie (jeśli twój dysk ciągle rzęzi, a nie jest jednym z tych starych orłów Fujitsu, które brzmią jak lądujący odrzutowiec, przejrzyj konfigurację swojego jądra). Możesz dowiedzieć się ile pamięci zabiera twoje jądro odejmując wartość total mem z pliku /proc/meminfo albo z polecenia free od całkowitej ilości pamięci w twoim komputerze. 7.3 Port równoległy nie działa/moja drukarka nie działa. Opcje które musisz włączyć na PC-cie to: Najpierw w sekcji "General Setup" włącz "Parallel port support" oraz "PC-style hardware". Następnie w sekcji "Character devices" włącz "Parallel printer support". No i potem zostają nazwy. W wersji 2.2 zastosowano inne nazwy niż w starszych wersjach. Powodem tego jest, to że w starym jądrze miałeś lp1 a teraz jest to lp0. Spójrz do dmesg albo w katalogu /var/log/. 7.4 Jądro się nie kompiluje. Jeśli się rzeczywiście nie kompiluje, to pewnie jakaś łata się nie zainstalowała poprawnie. Twoja wersja "gcc" może także być nie w porządku. Albo pliki nagłówkowe są skopane. Upewnij się także czy symboliczne dołączenie, o których Linus pisze w README, są poprawnie zrobione. W ogólności jeśli standardowe jądro się nie kompiluje, to coś poważnego jest z systemem i niezbędna jest ponowna instalacja niektórych narzędzi. W niektórych przypadkach "gcc" może się wysypać z powodu problemów sprzętowych. Komunikaty w tym przypadku to: xxx exited with signal 15 i w ogólności są one bardzo tajemnicze. Pewnie bym o tym nie wspominał, gdyby nie to, że mi się to zdażyło - miałem kiedyś wadliwą pamięć cache a kompilator wtedy hulał sobie po pamięci gdzie chciał. Najpierw spróbuj przeinstalwać gcc. Podejrzenia na sprzęt rzucaj dopiero jeśli jądro się kompiluje przy wyłączonym zewnętrznym cache'u, albo przy zmniejszonej ilości pamięci RAM itp. Z reguły ludzi to trochę denerwuje jak im powiesz, że mają popsuty sprzęt. Cóż, ja tego nie zmyślam. Jest FAQ na ten temat - www.bitwizard.nl/sig11/. 7.5 Nowa wersja jądra nie chce się załadować. Albo nie uruchomiłeś lilo po skopiowaniu jądra na miejsce starego, albo źle skonfigurowałeś. Najczęściej spotykanym problemem jest nie wkompilowanie obsługi twoejgo dysku lub systemu ext2. Kiedyś miałem problem z plikiem konfiguracyjnym LILO; było tam boot = /dev/hda1 a powinno być boot = /dev/hda. Na początku to może byc naprawdę denerwujące, ale potem jak już masz dobry plik konfiguracyjny nie powinieneś go zmieniać. 7.6 Zapomniałeś uruchomić lilo, albo system się w ogóle nie ładuje. Oooj! Najlepszą rzeczą jaką można zrobić to załadować system z dyskietki lub CDROMu (no trzeba je oczywiście mieć :) ) i przygotować nową dyskietkę startującą (np. make zdisk). Musisz wiedzieć, gdzie jest twój główny system plików i jakiego jest typu. (ext2, minix). W przykładzie poniżej musisz także wiedzieć gdzie i na jakim systemie jest /usr/src/linux i gdzie jest zwykle zamontowany. W następującym przykładzie "/" to /dev/hda1, a partycja, na której znajduje się katalog linux to /dev/hda3 normalnie montowana na /usr. Działające jądro jest w katalogu /usr/src/linux/arch/i386/boot i nazywa się bzImage. Pomysł polega na tym, że jeśli masz działające bzImage, można tego użyć dla nowej dyskietki. Inna alternatywa, która może, ale nie musi działać (to zależy jak bardzo namieszałeś) opisana jest za tym przykładem. Najpierw, załaduj system z dyskietki, którą akurat masz i zamontuj system plików, na którym znajduje się działające jądro: mkdir /mnt mount -t ext2 /dev/hda3 /mnt Jeśli pojawi się komunikat, że katalog /mnt już jest - zignoruj go. Przy mount na pewno pojawi się komunikat ostrzegający, że montujesz niesprawdzony system plików - zignoruj go. Zmień katalog na ten, w którym znajduje się działające jądro (pamiętaj, że teraz masz dysk w katalogu /mnt). Umieść sformatowaną dyskietkę w stacji A: (nie dyskietkę, z której startowałeś !!!), przerzuć jądro na dyskietkę i skonfiguruj je dla twojego głównego systemu plików: cd /mnt/src/linux/arch/i386/boot dd if=bzImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1 Zmień katalog na / (cd /) i odmontuj katalog /mnt (umount /mnt). Powinieneś być teraz w stanie załadować system tak jak normalnie z tej dyskietki. Nie zapomnij uruchomić lilo po restarcie (czy co tam źle zrobiłeś). Jak już wspomniałem jest jeszcze inna metoda. Jeśli masz kopię działającego jądra, możesz jej użyć dla zrobienia dyskietki startowej. Weźmy znów powyższe warunki i załóżmy, że działająca kopia to /vmlinuz. Zrób to samo co powyżej z tymi zmianami: /dev/hda3 zmień na /dev/hda1/ (gł. system plików) /mnt/src/linux na /mnt if=bzImage na if=vmlinuz ------------------------------------------------------------------ Od tłumacza: Szczerze powiem/napiszę, że nie wiem po co ten człowiek tak komplikuje sprawę. Podam tu sposób, ktorego ja używam: Najpierw sprawdź czy masz takie linijki na początku pliku /etc/lilo.conf: prompt timeout=50 Jeśli nie to je dopisz. W swoim pliku /etc/lilo.conf mam zawsze dwie sekcje: image=/boot/vmlinuz label=linux root=/dev/hda1 read-only image=/boot/vmlinuz-old label=linux-old root=/dev/hda1 read-only Ja nazywam jądra z wersją na końcu (/vmlinuz-2.0.18) i robię symboliczne dołączenie ln -s /vmlinuz-2.0.18 /vmlinuz. Jeśli kompiluję tę samą wersję jądra, to przed kompilacją/instalacją ZAWSZE robię kopię jądra, które mi działa (powiedzmy cp /vmlinuz-2.0.18 /vmlinuz.2.0.18.old); Jak już skompiluję jądro to kopiuje je na /vmlinuz-wersja, przedtem KOPIA !!! - tylko jeśli kompilujemy tę samą wersję jądra, którą już używamy, bo nowsza wersja będzie miała inny numer na końcu. Po skopiowaniu zmieniamy dołączenie symboliczne (jeśli instalujemy nową wersję) - rm /vmlinuz; ln -s /vmlinuz-nowa_wersja /vmlinuz; oraz ln -s /vmlinuz-2.0.18.old /vmlinuz-old; potem uruchamiamy lilo i restartujemy komputer. Jeśli nowe jądro nie działa, to startujemy stare jądro (wpisujemy po pojawieniu się boot: lub LILO: na ekranie linux-old) i po wciśnięciu ENETERa mamy znowu działający system. Jeśli nie działające jądro było w tej samej wersji co poprzednie (po prostu potrzebowałeś coś dodać), to trzeba uruchomić system w trybie "single" (linux-old init single), odzyskać stare moduły ze zrobionej poprzednio kopii katalogu /lib/modules/x.y.z i zrestartować jeszcze raz system pamiętając, żeby startować stare jądro. Albo po prostu zmień odpowiednie dowiązanie /vmlinuz, żeby wskazywało też na starą wersję jądra (ln -s /vmlinuz-x.y.z.old /vmlinuz) i NIE ZAPOMNIJ po każdej takiej operacji uruchomić /sbin/lilo. ------------------------------------------------------------------ Używanie LILO z dużymi dyskami (z wiekszą ilością cylindrów niż 1023) może powodować problemy. Przeczytaj mini-HOWTO LILO i Large-Drives, jeśli chcesz znać więcej szczegółów. 7.7 Pisze mi "warning: bdflush not running". No i dobrze, że pisze, bo to może być poważny problem. Poczynając od wersji jądra 1.0.0 (około 20 kwietnia 1994) program update, który okresowo zapisuje zawartość bufora na dysk, został zmieniony. Zdobądź źródła programu "bdflush" (powinieneś je znaleźć tam gdzie jądro) i skompiluj. Dopóki nie uruchomisz tego programu radzę używać wersji jądra starszej od 1.0.0 (Czy ta wersja jest jeszcze do zdobycia !!!?). Instaluje się samo jako update, a po restarcie nowe jądro nie powinno juz narzekać. 7.8 Nie mogę zmusić mojego CD-ROM-u IDE/ATAPI do współpracy. Naprawdę dziwne. Bardzo dużo ludzi ma ten problem. Pewnie dlatego, że jest dużo przypadków, w których to się może dziać. Jeśli twój CD-ROM to jedyne urządzenie na konkretnym interfejsie IDE, musi być skonfigurowany zworkami jako master lub single. To jest najczęstszy problem. Creative Labs umieszcza teraz interfejs IDE na swoich kartach dźwiękowych. To prowadzi do ciekawego problemu, bo niektórzy mają tylko jeden interfejs IDE, wielu ma dwa interfejsy IDE na swoich płytach głównych (zwykle na IRQ15), więc najpopularniejszym rozwiązaniem jest uczynić interfejs na karcie dźwiękowej trzecim (IRQ11, a przynajmniej tak mi mówili). To powoduje w Linux-ie problemy, ponieważ wersja 1.2.x nie obsługuje trzeciego interfejsu IDE (obsługa jest w którejś z wersji 1.3.x, ale pamiętaj - to jest wersja testowa, i nie wykrywa sama tego interfejsu). Aby to obejść masz trzy możliwości: Jeśli masz już drugi interfejs, to przełóż CD-ROM na ten drugi interfejs jeśli jest wolny. Możesz wtedy wyłączyć interfejs z karty dźwiękowej, co zachowa jedno IRQ. Jeśli nie masz drugiego interfejsu, ustaw interfejs na karcie dźwiękowej (ale nie ten od dźwięku, tylko IDE) na przerwanie IRQ15 za pomocą zworek. Powinno działać. 7.9 Pisze coś o przestarzałym rutingu. Weź nową wersję programu route i wszelkie inne programy, które się zajmuja rutingiem. /usr/include/linux/route.h (który właściwie jest plikiem w /usr/src/linux) sie zmienił. 7.10 Firewall mi nie działa w wersji 1.2.0 Weź wersję co najmniej 1.2.1. 7.11 "Not a compressed kernel Image file". Nie używaj jako jądra pliku vmlinux w katalogu /usr/src/linux stworzonego podczas kompilacji. Plik, który powinieneś użyć to: /usr/src/linux/arch/i386/boot/bzImage. 7.12 Problemy z konsolą po odnowieniu do wersji 1.3.x. Zmień słowo dumb na linux w pliku /etc/termcap w sekcji dotyczącej konsoli. Mozliwe też, że będziesz musiał zrobić terminfo. 7.13 Nie mogę skompilować różnych rzeczy po odnowieniu jądra. Źródła jądra zawierają pewną liczbę plików nagłówkowych (te co się kończą na .h), do których odwołują się standardowe pliki nagłówkowe w /usr/include. Przeważnie wygląda to tak: #include <linux/xxyy.h> Zwykle w katalogu /usr/include jest symboliczne dołączenie linux wskazujące na /usr/src/linux/include/linux. Jeśli dołączenia tego nie ma, albo wskazuje na złe miejsce, to rzeczywiście większość programów się nie skompiluje. Jeśli zdecydowałeś, że źródła zajmują za dużo miejsca na dysku i skasowałeś je, to to jest właśnie twój problem. Razem z tymi źródłami skasowałeś pliki nagłówkowe. Inny problem to problem z dostępem do plików: Jeśli twój root ma umask ustawiony tak, że użytkownicy nie mogą widzieć plików przez niego stworzonych, i rozpakowałeś źródła bez opcji p (zachowaj oryginalne flagi dostępu), użytkownicy nie będą mogli użyć kompilatora. Najprościej naprawić to w ten sposób: zaloguj się jako root cd /usr/src/linux/ chmod -R go+r include/ 7.14 Zwiększanie limitów. Kilka następujących przykładowych poleceń może pomóc tym, którzy zastanawiają się jak zwiększyć pewne programowe ograniczenia wprowadzone przez jądro: echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages Następna strona Poprzednia strona Spis treści

Wyszukiwarka

Podobne podstrony:
Kernel HOWTO pl 12 (2)
Kernel HOWTO pl 9 (2)
Kernel HOWTO pl 6 (2)
Kernel HOWTO pl 4 (2)
Kernel HOWTO pl (2)
Kernel HOWTO pl 5 (2)
Kernel HOWTO pl 2 (2)
Kernel HOWTO pl
Kernel HOWTO pl 11 (2)
Kernel HOWTO pl 1 (2)
Kernel HOWTO pl 10 (2)
Kernel HOWTO pl 3 (2)
Kernel HOWTO pl (3)
Kernel HOWTO pl 8 (2)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
kernel howto 3 clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvq clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvq
cdrom howto pl 1

więcej podobnych podstron