Linux Kernel podroz do wnetrza systemu


Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
Linux Kernel: Podróż
do wnętrza systemu
Część druga (2/7): Zaawansowana konfiguracja
i rozruch systemu
Rafał Kułaga
W pierwszej części cyklu artykułów omawiających budowę, konfigurację oraz programowanie jądra
systemu Linux, zapoznaliśmy się z podstawowymi opcjami, pozwalającymi na dostosowanie jądra
do naszych wymagań. W tym artykule zajmiemy się dokładnym opisem najważniejszych aspektów
konfiguracji kernela, opisem procesu uruchamiania systemu oraz wykorzystaniem łatek (patchy) w celu
aktualizacji zródeł jądra. Zapraszam do lektury!
pierwszej części cyklu, powiedzieli- wanego w systemie sprzętu, dzięki czemu odpowiednich ste-
śmy, iż jądro systemu Linux należy do rowników będziemy mogli poszukać w internecie.
najbardziej złożonych programów ja- W tym artykule zajmiemy się wszystkimi najważniej-
Wkie kiedykolwiek napisano. Składa się szymi aspektami konfiguracji jądra. W przeciwieństwie do
z ponad 12 milionów linijek kodu, zawierających imple- pierwszej części, której głównym zadaniem było wprowa-
mentację podstawowych funkcji systemu operacyjnego, dzenie Czytelnika do tematyki związanej z rekompilacją ją-
obsługę stosów wielu protokołów telekomunikacyjnych dra, omówimy znaczenie najważniejszych opcji poszcze-
oraz sterowników urządzeń. Taka ilość kodu może wy- gólnych kategorii w menu programu konfiguracyjnego ją-
dawać się przytłaczająca, zwłaszcza dla początkujących dra. Omówimy również podstawowe zagadnienia związa-
użytkowników systemu Linux. ne z cross-kompilacją jądra Linux (umożliwiającą jego wy-
Jednym z najważniejszych problemów, jakie napotyka- korzystanie w systemach niekompatybilnych z architekturą
my w trakcie wyboru składników jądra, jest określenie za- x86) oraz przyjrzymy się procesowi rozruchu systemu. Pew-
leżności pomiędzy posiadanym sprzętem, a fragmentami ją- na uwaga zostanie również poświęcona konfiguracji usług
dra niezbędnymi w celu jego poprawnej obsługi. Problem ten uruchamianych przy starcie systemu oraz poziomom uru-
może być szczególnie dotkliwy dla osób przyzwyczajonych chamiania, pomimo iż są to zagadnienia dość luzno związa-
do systemów z rodziny Microsoft Windows, w których pro- ne z tematyką rekompilacji jądra.
ces instalacji sterowników jest w zasadzie automatyczny. W
przypadku systemów Linuksowych jest to proces znacznie Patchowanie zródeł jądra
bardziej skomplikowany, często wymagający długich poszu- Archiwum zawierające zródła jądra Linux ma rozmiar prze-
kiwań  okazuje się bowiem, iż część producentów nie do- kraczający 30 MB. Nie jest to zbyt dużo, jeżeli wezmiemy
starcza sterowników dla tego systemu. Dostępne są jednak pod uwagę przepustowość dostępnych obecnie łączy inter-
narzędzia, pozwalające określić producenta i typ zainstalo- netowych. Z drugiej strony, pobieranie pełnych zródeł jądra
grudzień 2009
46
linux@software.com.pl
Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
systemu za każdym razem, gdy pojawią się ja- nicę pomiędzy dwoma dokładnie określonymi Pojawiające się komunikaty informują o plikach,
kiekolwiek poprawki, powoduje niepotrzebne wersjami pliku. Oznacza to, iż wykorzystując w których wprowadzane są zmiany. Po zakończe-
obciążenie serwerów. Z tego względu, warto za- program patch do aktualizacji zródeł jądra, bę- niu działania programu patch, możesz sprawdzić
poznać się z narzędziem patch, pozwalającym na dziemy musieli dobrać odpowiedni plik łatki na poprawność aktualizacji przy użyciu polecenia:
uaktualnienie posiadanych zródeł, bez potrzeby podstawie znajomości posiadanej wersji zródeł
pobierania dużej ilości danych z internetu. oraz wersji, do której chcemy je zaktualizować. head -n 5 Makefile
Patch i diff Patchowanie zródeł jądra Jeżeli wyświetlony numer wersji odpowiada do-
Działanie programu patch polega na wykorzy- Patche do zródeł jądra dostępne są na stronie celowej wersji jądra, oznacza to, iż aktualiza-
staniu opisów różnic pomiędzy dwoma wer- http://kernel.org/. Zanim zaczniesz szukać od- cja przebiegła pomyślnie. W takim przypadku,
sjami pliku  nowszą oraz starszą. Dzięki temu powiedniego dla Twoich potrzeb pliku, zapo- możesz przystąpić do konfiguracji, a następnie
oszczędzamy dużą ilość miejsca, ponieważ nie znaj się z istniejącymi rodzajami łatek. Dostęp- kompilacji jądra.
powielamy tej części danych, która pozostała ne są trzy typy patchy:
w niezmienionej postaci. Do wygenerowania Przebieg rozruchu systemu
pliku łatki wykorzystujemy narzędzie diff. " Aatka stabilnej wersji jądra  używana do Pod pojęciem rozruchu systemu Linux mamy
Aby lepiej zrozumieć zasadę działania na- aktualizacji jądra od wersji bazowej (np. na myśli ogół procesów zachodzących od wy-
rzędzi diff i patch, posłużymy się przykładem. 2.6.31) do określonej wersji stabilnej (np. brania przez użytkownika odpowiedniej pozy-
Załóżmy, iż dysponujemy dwoma plikami o na- 2.6.31.3); cji w menu programu rozruchowego, do mo-
zwach old i new. Zawartość pliku old jest nastę- " Aatka bazowej wersji jądra  używana do mentu rozpoczęcia logowania. W trakcie roz-
pująca: aktualizacji jądra od starszej wersji bazo- ruchu systemu ma miejsce wiele akcji, zwią-
wej (np. 2.6.30) do nowszej wersji bazo- zanych z wczytaniem jądra systemu do pamięci
Ala ma kota. wej (np. 2.6.31). Pamiętaj, iż łatka ta nie i jego podstawową inicjalizacją oraz urucho-
będzie działać dla wersji 2.6.30.X i wersji mieniem usług odpowiadających danemu po-
Natomiast pliku new: 2.6.31.Y; ziomowi uruchamiania (Runlevel).
" Aatki przyrostowe  używane do aktuali- Szczegóły rozruchu systemu są w dużym
Ala ma psa i kota. zacji jądra od starszej wersji stabilnej (np. stopniu zależne od architektury sprzętowej.
2.6.31.2) do nowszej wersji stabilnej (np. Z najciekawszymi zagadnieniami związanymi
Plik z łatką generujemy przy pomocy następu- 2.6.31.3). W nazwie łaty przyrostowej z procesem uruchamiania systemu mamy do
jącego polecenie wyszczególnione są obydwie wersje (np. czynienia w przypadku systemów wbudowa-
patch-2.6.31.2-3). nych  w przypadku klasycznej architektury
diff -a old new > lata.patch x86 proces ten przebiega bardzo podobnie na
Określenie odpowiedniego patcha gwarantuje wszystkich urządzeniach.
Aktualizację zawartości pliku old przeprowadzi- poprawność kodu jądra po aktualizacji. Niezależnie od zastosowanej architektury
my przy użyciu polecenia: Wszystkie wymienione typy łatek dostęp- sprzętowej, proces rozruchu systemu składa się
ne są pod adresem http://www.kernel.org/pub/ z trzech głównych kroków (Rysunek 2):
patch old lata.patch linux/kernel/v2.6/. Aaty przyrostowe dostępne są
w podkatalogu incr. Określenie nazwy pliku za- " Wczytanie obrazu jądra do pamięci po-
Po sprawdzeniu zawartości plików old i new wierającego odpowiedniego patcha nie powin- przez program rozruchowy  proces ten
okazuje się, iż są one identyczne. W naszym no sprawić Czytelnikowi większego problemu. pozostaje w ścisłej zależności od zastoso-
przypadku plik lata.patch ma rozmiar więk- W razie problemów, odwołaj się do przykładów wanego sprzętu. Etap ten kończy się uzy-
szy od pliku new. Jednak w przypadku bar- aktualizacji, przedstawionych na Rysunku 1. Po skaniem minimalnego środowiska urucho-
dzo wielu plików o dużych rozmiarach, pobraniu i rozpakowaniu pliku łatki, przekopiuj- mieniowego, w którym możliwa jest dalsza
w których wprowadzane są jedynie niewiel- my go lokalizacji, w której znajduje się katalog inicjalizacja jądra;
kie zmiany, narzędzia diff i patch sprawdza- zawierający zródła jądra. Po przejściu do głów-
ją się doskonale. nego katalogu ze zródłami, wydajmy polecenie:
Wczytywanie obrazu j dra do pamięci
Oczywistą konsekwencją zasady działania
narzędzi patch i diff jest to, iż łatka określa róż- patch -p1 < ../patch-x
Etap charakterystyczny dla platformy
sprzętowej
Kernel 2.6.31 Kernel 2.6.30 Kernel 2.6.31.2
Patch 2.6.31.4 Patch 2.6.31 Patch 2.6.31.2-3
Etap wysokopoziomowy
(w dużej mierze niezależny od sprzętu)
Kernel 2.6.31.4 Kernel 2.6.31 Kernel 2.6.31.3
Patch 2.6.31.3-4 Uruchomienie programu init
(kontynuacja w przestrzeni użytkownika)
Kernel 2.6.31.4
Rysunek 2. Podstawowe etapy rozruchu syste-
mu Linux
Rysunek 1. Zastosowanie różnych rodzajów patchy w celu aktualizacji zródeł jądra
www.lpmagazine.org 47
Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
" Skok do części kodu jądra charakterystycz- ści danej architektury sprzętowej. Wczytanie ją- Etap wysokopoziomowy
nej dla danej architektury  proces ten ma dra systemu odbywa się przy użyciu wyspecjali- Dalsza część procesu inicjalizacji jądra syste-
na celu przeprowadzenie podstawowej zowanych programów rozruchowych, takich jak mu odbywa się już w sposób bardziej niezależny
konfiguracji jądra, w sposób charaktery- U-Boot. Osobom zainteresowanym tą tematyką od platformy sprzętowej. Omówimy tu pokrótce
styczny dla danej architektury sprzętowej; polecam zapoznanie się z informacjami dostęp- najważniejsze zadania wykonywane na tym eta-
" Skok do głównej części jądra (niezależnej nymi na stronach zawartych w ramce W Sieci. pie, rozpoczynającym się od wyświetlenia infor-
od platformy sprzętowej)  proces ten ma macji o wersji jądra Linux. Pierwszym krokiem
na celu dokończenie inicjalizacji pozosta- Etap charakterystyczny jest konfiguracja funkcji zależnych od architek-
łych podsystemów jądra oraz przejście do dla platformy sprzętowej tury sprzętowej, takich jak obsługa pamięci oraz
standardowego trybu działania, w którym Po wczytaniu obrazu jądra Linux do pamięci, stronicowanie. Na przebieg tego procesu ma-
możliwe jest uruchomienie usług i proce- wykonywany jest skok do adresu, pod którym ją wpływ parametry przekazane przy starcie ją-
sów przestrzeni użytkownika. znajduje się kod maszynowy odpowiedzialny dra. Następnym krokiem jest pełne przetworzenie
" Uruchomienie procesów odpowiadających za przeprowadzenie podstawowej konfiguracji wszystkich parametrów konfiguracyjnych z któ-
domyślnemu poziomowi uruchamiania  za- jądra. Wszystkie opisywane w tym paragrafie rymi jądro zostało wywołane. Więcej informacji
danie to realizowane jest przez program init. funkcje zdefiniowane są w plikach zródłowych na ten temat znajdziesz w następnym paragrafie.
znajdujących się w katalogach arch/x86/boot/ Po przetworzeniu parametrów konfigura-
Zajmiemy się teraz opisem przebiegu poszcze- oraz arch/x86/kernel. Jak można się domyślić, cyjnych, inicjalizowane są najważniejsze struk-
gólnych kroków. są to zadania pozostające w ścisłym związ- tury, niezbędne do pracy systemu operacyjnego,
ku z architekturą sprzętową, wymagające uży- takie jak: scheduler, tablica przerwań IRQ, ta-
Wczytanie obrazu jądra do pamięci cia asemblera danego procesora. Wspomniany bela procesów, konsola oraz zegar systemowy.
Po włączeniu komputera, inicjalizacji BIOS i uru- już skok odbywa się do miejsca w pamięci, w Szczegółowy opis przebiegu poszczególnych
chomieniu programu rozruchowego, użytkownik którym znajduje się kod odpowiadający za we- etapów tego procesu jest bardzo skomplikowa-
zazwyczaj proszony jest o wybranie jednego z ryfikację poprawności obrazu jądra w pamię- ny i stanowi raczej temat na osobny artykuł.
systemów operacyjnych, których lista zdefinio- ci, określenia rozmiaru dostępnej pamięci sys- Następny krok może okazać się dla Czy-
wana jest w odpowiednim pliku. W przypadku temowej, inicjalizację karty graficznej, reloka- telnika dość zaskakujący. Polega on bowiem
komputerów, na których zainstalowanych jest cję kodu jądra oraz przełączenie procesora w na sprawdzeniu obecności w sprzęcie znanych
kilka różnych systemów operacyjnych, proces tryb chroniony. niedoskonałości konstrukcyjnych. Okazuje się,
ten może przebiegać zupełnie inaczej, w zależno- Po zakończeniu wymienionych zadań, iż nie tylko oprogramowanie może zawierać
ści od wyboru użytkownika. W przypadku syste- utworzony zostaje tymczasowy stos jądra oraz błędy. Przykładem wady konstrukcyjnej, któ-
mów Linuksowych, różne pozycje w menu pro- wykonywane są rozmaite czynności związane z ra może mieć wpływ na działanie kompute-
gramu rozruchowego mogą odpowiadać plikom przygotowaniem pamięci oraz rozpakowaniem ra, jest tzw. Pentium FDIV Bug, polegająca na
zawierającym różne obrazy jądra systemu. obrazu jądra systemu. Następnym krokiem jest niepoprawnym wykonywaniu operacji dziele-
Proces wczytywania obrazu jądra do pa- aktywowanie funkcji stronicowania pamięci nia liczb zmiennoprzecinkowych (FDIV to in-
mięci ma szczególnie duże znaczenie w przy- oraz finalizacja procesu tworzenia stosu jądra. strukcja procesora odpowiadająca za dzielenie
padku systemów wbudowanych opartych na Li- Utworzona zostaje również tablica obsługi prze- liczb zmiennoprzecinkowych). W dzisiejszych
nuksie. Jego odpowiednia konfiguracja wyma- rwań  na razie zawierająca jedynie atrapy funk- czasach, skutki błędów w budowie procesorów
ga nie tylko zrozumienia zadań związanych z tą cji obsługujących. Określany jest też typ zainsta- można korygować za pomocą odpowiednich
fazą rozruchu systemu, lecz również znajomo- lowanego w systemie procesora. aktualizacji mikrokodu (warstwy pośredniej po-
między kodem maszynowym a sprzętem)  jest
to jedno z zadań realizowanych na tym etapie.
Końcowym etapem inicjalizacji jądra jest
utworzenie procesu bezczynności systemowej
(Idle Thread), inicjalizacja sterowników urządzeń
oraz przekazanie kontroli nad dalszą częścią roz-
ruchu systemu procesom przestrzeni użytkowni-
ka (standardowo odbywa się to za pomocą pro-
gramu init znajdującego się w katalogu /sbin).
Init i poziomy działania
Program init służy do uruchomienia wszystkich
pozostałych procesów przestrzeni użytkownika,
niezbędnych do uzyskania kompletnego środowi-
ska roboczego. Init jest rodzicem wszystkich dzia-
łających w systemie procesów, dlatego niemożli-
we jest jego unicestwienie sygnałem SIGKILL.
Init może zostać wywołany w jednym z
sześciu poziomów działania (Runlevel), ozna-
Rysunek 3. Zastosowanie narzędzi dmesg i grep w celu zdobycia informacji o urządzeniach USB zainsta- czonych liczbami od 0 do 6. Poszczególne po-
lowanych w systemie ziomy odpowiadają:
grudzień 2009
48
Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
" 0  zatrzymanie systemu (nie należy używać nych opartych na systemie Linux. W przypad- Dmesg  komunikaty jądra
tego poziomu jako poziomu startowego); ku większości urządzeń tego typu nie mamy bo- Jednym z podstawowych narzędzi, pozwalają-
" 1  tryb jednego użytkownika; wiem urządzeń wyjściowych, pozwalających na cych na odczytywanie komunikatów diagno-
" 2/3/4/5  tryby określane przez dystrybucję; analizę wyświetlanych komunikatów. W takiej stycznych jądra, w tym informacji o podłącza-
" 6  ponowne uruchomienie systemu (nie sytuacji, jedynym wyjściem jest zastosowanie nych urządzeniach jest dmesg. Po jego wywoła-
należy używać tego poziomu jako poziomu komputera podłączonego do systemu wbudo- niu, Twoim oczom ukaże się bardzo duża liczba,
startowego). wanego za pomocą interfejsu RS-232. niekoniecznie czytelnych informacji. Kluczem
Najważniejsze opcje konfiguracyjne ją- do pełnego wykorzystania możliwości progra-
Znaczenie poziomów działania 2 5 zależne jest dra zostały zawarte w Tabeli Przykładowe pa- mu dmesg jest odpowiednia obróbka wyświetlo-
od używanej dystrybucji. Zazwyczaj znajdują się rametry przekazywane przy rozruchu syste- nych danych. Przeszukiwanie wydruków sporzą-
wśród nich dwa poziomy odpowiadające pełne- mu. Pamiętaj, że do ich poprawnej interpre- dzonych przez program dmesg byłoby niezwy-
mu trybowi wielu użytkowników: graficznemu tacji konieczne jest zachowanie odpowied- kle czasochłonne, gdybyśmy nie stosowali na-
oraz tekstowemu. Domyślny poziom działania niej wielkości znaków. W przypadku progra- rzędzi pomocniczych. Jednym z nich jest grep,
określony jest w pliku /etc/inittab w linii: mu rozruchowego GRUB, parametry mogą zo- dzięki któremu możemy przefiltrować strumień
stać zapisane na stałe w pliku konfiguracyjnym danych, wyświetlając jedynie linie spełniające
id:2:initdefault: /etc/grub/menu.lst lub podawane bezpośrednio określone wyrażenie regularne. Przykładem za-
przy uruchomieniu systemu. stosowania programów dmesg i grep w celu po-
W tym przypadku jest nim poziom 2. Poziom zyskania informacji o urządzeniach obecnych w
działania można również zmienić w trakcie pra- Przygotowanie systemie może być polecenie:
cy systemu, przy pomocy polecenia init N, do konfiguracji jądra
gdzie N  żądany poziom działania (wymaga- Zanim przejdziemy do opisu zaawansowanej dmesg | grep -i usb
ne są w tym celu uprawnienia użytkownika ro- konfiguracji jądra systemu, warto zastanowić
ot). Przy pomocy polecenia runlevel spraw- się, jakie narzędzia będą pomocne w ustaleniu Jego wykonanie spowoduje wyświetlenie wszyst-
dzimy aktywny poziom. Powinniśmy pamię- jakich sterowników urządzeń potrzebujemy. kich linii, zawierających odniesienia do urządzeń
tać, aby wyłączyć automatyczny start usług, z Problem ten może wydawać się banalny  każ- i kontrolerów USB (Rysunek 3). Operator | służy
których nie korzystamy. Większość dystrybucji dy przecież wie, jaki sprzęt zainstalowany jest w do przekierowania strumienia danych wygenero-
zawiera specjalne narzędzia graficzne, pozwala- jego komputerze. Okazuje się jednak, iż w przy- wanego przez program dmesg do narzędzia grep.
jące na wygodną modyfikację tego aspektu pra- padku taniego sprzętu producentów z dalekiego Z pewnością zauważyłeś, że informacje uzy-
cy systemu operacyjnego, jeżeli jednak zmian wschodu zazwyczaj nie możemy liczyć na ste- skiwane przy użyciu programu dmesg są mało
wolisz dokonać własnoręcznie, to odpowied- rowniki dostarczane przez producenta. Co wię- czytelne. Siłą tego programu jest jednak to, iż wy-
nie pliki konfiguracyjne znajdziesz w katalogu cej, urządzenia takie nie mają nawet konkret- świetla on wszystkie komunikaty diagnostyczne
/etc/rcN.d, gdzie N  poziom działania systemu. nych nazw, pozwalających na poszukanie odpo- i informacyjne jądra, przez co pozwala na zdo-
wiednich informacji w internecie. bycie identyfikatora producenta i modelu sprzę-
Przekazywanie argumentów tu. Informacje te możemy następnie wykorzystać
przy rozruchu systemu Określanie zainstalowanych urządzeń przy poszukiwaniu sterowników w internecie.
Po uruchomieniu systemu operacyjnego Linux, Większość dystrybucji i środowisk graficznych
komunikacja z jądrem może odbywać się mię- zawiera narzędzia, pozwalające na wyświetlenie Lspci i lsusb  co na magistralach piszczy
dzy innymi za pomocą plików znajdujących się listy urządzeń obecnych w systemie oraz moni- Lspci i lsusb to dwa bardzo podobne programy,
w katalogach /proc i /sys. Pozwala to aktywo- torowanie ich pracy. Programy te sprawdzą się pozwalające na uzyskanie informacji o obec-
wać i zmieniać parametry działania podsyste- doskonale w przypadku, gdy w systemie zain- nych w systemie urządzeniach, podłączonych
mów jądra oraz odczytywać informacje o za- stalowane są odpowiednie sterowniki. Jak więc do magistral PCI i USB (Rysunek 4).
instalowanym sprzęcie i dostępnych zasobach. zdobyć informacje o sprzęcie, który nie został W przeciwieństwie do programu dmesg,
Przykładem może być plik /proc/cpuinfo, w któ- rozpoznany przez system i dla którego nie dys- lspci i lsusb wyświetlają informacje w posta-
rym zawarte są informacje o zainstalowanym w ponujemy odpowiednimi sterownikami? ci, która nadaje się do analizy przez użytkow-
systemie procesorze.
Zastosowanie programu rozruchowego da- Tabela 1. Przykładowe parametry przekazywane przy rozruchu systemu
je nam również możliwość wpłynięcia na pro-
Opcja konfiguracyjna Zastosowanie
ces inicjalizacji jądra poprzez podanie odpo-
moduł.parametr= wartość
Ustawienie wartości parametru parametr modułu moduł na wartość
wiednich parametrów. Dzięki temu, możemy
noexec= on/off
Włączenie lub wyłączenie funkcji blokowania wykonania obszarów pamięci
np. przesłać za pośrednictwem sieci komunika-
resume= urządzenie
Wznowienie pracy systemu przy użyciu danych z urządzenia urządzenie
ty wyświetlane przy uruchamianiu systemu na
maxcpus= N
Ustawienie maksymalnej liczby procesorów wykorzystywanych przez
inną maszynę. Przy użyciu odpowiednich para-
system SMP na N
metrów mamy również możliwość wyłączenia
ramdisk_size= rozmiar
pewnych podsystemów jądra (np. obsługi AC- Ustawienie rozmiaru ramdiska na rozmiar
PI) w celu określenia elementów uniemożliwia- root= urządzenie
Wybór urządzenia na którym znajduje się główny system plików
jących poprawne załadowanie systemu. Argu-
acpi= force/off
Wymuszenie włączenia systemu ACPI (force) lub jego dezaktywacja (off)
menty podawane przy wczytywaniu jądra ma-
pci= off
Wyłączenie obsługi magistrali PCI
ją również ogromne znaczenie w procesie te-
loglevel= 0-7
Ustawienie poziomu informowania o błędach; 0  najniższy, 7  najwyższy
stowania i debugowania systemów wbudowa-
www.lpmagazine.org 49
Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
nika. Uzyskane informacje o zainstalowa- duł jak i część statyczna, jest obsługa druko- rych wykonania niezbędne są uprawnienia użyt-
nych urządzeniach możemy następnie wy- wania. Jeżeli do Twojego komputera jest na kownika root. Najważniejsze z nich to:
korzystać w celu poszukiwania sterowników stałe podłączona drukarka i często z niej ko-
w internecie. rzystasz, to zdecydowanie najlepszym rozwią- " insmod  służący do wczytania modułu i je-
zaniem jest skompilowanie kodu odpowie- go połączenia z działającym jądrem;
Co warto zbudować jako moduł? dzialnego za obsługę wydruku jako część sta- " rmmod  służący do usunięcia wczytanego
Początkujący często zastanawiają się, jakie tyczną jądra. Jeżeli jednak rzadko korzystasz modułu jądra;
elementy jądra należy zbudować jako część z drukarki, warto zbudować odpowiedni frag- " depmod  służący do określenia zależności
statyczną jądra, a które warto skompilować ja- ment jądra jako moduł. pomiędzy modułami;
ko dynamicznie dołączane moduły (więcej in- Nie tylko sterowniki urządzeń mogą zostać " lsmod  służący do wyświetlenia listy
formacji o modułach i modularnej budowie ją- skompilowane jako moduły. Duża część mecha- wczytanych modułów;
dra znajdziesz w pierwszej części cyklu). Jak nizmów jądra, takich jak np. specyficzne funk- " modprobe  służący do wczytywania mo-
w wielu przypadkach, nie ma tu jedynie po- cje związane z obsługą mechanizmu filtrowania dułów z uwzględnieniem istniejących po-
prawnych odpowiedzi  przydatność danego pakietów i NAT, może również zostać zbudowa- między nimi zależności. Użycie programu
mechanizmu jądra lub sterownika jest ściśle na jako dynamiczny fragment jądra. modprobe spowoduje automatyczne wczy-
uzależniona od wymagań danego komputera tanie wszystkich modułów od których zale-
lub środowiska w jakim funkcjonuje. Obsługa modułów ży praca wybranego przez nas modułu.
Książkowym przykładem mechanizmu W celu obsługi modułów jądra obecnych w sys-
który może być zbudowany zarówno jako mo- temie, korzystamy z zestawu poleceń, do któ- Skompilowane moduły są zazwyczaj przecho-
wywane w katalogu /lib/modules.
Konfiguracja jądra
W pierwszej części cyklu, opisaliśmy krótko za-
wartość każdej z kategorii opcji programu kon-
figuracyjnego jądra. Zajmiemy się teraz dokład-
niejszym opisem zawartości poszczególnych me-
nu. Nie będziemy nawet podejmować próby opi-
sania wszystkich najważniejszych opcji konfigu-
racyjnych, ponieważ jest ona skazana na porażkę
 liczba parametrów konfiguracyjnych skutecz-
nie uniemożliwia ich opisanie w artykule.
Jednym z najlepszych sposobów poznania
opcji zawartych w programie konfiguracyjnym
jądra, jest przeglądnięcie ich wszystkich. Jeżeli
będziesz miał wątpliwości co do znaczenia kon-
kretnej pozycji, w menu programu konfiguracyj-
nego wybierz opcję Help.
General Setup
Rysunek 4. Program lspci pozwala na wyświetlenie informacji o zainstalowanych urządzeniach magistrali PCI
W kategorii tej zawarte są opcje dotyczące roz-
maitych aspektów pracy systemu: komunikacji
międzyprocesowej, obsługi partycji wymiany,
sposobu kompresji jądra oraz obsługi przestrze-
ni nazw jądra (Rysunek 5).
Enable loadable module support
W kategorii tej zawarte są opcje dotyczące konfi-
guracji obsługi modułów jądra, takie jak np. ob-
sługa odłączania modułów (Module unloading).
Enable the block layer
W kategorii tej zawarte są opcje dotyczące kon-
figuracji obsługi urządzeń blokowych oraz sche-
dulerów operacji wejścia/wyjścia (IO schedu-
lers). Możemy tu aktywować obsługę dużych
urządzeń blokowych i plików (powyżej 2 TB).
Całkowite wyłączenie tej kategorii spowoduje,
że wykorzystanie w systemie urządzeń bloko-
Rysunek 5. Menu General Setup programu konfiguracyjnego jądra
wych będzie niemożliwe.
grudzień 2009
50
Jądro Linuksa
Linux Kernel (2/7): Zaawansowana konfiguracja i rozruch systemu
Processor type and features czenie obsługi urządzeń, których na pewno nie rającego konfigurację w bezpiecznym miejscu,
W kategorii tej zawarte są opcje dotyczące kon- będziesz używał. Następnie, warto przyjrzeć się w celu pózniejszego ponownego wykorzystania.
figuracji obsługi procesorów. Zrozumienie ich znaczeniu poszczególnych funkcji i zdecydo- Konfiguracja jądra zapisana jest w pliku
znaczenia wymaga od użytkownika przynajm- wać, czy warto zbudować je jako moduły. .config. Dane zapisane w tym pliku są oczywi-
niej podstawowej wiedzy na temat architektury ście charakterystyczne dla danej wersji jądra.
procesorów, tak więc nie będziemy ich tu opi- Firmware drivers Z tego względu, aby zastosować pliki utworzo-
sywać. Dużo informacji znajdziesz w pomocy W kategorii tej zawarte są opcje dotyczące kon- ne w programach konfiguracyjnych starszych
elementów tej kategorii. figuracji obsługi firmware urządzeń. W więk- wersji, musimy skorzystać z odpowiedniego
szości są to funkcje charakterystyczne dla okre- narzędzia, pozwalającego na zmianę zapisa-
Power management and ACPI options ślonych producentów sprzętu komputerowego. nych w nim danych.
W kategorii tej zawarte są opcje dotyczące kon- W trakcie tworzenia nowej konfigura-
figuracji obsługi podsystemu ACPI oraz funkcji File systems cji opartej na ustawieniach zapisanych w pli-
zarządzania energią. Podobnie jak w przypadku W kategorii tej zawarte są opcje dotyczące ku .config wcześniejszej wersji, będziemy mu-
kategorii Processor type and features, wymaga- konfiguracji obsługi systemów plików. Kon- sieli odpowiedzieć na pytania dotyczące konfi-
na jest chociaż podstawowa znajomość działania figuracja tego aspektu pracy systemu daje du- guracji wszystkich opcji, które pojawiły się w
funkcji, technik oraz pojęć związanych z ACPI. że możliwości poprawy wydajności i zmniej- nowszej wersji. Możemy wykorzystać w tym
szenia obrazu jądra. Znaczenie funkcji tej ka- celu dwa polecenia: make oldconfig i make si-
Bus options (PCI etc.) tegorii omówimy szczegółowo w następnej lentoldconfig.
W kategorii tej zawarte są opcje dotyczące konfi- części cyklu. make oldconfig powoduje wyświetlenie
guracji obsługi magistral (PCI, PCIE, PCMCIA, wszystkich opcji konfiguracyjnych, a następnie
ISA itp.). Warto dezaktywować obsługę tych ma- Kernel hacking automatyczne udzielenie odpowiedzi na te, któ-
gistral, których nie używasz. W większości przy- W kategorii tej zawarte są opcje dotyczące kon- re obecne już były w starszej wersji jądra. Użyt-
padków możesz również wyłączyć funkcję Sup- figuracji obsługi funkcji przydatnych przy two- kownik musi jedynie odpowiedzieć na pytania,
port for PCI Hotplug, pozwalającą na podłącza- rzeniu kodu jądra. Na większości komputerów dotyczące nowych opcji jądra.
nie urządzeń PCI w czasie pracy komputera. można śmiało pominąć tą kategorię. make silentoldconfig działa w sposób
bardzo podobny do make oldconfig, z tą różni-
Executable file formats/Emulations Security options cą, iż nie wyświetla wszystkich pytań dotyczą-
W kategorii tej zawarte są opcje dotyczące kon- W kategorii tej zawarte są opcje dotyczące kon- cych konfiguracji jądra, jedynie te, które pojawi-
figuracji obsługi formatów plików wykonywal- figuracji obsługi funkcji związanych z zabezpie- ły się w nowszej wersji.
nych, obsługiwanych przez jądro. W większości czeniami na poziomie jądra systemu (np. SELi- Niezależnie od zastosowanego polecenia,
przypadków, w kategorii tej nie ma zbyt wielkie- nux). Tematem tym zajmiemy się dokładnie w wykorzystanie istniejącej konfiguracji zawsze
go pola do optymalizacji. następnych częściach cyklu. poprzedzamy przekopiowaniem pliku .config do
katalogu ze zródłami jądra.
Networking support Cryptographic API
W kategorii tej zawarte są opcje dotyczące kon- W kategorii tej zawarte są opcje dotyczące kon- W następnej części
figuracji mechanizmów sieciowych systemu. figuracji obsługi funkcji związanych z krypto- W następnej części cyklu zajmiemy się opi-
Możemy w niej aktywować obsługę rozmaitego grafią i algorytmami szyfrującymi. Tematem sem zarządzania zasobami poprzez jądro Li-
sprzętu sieciowego, protokołów telekomunika- tym zajmiemy się dokładnie w następnych czę- nux. Dowiemy się, w jaki sposób kernel przy-
cyjnych oraz funkcji związanych z filtrowaniem ściach cyklu. dziela aplikacjom zasoby, jak określana jest
pakietów. Wiele informacji dotyczących każdej kolejność zadań wykonywanych przez pro-
z opcji znajdziesz w pomocy. Virtualization cesor oraz jak działa scheduler. Zajmiemy się
W kategorii tej zawarte są opcje dotyczące kon- również systemami plików obsługiwanymi
Device Drivers figuracji obsługi funkcji związanych z obsługą przez jądro Linux. Dowiemy się, w jaki spo-
W kategorii tej zawarte są opcje dotyczące wirtualizacji. Jeżeli nie jesteś zainteresowany tą sób dane przechowywane są na dyskach twar-
konfiguracji sterowników urządzeń. W menu tematyką, lub korzystasz z innego oprogramo- dych, jak odbywa się obsługa partycji wymia-
tym możesz dokonać wielu zmian, skutkują- wania do wirtualizacji, to możesz śmiało wyłą- ny oraz poznamy zastosowania, w których naj-
cych zwiększeniem wydajności pracy systemu czyć tą funkcję. lepiej sprawdzą się poszczególne systemy pli-
i zmniejszeniem obrazu jądra. Punktem wyj- ków. Do usłyszenia!
ścia do dalszej konfiguracji powinno być wyłą- Library functions
W kategorii tej zawarte są opcje dotyczące kon-
figuracji obsługi prostych funkcji bibliotecz-
O autorze
W Sieci
nych, wykorzystywanych przez jądro. Jakiekol-
wiek zmiany w tym menu nie są zalecane.
Autor interesuje się bezpieczeństwem sys-
" Strona główna jądra Linux
temów informatycznych, programowaniem,
 http://www.kernel.org/
Wykorzystanie
elektroniką, muzyką rockową, architekturą
" Strona KernelTrap
istniejących konfiguracji
mikroprocesorów oraz zastosowaniem Li-
 http://kerneltrap.org/
Przekonałeś się, iż konfiguracja jądra może być
nuksa w systemach wbudowanych.
" Linux w systemach wbudowanych
procesem bardzo czasochłonnym. Z tego wzglę-
Kontakt z autorem: rl.kulaga@gmail.com
 http://www.linuxfordevices.com/s
du, często istnieje potrzeba zapisania pliku zawie-
www.lpmagazine.org 51


Wyszukiwarka

Podobne podstrony:
Linux Kernel Podróż do wnętrza systemu cz 1
Joe Vitale Podróże do wnętrza siebie
Podróże do wnętrza siebie(1)
bradley r smith(podroz do wnetrza ludzkich zarodkow)
PODROZ DO WNETRZA ZIEMI 3D (2008)
ONEIRONAUTYKA – PODRÓŻ DO WNĘTRZA UMYSŁU
Podroze Do Wnetrza Siebie Fragment Pd
podroze do wnetrza siebie
Podróż do Wnętrza Ziemi
Podróż do wnętrza ziemi 3D NAPISY
Podróż do wnętrza Ziemi (2008)

więcej podobnych podstron