Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Kernel i urządzenia
Jądro systemu
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

Jądro systemu

<- ->
 

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:

# uname -r
2.6.14.7-5

Jeśli interesuje nas konfiguracja naszego jądra to możemy ją odczytać następująco (o ile została taka funkcja wkompilowana):

# zcat /proc/config.gz

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.

Nazwa Cechy
kernel podstawowy kernel - tworzony z myślą głównie o zastosowaniach serwerowych, mimo to będzie dobry dla większości zastosowań (w PLD Th obsługuje Linux VServers).
kernel-desktop przeznaczony dla stacji roboczych i laptopów
kernel-grsecurity kernel z obsługą grsecurity (przyrostek "grsecurity" wprowadzono w PLD Ac) - przeznaczony raczej dla serwerów
kernel-vanilla Kernel bez jakichkolwiek modyfikacji (waniliowy), zwykle dostarcza najaktualniejszą wersję jądra
kernel-mosix jądro z obsługą klastrów openMOSIX
kernel-vserver kernel z obsługą Linux VServers - serwery (dostępny tylkow w PLD Ac)
kernel24 rodzina kerneli z serii 2.4.x - obecnie przestarzała, ciągle jednak stosowana

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 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-net-rt2500 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 produkucyjnych 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.

 
<- ->