Jeśli pojawiły się kłopoty
Istnieje pięć kategorii problemów, które możesz napotkać budując jądro. Oto one: błąd config'a - jeśli program config zgłosił błąd podczas przetwarzania Twojego pliku konfiguracyjnego, najprawdopodobniej popełniłeś mały błąd w postaci literówki. Na szczęście config wyświetli linię, z którą miał problem. Możesz szybko do niej dotrzeć używając vi. Na przykład, jeśli widzisz: config: line 17: syntax error W vi możesz łatwo skoczyć do danej linii, pisząc 17G w trybie komend. Upewnij się, że słowo kluczowe zostało poprawnie wprowadzone, porównaj z oryginalnym plikiem GENERIC, lub z innym wiarygodnym źródłem. błąd make: Jeśli pojawił się błąd podczas wykonywania komendy make, zwykle wskazuje to na błąd w Twoim opisie jądra. Nie jest to jednak błąd na tyle wyraźny, aby wykazał go config. Jak poprzednio, przejżyj plik konfiguracyjny jądra. Jeśli w dalszym ciągu nie możesz rozwiązać problemu, wyślij swój plik konfiguracyjny, do freebsd-questions@FreeBSD.org, gdzie Twój problem zostanie rozwiązany bardzo szybko. błąd instalowania nowego jądra: Jeśli jądro skompilowało się poprawnie, ale występują błędy podczas instalacji (komenda make install, albo make installkernel kończy się niepowodzeniem), pierwszą rzeczą, którą należy sprawdzić jest, czy system działa na poziomie bezpieczeństwa (securelevel) równym 1 lub wyższym (zobacz init(8)). Dzieje się tak dlatego, że instalacja jądra stara się ściągnąć z niego niezmienialną flagę i nałożyć ją na nowe. Poziom bezpieczeństwa równy jeden lub wyższy zapobiega zdejmowaniu niezmienialnych flag (immutable flags) wszystkich plików w systemie. Dlatego instalacja jądra musi być wykonywana na zerowym lub niższym poziomie bezpieczeństwa. jądro nie uruchamia się ponownie: Jeśli Twoje nowe jądro nie uruchamia się ponownie, bądź nie potrafi rozpoznać urządzeń, nie panikuj! BSD jest wyposażony we wspaniały mechanizm przywracania po instalacji niekompatybilnego jądra. Po prostu musisz wybrać w loaderze jądro, które chcesz uruchomić. Możesz to zrobić, gdy system odlicza od 10 w dół. Naciśnij wtedy jakikolwiek klawisz, oprócz Enter'a, napisz unload następnie boot kernel.old, lub jakąkolwiek inną nazwę jądra, które uruchomi się poprawnie. Jeśli rekonfigurujesz jądro, jedno sprawne powinieneś mieć zawsze pod ręką. Po uruchomieniu z dobrym jądrem, możesz sprawdzić swój plik konfiguracyjny, a następnie próbować budować ponownie. Pomocny jest plik /var/log/messages, w którym, pośród innych rzeczy, znajdują się zapisy z uruchomień jądra. Ponadto dmesg(8) wyświetla informacje z jądra, pochodzące z bieżącego uruchomienia. Uwaga: Jeśli masz problem ze zbudowaniem jądra, upewnij się, że posiadasz jądro GENERIC lub jakieś inne działające jądro nazwane tak, by nie zostało nadpisane po kolejnym procesie budowy. Nie możesz polegać na kernel.old, ponieważ gdy instalujesz nowe jądro, kernel.old jest nadpisywane przez ostatnio zainstalowane jądro, które może być niedziałające. Ponadto, tak szybko, jak to możliwe, przesuń działające jądro do właściwej lokalizacji, albo komendy takie jak ps(1) nie będą działały dobrze. Odpowiednią komendą do odblokowywania pliku jądra instalującego się (aby przesunąć inne jądro z powrotem na stałe) jest: Jeśli widzisz, że nie da się tego zrobić, to prawdopodobnie jesteś na poziomie bezpieczeństwa wyższym niż zero. Wyedytuj kern_securelevel w /etc/rc.conf i ustaw go na -1, następnie uruchom system ponownie. Możesz wrócić do poprzednich ustawień, gdy jesteś zadowolony ze swojego nowego jądra. Jeśli chcesz zablokować nowe jądro, aby nie mogło być na przykład przeniesione: jądro działa, ale przestało ps: Jeśli zainstalowałeś inną wersję jądra, niż tą, z którą były budowane narzędzia systemowe, na przykład jądro 4.X na systemie 3.X, wiele komend pokazujących stan systemu, jak ps(1), czy vmstat(8) nie będzie działało. Musisz dokonać rekompilacji tak biblioteki libkvm, jak i niedziałających narzędzi. Jest to jeden z powodów, przez które nie jest najlepszym pomysłem instalowanie różnych wersji jądra i systemu operacyjnego.
# chflags noschg /kernel
# chflags schg /kernel
Id: Aleksander Fafuła 2003-06-19
mlodszy, nie., 08/06/2008 - 11:11
