J�dro syst�mu
Ji�� Kortus, 255719@mail.muni[NOSPAM].cz
Obsah
O j�dru
Linuxov� j�dro (kernel) je projekt iniciovan� Linusem Torvaldsem v roce 1991, jeho� c�lem bylo poskytnout
opensource alternativu ke komer�n�m UNIXov�m syst�m�m. Je naps�no v jazyce C a je voln� dostupn� pod licenc� GPL. J�dro je typu makrokernel,
a umo��uje zav�d�n� a odeb�r�n� jadern�ch modul� za b�hu. Na v�voji j�dra se pod�l�
komunita v�voj��� sest�vaj�c� jak z velk�ho mno�stv� jednotlivc�, tak i firem podporuj�c�ch Linux (RedHat, IBM, Novell a dal��). V �ele v�voje j�dra
st�le stoj� Linus Torvalds.
Verze a ��slov�n�
Historicky prvn� verz� byla verze 0.01 vydan� v roce 1991, v sou�asn� dob� jsou aktu�ln� verze �ady 2.6.x a nov� 3.x. (posledn� verze je aktu�ln� 3.0.4).
Verze jsou od v1.0 ��slov�ny typicky podle sch�matu A.B.C nebo A.B.C.D, kde
- A.B p�edstavuje v�vojovou �adu kernelu (2.4, 2.6, 3.0 atd.)
- C zna�� d�l�� revizi kernelu (minor version)
- V p��pad�, �e je t�eba vydat novou verzi, kter� opravuje kritickou nebo bezpe�nostn� chybu, ale zm�ny
nejsou dostate�n� rozs�hl� pro zv��en� ��sla minor verze, je tato skute�nost reflektov�na v ozna�en� D.
Za ��seln�m ozna�en�m verze m��e b�t je�t� dodatek (nap�. -rc1) popisuj�c�, �e jde o release-candidate verzi nebo
o specifickou v�vojovou v�tev.
Sta�en� j�dra
Zdrojov� k�dy j�dra lze z�skat z www.kernel.org, p��padn� z n�kter�ho ze zrcadel, nap�.
ftp.linux.cz (jedn� se o tzv. vanilla j�dro). Pokud pot�ebujeme
vanilla j�dro roz���it o dal�� funkce, je pot�eba st�hnout pat�i�n� patch a aplikovat jej na zdrojov� k�dy.
Konfigurace
Distribu�n� j�dra jsou konfigurov�na tak, aby fungovala na co nej�ir��m spektru hardwarov�ch konfigurac�,
tzn. mus� podporovat i mnoho hardwaru nebo vlastnost�, kter� �asto nejsou pot�eba. Konfigurac� lze j�dro optimalizovat
pro lep�� fungov�n� na dan�m HW, odstranit nepot�ebn� funkce a zmen�it m�sto zabran� j�drem (a moduly).
P�ed konfigurac� je t�eba zn�t parametry syst�mu, na kter�m j�dro pob��, zejm�na
- architekturu (typicky x86) - lze zjistit z v�pisu p��kazu cat /proc/cpuinfo
nebo uname -a
- za��zen�, pro kter� je t�eba podpora v j�d�e, lze zjistit pomoc�
- lspci, lsusb - informace o za��zen�ch na sb�rnic�ch PCI, resp. USB
- dmesg - v�pis zpr�v j�dra
- pou�it� souborov� syst�my
- dal�� pot�ebn� funkce (nap�. podpora s�t�)
Pro boot j�dra je nezbytn�, aby obsahovalo podporu pro za��zen�, ze kter�ho se bude bootovat (nap�. podpora SATA)
a souborov�ho syst�mu pou�it�ho v ko�enov�m odd�lu (p��padn� m��e b�t tato podpora obsa�ena v initramdisku).
Konfiguraci, kompilaci a instalaci j�dra lze shrnout do n�sleduj�c�ch krok�:
- St�hnut� a rozbalen� j�dra (v�t�inou do /usr/src/linux-verze_j�dra, v /usr/src
by m�l b�t symlink linux ukazuj�c� na aktu�ln� verzi zdrojov�ch k�d�)
- Zaz�lohov�n� konfigura�n�ho souboru (.config) funk�n� verze j�dra - zcat /proc/config.gz > .config.backup
nebo cp /boot/config-verze_j�dra .config.backup
- Konfigurace parametr� a sou��st� j�dra (podpora za��zen�, sb�rnic, s�t�, �ifrov�n�, ...) - pomoc� make a jednoho z n�sleduj�c�ch parametr�
- config - jsou kladeny ot�zky na konfiguraci jednotliv�ch polo�ek, ne zrovna u�ivatelsky p��v�tiv� :)
- menuconfig - konzolov� rozhran�, proch�zen� d�l��ch nab�dek a konfigurace polo�ek
- xconfig, gconfig - konfigurace pomoc� GUI zalo�en�ho na Qt, resp. GTK
U jednotliv�ch polo�ek lze zad�vat volbu, zda danou polo�ku chceme zakompilovat do j�dra (Y) �i nikoliv (N) nebo jestli
m� b�t zkompilov�na jako modul (M).
- Pot�, co jsme provedli konfiguraci a jej� ulo�en�, m��eme p�ikro�it ke kompilaci j�dra p��kazem make.
- D�le nainstalujeme moduly: make modules_install - dojde k jejich nakop�rov�n� do /lib/modules/linux-verze_zkompilovan�ho_j�dra
- Po zkompilov�n� bude j�dro (v�t�inou soubor bzImage) v arch/xyz/boot (xyz = n�mi po�adovan� architektura). Provedeme
nakop�rov�n� j�dra z arch/xyz/boot, konfigura�n�ho souboru .config a souboru System.map do /boot (a jejich pat�i�n� p�ejmenov�n� na config-verze_j�dra a System.map-verze_j�dra).
P��padn� je mo�n� pou��t p��kaz make install (pou�ije LILO, pokud je dostupn�).
- Uprav�me nastaven� zavad��e (GRUBu), aby bylo mo�n� po restartu nabootovat s nov�m j�drem.
P��padn� vytvo�en� initramdisku se provede n�strojem mkinitramfs.
U�ivatelsk� n�stroje
N�kter� n�stroje pro pr�ci s j�drem z u�ivatelsk�ho prostoru:
- modprobe - zaveden� nebo odstran�n� modulu
- lsmod - v�pis informac� o zaveden�ch modulech
- dmesg - v�pis hl�en� j�dra
Prost�ednictv�m soubor� v /proc a /sys lze za b�hu nastavovat parametry
j�dra nebo z nich ��st informace poskytovan� j�drem.
Parametry p�ed�van� j�dru p�i startu
P�i zav�d�n� j�dra mu mohou b�t zavad��em p�ed�ny konfigura�n� nebo ladic� parametry, nap��klad:
- root=/dev/sda1 - ko�enov� odd�l je /dev/sda1
- ro - ko�enov� odd�l bude p�ipojen pouze pro �ten�
- single - boot do jednou�ivatelsk�ho re�imu
- memtest=X - spu�t�n� n�stroje pro kontrolu opera�n� pam�ti a proveden� X pr�chod� testovac�ch procedur
- noinitrd - j�dro nepou�ije initramdisk
Kompletn� seznam parametr� lze naj�t na
http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt
System.map
System.map je soubor, kter� obsahuje tabulku jmen symbol� (jmen prom�nn�ch nebo funkc�) pou��van�ch j�drem a jejich um�st�n� v pam�ti.
Je generov�n p�i ka�d� kompilaci j�dra a slou�� k p�ekladu jmen symbol� na jejich adresy a naopak.
Literatura