|
Jak zapewne większości z was wiadomo jądro (kernel)
jest najważniejszym elementem każdego systemu. W
uproszczeniu można powiedzieć, że zajmuje się ono
nadzorowaniem komunikacji wszystkich elementów systemu.
Koncepcja jądra w PLD
Jedną z silniejszych stron PLD
są dobrze przygotowane jądra systemu, pozwala to
szybko uruchomić system produkcyjny bez zbędnych
przygotowań. Poniżej zamieszczono listę
najistotniejszych cech jąder PLD:
-
funkcjonalność - nakładanych jest
wiele łat rozszerzających możliwości domyślnego kernela.
-
modularność - jądro jest tak
małe, jak to tylko możliwe; jeśli czegoś potrzebujemy
to wystarczy załadować odpowiedni moduł. Konsekwencją
takiego rozwiązania jest konieczność używania obrazu
initrd, co zostało drobiazgowo omówione w
tym dokumencie.
-
elastyczność - mamy wybór kilku jąder,
przygotowanych w postaci binarnych pakietów dla kilku
najczęstszych zastosowań; dzięki temu unikamy
czasochłonnej kompilacji. Dostępne jądra zostały opisane w
dalszej części rozdziału.
-
bezpieczeństwo - domyślny kernel ma nakładaną łatę
grsecurity
(www.grsecurity.net),
ponadto możemy mieć jądro z obsługą
Linux VServers
(linux-vserver.org).
Podsumowując można stwierdzić, że dla większości
zastosowań jądra dystrybucyjne spełnią wszystkie
stawiane przed nimi wymagania, bez konieczności
rekompilacji.
Informacje o używanym jądrze
Używaną wersję jądra sprawdzimy za pomocą
programu uname:
Jeśli interesuje nas konfiguracja danego jądra, to
możemy ją odczytać z pliku /proc/config.gz (w Th
plik jest dostępny po uprzednim załadowaniu modułu configs) np.:
lub z pliku config-dist dostarczanego z właściwym
pakietem kernel-headers np.:
# cat /usr/src/linux-2.6.27.13/config-dist |
Rodzaje jąder systemowych
Z PLD dostarczanych jest kilka kerneli, przygotowanych
do różnych zastosowań, jedyną rzeczą jaka
nam pozostaje to wybór właściwego jądra dla naszej
maszyny. W poniższej tabeli zamieszczono przykładowe
zestawienie dostępnych kerneli.
Nie wszystkie z wymienionych poniżej pakietów
bezpośrednio dostępne na liście pakietów, jeśli tak nie jest to trzeba
je zbudować samodzielnie ze speca.
Nazwa |
Cechy |
kernel |
uniwersalny kernel z wieloma dodatkowymi funkcjami
przydatnymi na serwerach, będzie dobry dla większości zastosowań
(w PLD Th i w Ac z ac-updates obsługuje
Linux VServers).
|
kernel-grsecurity |
kernel z obsługą grsecurity (przyrostek "grsecurity" wprowadzono w PLD Ac) - przeznaczony raczej dla serwerów
|
kernel-desktop |
przeznaczony dla stacji roboczych: obsługa m.in.: squashfs, bootsplash; pakiet jest budowany z kernel-desktop.spec
|
kernel-laptop |
odmiana kernel-desktop, przeznaczona przede wszystkim dla komputerów przenośnych |
kernel-vanilla |
Kernel bez jakichkolwiek modyfikacji (tzw. waniliowy), zwykle
dostarcza najaktualniejszą wersję jądra. Brakuje mu wielu funkcji z
głównego w PLD jądra, niekiedy jednak bywa od niego szybszy.
|
kernel-mosix |
jądro z obsługą klastrów openMOSIX
|
kernel24 |
rodzina kerneli z serii 2.4.x - obecnie przestarzała,
ciągle jednak dostępna w Ac.
|
Powyższe zestawienie należy traktować orientacyjnie, gdyż kernel ciągle
się zmienia. Aby poznać szczegóły, najlepiej jest sprawdzić plik
spec dla konkretnego
kernela. Ułatwieniem w poszukiwaniu właściwej rewizji,
mogą być tagi zaczynające się od auto-, np.:
auto-th-kernel-2_6_27_12-1. Tagi te są nadawane dla każdej
wersji pakietu trafiającego na serwery FTP/HTTP.
W wersjach Ra i Ac
istniał podział na kernel jednoprocesorowy
(tzw. up) oraz wieloprocesorowy - SMP
(symmetric multiprocessing). Dla odróżnienia te z obsługą wielu
procesorów miały w nazwie pakietu przyrostek -smp.
W Th i pakietach z ac-updates zaniechano takiego
podziału i wszystkie jądra obsługują wiele procesorów i jednocześnie zrezygnowano
z przyrostka -smp.
Należy zwrócić uwagę, na inne przyrostki po słowie
kernel w nazwach pakietów, nie mówią one o rodzaju
kernela ale o pakiecie z dodatkowymi modułami:
kernel-net, kernel-sound,
kernel-video, dokumentacją: kernel-doc
i inną zawartością.
Aktualizacja
Kernel jest kluczową częścią systemu, dlatego zaleca się
inaczej podejść do jego aktualizacji niż do innych
pakietów, dobrym zwyczajem jest instalacja
nowej wersji, zamiast aktualizacji np.:
poldek> install -I kernel-2.6.14.7-5 |
Po tej operacji zostanie na nowo wygenerowany obraz
initrd, użytkownicy LiLo muszą dodatkowo
wydać polecenie lilo.
W ten sposób mamy zainstalowane dwa jądra,
przy czym po ponownym uruchomieniu użyta zostanie nowa
wersja.
Gdyby nowy kernel okazał się niestabilny, to
zawsze możemy powrócić do starej wersji. Aby ułatwić taką
operację symlinki wskazujące na dotychczasowy
kernel (/boot/vmlinuz) i initrd
(/boot/initrd) automatycznie
będą teraz dostępne pod nazwami
/boot/vmlinuz.old i /boot/initrd.old.
Dzięki temu, możemy w konfiguracji bootloadera mieć "obraz"
konfiguracji dla starego kernela i użyć go w razie potrzeby.
Zależności
Istnieje kilka pakietów, bardziej lub mniej zależnych od
konkretnej wersji kernela. Ścisłe zależności będą dotyczyły
pakietów z modułami np. kernel-vanilla-sound-alsa oraz
pakietów ściśle współpracujących z kernelem np. moduł
kernel-video-nvidia ze sterownikiem X.Org:
xorg-driver-video-nvidia.
Nieco mniej oczywisty jest związek kernela z pakietami
iproute2 czy iptables, w ich przypadku
mamy nieco swobody.
W wielu sytuacjach nie będziemy musieli się o to martwić, gdyż
ten problem załatwiają nam zależności.
Mimo to, że mamy tu dostępną automatykę, przy tego
rodzaju pakietach powinniśmy zachować zdwojoną
czujność. Dla ważnych maszyn produkcyjnych warto dodać kernel i
pakiety okołokernelowe do opcji hold w
Poldku, opcję tą omówiliśmy w
tym dokumencie. Więcej o zależnościach pomiędzy
pakietami w tym dokumencie.
Uwagi
Czasami zdarza się, że załamuje się praca systemu sygnalizowana
za pomocą komunikatu Kernel Panic, jądro
informuje nas, że nie wie co ma dalej zrobić i przerywa pracę.
Warto ustawić system tak, by po takim zdarzeniu automatycznie
następował restart, konfigurację takiego zachowania opisaliśmy
w tym dokumencie.
|
|