------------------------------------------------------------------------------------- $Id: kernel.txt,v 1.1 2005/05/14 02:05:36 Platyna Exp $ (c) Zuzanna K. Filutowska [platyna at platinum.linux.pl] Informacje tu zawarte zostały sprawdzone oraz opracowane w nadziei, że będą użytecznie jednakże bez żadnych gwarancji ich przydatności lub poprawnego działania konfiguracji na nich opartych. Dokument ten można swobodnie kopiować i/lub modyfikować pod warunkiem zachowania i dołączenia niniejszego nagłówka. ------------------------------------------------------------------------------------- Kompilacja jądra 2.6. ------------------------------------------------------------------------------------- System: Slackware 10.1 Jądro: 2.6.11.9 GCC: 3.3.4 ------------------------------------------------------------------------------------- Jądro powinno się przekompilować po instalacji nowego systemu, ponieważ "dystrybucyjne" jądra są tworzone tak aby działały na pewnej grupie sprzętu, mamy tam, na przykład sterowniki do dwudziestu kart dźwiękowych kiedy ty masz jedną. Im mniejsze jądro tym szybciej ono funkcjonuje, no więc jeśli zależy ci na wydajności to jeszcze jeden argument aby jądro przekompilować. Jest to niezbędne jeśli posiadasz system, do którego ma lokalny dostęp wielu użytkowników, a zwłaszcza jeśli posiadają oni możliwość wykonywania tam swoich programów. Kompilacja jądra 2.6 różni się trochę od kompilacji 2.4, nie będe tu omawiać tych różnic. Oficjalne repozytorium źródeł jądra Linuksa znajduje się na http://www.kernel.org i stamtąd należy je ściągnąć aby być pewnym, że nie zawiera ono żadnych niemiłych niespodzianek na przykład łatek wykorzystywanych przez różnych złych ludzi do różnych celów. ;) Linux 2.6 znajduje się tam w katalogu /pub/linux/kernel/v2.6/ dostępnym przez HTTP, FTP i RSYNC. Ściągamy: wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.9.tar.bz2 Przełączamy się na roota i przechodzimy do katalogu, do którego ściągnęliśmy źródła. Dla totalnych nowicjuszy: su - cd /home/platyna/src/ Wypakowywyjemy do katalogu /usr/src: tar -jxf linux-2.6.11.9.tar.bz2 -C /usr/src Przechodzimy do katalogu /usr/src: cd /usr/src Tworzymy sobie dowiązanie do naszych nowych źródeł, jeśli trzeba, poprzednio usuwając istniejące: rm linux && ln -s linux-2.6.11.9 linux Jeśli potrzebujemy jakieś łaty, tu przykład grsecurity, którego używam i (może) omówię później, to nakładamy je w następujący sposób: patch -p1 < /usr/src/patches/2.6.11.9/grsecurity-2.1.5-2.6.11.9-200505121617.patch Następnie wykonujemy komendę, która uruchomi nam program konfiguracyjny: make menuconfig Zasadniczo, aby dobrze skonfigurować swoje jądro, musimy znać sprzęt. Jeśli dopiero zaczynamy się uczyć, najlepszym wyjściem jest posiadanie dokumentacji. Większość opcji menuconfig ma dostępną pomoc (w języku angielskim) przez napisanie znaku zapytania. Inne opcje menuconfig są wyjaśnione w nagłówku ekranu startowego. Możesz tak importować sobie stary config jądra (Load an Alternate Configuration File), jeśli go masz, i tylko włączyć/wyłączyć poszczególne opcje. Jeśli kompilacja się powiedzie i system wystartuje z nowym jądrem dobrze jest skopiować sobie plik .config z katalogu głównego źródeł jądra i użyć go przy następnej kompilacji zamiast od nowa konfigurować źrodła. Następnie wydajemy komendę: make Utworzymy w ten sposób skompresowany obraz jądra (bzImage) i zdefiniowane moduły Kompilacja jądra zajmuje trochę czasu, w zależności od tego jak szybką maszynę posiadasz. Następnie wykonujemy komendę: make modules_install Zainstaluje nam ona nowe moduły w katalogu /lib. Można wykonać make install, która zainstaluje nam obraz jądra w katalogu głównym, jednakże najlepiej jest aby w systemie był porządek i jądro zainstalować ręcznie w katalogu /boot: cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.11.9-grsec cp /usr/src/linux/System.map /boot Nazwa tego pliku obrazu jądra jest dowolna, ja używam schematu vmlinuz-wersja-jądra. W Slackware vmlinuz jest najczęściej dowiązaniem symbolicznym do domyślnego obrazu jądra, tak więc tworzymy takie dowiązanie, usuwając stare: cd /boot && rm vmlinuz && ln -s vmlinuz-2.6.11.9-grsec vmlinuz Jeśli używasz innej dystrybucji najlepiej jest rozejrzeć się; jeśli vmlinuz nie jest dowiązaniem symbolicznym zadbaj o to aby mieć jego kopię w katalogu boot: mv vmlinuz /boot/vmlinuz.old Teraz "bezpieczna" konfiguracja bootloadera, otwieramy lilo.conf w swoim ulubionym edytorze i szukamy następującej linii: # Linux bootable partition config begins Za nią powinniśmy mieć linie podobne do tych: image = /boot/vmlinuz-2.6.11.6-grsec root = /dev/sda1 label = Linux read-only # Non-UMSDOS filesystems should be mounted read-only for checking Kopiujemy je i wklejamy poniżej ostatniej z nich. Trochę wyjaśnień: image - tu jest ścieżka do obrazu jądra. root - partycja na której jest zainstalowany lilo, zostawiamy tak jak jest. label - etykieta. read-only - mówi lilo, że główny system plików ma być zamontowany tylko do odczytu dla sprawdzenia. Zmieniamy tu tylko ścieżkę do obrazu jądra, zaś w kopii którą zrobiliśmy poniżej zmieniamy tylko etykietę i podajemy ścieżkę do starego obrazu jądra jeśli się ona zmieniła podczas naszej konfiguracji, np. na /boot/vmlinuz.old. image = /boot/vmlinuz-2.6.11.7-grsec root = /dev/sda1 label = Linux-Old read-only # Non-UMSDOS filesystems should be mounted read-only for checking Po czym wykonujemy komendę: lilo Powinna nam ona zwrócić coś takiego: Added Linux * Added Linux-Old Jeśli tak, to możemy wykonać reboot naszej maszyny, jeśli okaże się, że się coś źle zrobiliśmy daje nam to możliwość wystartowania starego jądra i zmiany konfiguracji. -------------------------------------------------------------------------------------