Are you a developer? Try out the
JĄDRO SYSTEMU
Jądro (kernel) w systemie Linuks pełni rolę pośrednika między uruchamianymi programami, a
sprzętem komputerowym. Głównym zadaniem jądra jest zarządzanie pamięcią, partycją wymiany i
procesorem tak, aby wszystkie uruchomione procesy dostały równą ilość czasu procesora.
Istnieją dwa rodzaje wersji jądra : stabilna i rozwojowa.
Wersja stabilna nie zawiera większych błędów i przeznaczona jest dla systemów, w których ważną
rolę odgrywa stabilność i bezpieczeństwo.
Wersja rozwojowa zawiera zazwyczaj nowe rozwiązania będące w fazie testów i przeznaczona jest
dla ludzi zajmujących się rozwojem kernela.
Wersje stabilną od wersji rozwojowej można poznać po jej numerze.
Wersje stabilne mają środkową liczbę parzystą : 2.4.14 , a wersje rozwojowe nieparzystą :
2.5.69 .
1) Zdobywanie źródła
2) Konfiguracja jądra
3) Kompilacja i instalacja nowego jądra
Are you a developer? Try out the
1) Zdobywanie źródła
Najlepszym miejsce do ściągnięcia najnowszego jądra jest serwer :
ftp://ftp.kernel.org:/pub/linux/kernel
Na serwerze tym można znaleźć starsze, jak i te najnowsze jądra systemu, zarówno te stabilne, jak i
rozwojowe. Na serwerze znajdują się również path-e do kerneli.
Nowe jądro należy przekopiować do katalogu /usr/src i tam rozpakować.
W katalogu tym zostanie utworzony nowy katalog zawierający jądro systemu.
2) Konfiguracja jądra
Istnieją trzy polecenia służące do konfigurowania jądra systemu :
make config
- konfiguracja odbywa się w trybie tekstowym i polega na odpowiadaniu na zadawane
pytania
make menuconfig
- konfiguracja przebiega w oparciu o graficzne menu, a cały proces konfiguracji
opiera się na używaniu klawiszy : [enter] i [spacja] , prosty w obsłudze
make xconfig
- konfigurator pracuje w systemie X Window, posiada przyjazny interfejs, a wszelkie
wybory dokonuje się myszą
Are you a developer? Try out the
Polecenia te należy wydać w katalogu z nowym jądrem systemu .
Należy wspomnieć, że podczas konfiguracji sterowniki mogą być wkompilowane w jądro '*' ,
skompilowane jako moduł 'M' lub nie kompilowane wcale - okienko puste.
Najważniejsze opcje konfiguracyjne jądra wraz z przykładową konfiguracją to :
1. Code maturity level options
[ * ] Prompt for development and/or incomplete code/drivers
Opcja ta umożliwia nam korzystanie z nowych, będących w trakcie testów sterowników
2. Processor type and features
(PPro/6x86MX) Processor family
W tej opcji wybieramy typ posiadanego procesora
(1GB/2GB) Maximum Physical Memory
Podajemy największy rozmiar pamięci fizycznej
[ ] Math emulation
Włącza emulację koprocesora matematycznego
[ * ] MTRR (Memory type range register)
Należy włączyć tą opcję przy procesorach Pentium Pro i wzwyż
[ ] Symetric multi-processing support
Opcja ta przeznaczona jest dla komputerów wieloprocesorowych
3. Loadable module support
[ * ] Enable module support
Opcja pozwalająca na kompilowanie fragmentów kodu kernela jako modułów, które mogą być
ładowane w razie potrzeby
[ ] Set version information on all symbols for modules
Umożliwia korzystanie z modułów skompilowanych przy instalacji poprzedniego jądra
Are you a developer? Try out the
[ * ] Kernel module loader
Opcja to umożliwia automatyczne ładowanie modułów
4. General setup
[ * ] Networking support
Obsługa sieci. Należy zaznaczyć tą opcję nawet jeśli nie będziemy podłączeni do sieci
[ * ] PCI Support
Jest to wsparcie dla urządzeń pracujących na magistrali PCI
[ * ] PCI quirks
Zaznaczenie tej opcji powoduje automatyczne ustawienie szyny PCI z pominięciem BIOS-u
(BIOS/Direct/Any) PCI access mode
Sposób dostępu do szyny PCI - z użyciem BIOS-u, lub bezpośredni
[ * ] System V IPC
Opcja ta włącza komunikację międzyprocesorową. Przydatne przy uruchamianiu wszelakich
emulatorów systemów.
[ * ] Sysctl support
Pozwala na dynamiczne zmienianie parametrów jądra
[ M ] Kernel support for a.out binaries
[ * ] Kernel support for ELF binaries
[ M ] Kernel support for MISC binaries
Wsparcie dla podstawowych formatów plików wykonywalnych
[ * ] Parallel port support
Wsparcie dla urządzeń podłączonych do portu równoległego
[ * ] PC-style hardware
Opcja dla posiadaczy portu równoległego PC-style
[ * ] Advanced Power Management BIOS support
Zaawansowane oszczędzanie energii oparte na BIOS-się komputera
Are you a developer? Try out the
5. Plug and Play support
[ * ] Plug and Play support
Opcja ta daje wsparcie dla urządzeń typu p-n-p
<*> Auto-probe for parallel device
Automatyczne rozpoznawanie urządzeń podłączonych do portu równoległego
6. Block devices
[ M ] Normal PC floppy disk support
Opcja potrzebna w przypadku korzystania ze stacji dyskietek
[ * ] Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Wsparcie dla standardu IDE/MFM/RLL
[ * ] Include IDE/ATA-2 DISK support
[ * ] Include IDE/ATAPI CDROM support
Opcje te włączają wydatniejszą obsługę dysków i cd-romów
[ * ] CMD640 chipset bugfix/support
[ * ] CMD640 enchanced support
[ * ] RZ1000 chipset bugfix/support
Włączenie tych opcji powoduje poprawienie błędów w układach scalonych
[ * ] Generic PCI IDE chipset support
Wsparcie dla PCI systemu z obsługą dysków IDE
[ * ] Generic PCI bus-master DMA support
Wsparcie dla dysków z obsługą DMA
[ * ] Use DMA by default when available
Wsparcie dla urządzeń korzystających z DMA
[] Other IDE chipset support
Wsparcie dla niestandardowych urządzeń IDE
[ ] Loopback Device Support
Sterownik umożliwiający zamontować plik, który jest obrazem dysku
Are you a developer? Try out the
[ ] Multiple devices driver support
Sterownik pozwalający zamontować wiele partycji fizycznych w jedną logiczną
[ ] RAM disk dupport
Umożliwia stworzenie dysk wirtualny w pamięci RAM
7. Networking options
[ M ] Packet socket
Opcja dołączająca protokół wykorzystywany prze aplikacje do komunikacji w sieci
[ *] Kernel/User netlink socket
[ *] Network firewalls
Opcje umożliwiające stworzenie firewalla do ochrony naszej sieci
[ * ] TCP/IP Networking
Obsługi protokołu TCP/IP mającego zastosowanie zarówno w internecie jak i w lokalnych sieciach
[ ] The IPX protocol
Opcja do obsługi protokołu sieciowego IPX w Novellu
<> Appletalk DDP
Służy do konwersacji z komputerami Apple
8. SCSI support
[ ] SCSI support
Opcja do obsługi urządzeń SCSI
[ ] SCSI disk support
[ ] SCSI tape support
[ ] SCSI CD-ROM support
[ ] SCSI generic support
Wsparcie dla poszczególnych urządzeń SCSI
SCSI low-level drivers ŕ
Tutaj wybieramy typ naszego kontrolera SCSI
Are you a developer? Try out the
9. Network device support
[ * ] Network device support
Zaznaczamy tą opcję, jeżeli chcemy używać sieci
[ M ] Dummy net driver support
Zaznaczamy przy używaniu protokołów PPP lub SLIP
<> EQL (serial line load balancing) support
Jeśli chcemy używać jednocześnie dwóch połączeń do tego samego komputera (wymaga 2
modemów i 2 linii telefonicznych)
Ethernet (10 or 100Mbit)
Opcja potrzebna do utworzenia lokalnej sieci z użyciem kart sieciowych.Należy wybrać model karty
[] FDDI driver support
Wsparcie dla kart FDDI
[ M ] PLIP (paraller port) support
Potrzebne do połączenia dwóch komputerów za pomocą portu równoległego
[ M ] PPP (point-to-point) support
Potrzebne w przypadku korzystania z internetu poprzez modem
<> SLIP (serial line) support
starszy brat PPP wykorzystywany do łączenia się z internetem, poprzez linię telefoniczną
<> CSLIP compressed headers
SLIP z włączoną kompresją nagłówków TCP/IP
[] Keepalive and linefill
dodatkowe możliwości dla SLIP przy łaczach słabej jakości
10. IrDA subsystem support
Obsługa urządzeń na podczerwień
11. ISDN subsystem
Obsługa urządzeń ISDN
Are you a developer? Try out the
12. Old CD-ROM drivers (not SCSI, not IDE)
Obsługa CD-ROMów starego typu
13. Character devices
[ * ] Virtual terminal
Opcja pozwala na uruchamianie kilku wirtualnych terminali i przełączanie się między nimi za pomocą
klawiszy ALT+Fx.
[ * ] Support for console on virtual terminal
Dzięki tej opcji można ustawić wirtualny terminal na konsoli
[ M ] Standard/generic (dumb) serial support
Obsługa urządzeń podłączonych do portu szeregowego
[] Support for console on serial port
Dzięki tej opcji można ustawić konsolę na porcie szeregowym, czyli komunikaty od jądra będą
wysyłane na ten port, użyteczne w przypadku podłączania terminali lub profesjonalnych drukarek
[] Extended dumb serial driver options
Opcja wymagana jeśli chcemy używać HUB6 bądź więcej niż 4 porty szeregowe oraz dzielić linię
szeregową
[] Non-standard serial port support
Pozwala na ustawienie niestandardowych portów, wykorzystywana w systemach gdzie konieczna jest
praca wielu portów np. serwer z podłączonymi terminalami
[ * ] Unix98 PTY support
Wsparcie dla pseudo-terminali, które pozwalają na pracę takich urządzeń jak : telnet, xterm
(256) Maximum number of Unix98 PTY in use (0-2048)
Maksymalna liczba pseudo-terminali dla przeciętnych komputerów liczba 256 jest wystarczająca
[ * ] Parallel printer support
Zaznaczamy jeżeli mamy podłączoną drukarkę do portu równoległego.
[ * ] Mouse Support (not serial mice) Mice
Obsługa myszki podłączonej do portu PS/2. Przy zwykłych myszkach nie zaznaczamy.
Are you a developer? Try out the
[ * ] Enhanced Real Time Clock Support
Włączenie dostępu do zegara czasu rzeczywistego.
Video For Linux ->
Potrzebne jeżeli posiadamy kartę TV lub radiową. Należy wybrać model karty
Joystick support ->
Obsługi joysticka. Należy wybrać model urządzenia
14. Filesystem
[* ] Quota support
Włączenie tej opcji pozwoli na ustawienie limitów dyskowych dla użytkowników
[ ] Kernel automonter support
Włączenie tej opcji pozwoli nam na zamontowanie odległego systemu plikowego
[ * ] DOS FAT fs support
Pozwala na korzystanie z partycji dosowych
[ * ] MSDOS fs support
Dostęp do partycji MSDOS
[ ] UMSDOS: Unix-like filesystem on top of standard MSDOS filesystem
Pozwala na uruchomienie Linuksa bezpośrednio z partycji DOS
[ * ] VFAT (Windows-95) fs support
Dostęp do partycji FAT z długimi nazwami plików
[ * ] ISO 9660 CDROM filesystem support
Zaznaczamy jeżeli chcemy korzystać z CD-ROMu
[ * ] Microsoft Joliet CDROM extisions
Rozszerzenie standardu ISO 9660, pozwalające na korzystanie z długich nazw w formacie unicode
[ ] NTFS filesystem support (read-only)
Opcja pozwala na odczyt z partycji Windows NT
[ * ] /proc filesystem support
Utworzenie wirtualnego systemu plików w katalogu /proc, do którego jądro zapisuje informacje o
Are you a developer? Try out the
działalności systemu
[ * ] /dev/pts filesystem for UNIX98 PTYs
Zaznaczamy tę opcję jeśli zaznaczyliśmy UNIX98 PTY support
[ * ] Second extended fs support
Obsługa standardowego systemu plików Linuksa ext-2
Network File System ->
Menu z opcjami do obsługi sieciowych systemów plikowych.
Native Language Support ->
Menu do ustawienia obsługi języka i kodowania znaków
15. Console drivers
[ * ] VGA text console
Umożliwia korzystanie z Linuksa w trybie tekstowym
[ ] Video mode selection support
Opcję zaznaczamy gdy posiadamy kartę, która pozwala na ustawienie niestandardowych
rozdzielczości ekranu
16. Sound
[ M ] Sound card support
Zaznaczamy jeżeli mamy kartę dźwiękową
Additional low level sound drivers ->
W poszczególnych opcjach ustawiamy rodzaj karty i jej konfigurację
17. Kernel hacking
[ ] Magic SysRq key
Opcja dla ludzi zajmujących się rozwojem i testowaniem jądra.
Daje więcej kontroli nad systemem podczas jego zawieszenia lub debuggowania
Are you a developer? Try out the
Po skonfigurowaniu jądra systemu należy zapisać naszą konfigurację, co spowoduje utworzenie pliku
.config z odpowiednimi opcjami.
3) Kompilacja i instalacja nowego jądra
Kompilacja nowego jądra ogranicza się do wydania trzech poleceń :
make dep
- sprawdza pewne zależności
make clean
- usuwa niepotrzebne pliki ze źródeł
make bzImage
lub
make bzlilo
lub
make zImage
lub
make zlilo
bzImage
- kompiluje nasze jądro tworząc jego skompresowany obraz. Skompresowane jądro
odkompresowuje się automatycznie w czasie wykonywania
bzlilo
- kompiluje i instaluje nasze jądro automatycznie
zImage
- zwykła kompilacja jądra (już raczej nie stosowana)
zlilo
- kompiluje i instaluje nasze jądro automatycznie
Skompilowane jądro możemy znaleźć w katalogu :
/usr/src/linux/arch/i386/boot/zImage
lub
/usr/src/linux/arch/i386/boot/bzImage
Następnym krokiem jest kompilacja i instalacja modułów, którą wykonujemy poleceniami :
make modules
make modules_install
Are you a developer? Try out the
Skompilowane moduły zostaną skopiowane do katalogu :
/lib/modules/numer_wersji
Jeśli kompilowane jądro posiada numer wersji identyczny z numerem jądra skompilowanego już
wcześniej, należy przed instalacją modułów usunąć z tego katalogu całą jego zawartość.
Instalacja nowego jądra polega na skopiowaniu obrazu jądra do odpowiedniego katalogu i
skonfigurowaniu programu ładującego system.
Obraz naszego jądra kopiujemy z katalogu :
/usr/src/linux/arch/i386/boot/bzImage lub /usr/src/linux/arch/i386/boot/zImage
do katalogu :
/boot/wersja_jądra/
i zmieniamy nazwę na :
vmlinuz.numer_nowej_wersji
Następnym krokiem, który musimy wykonać jest skopiowanie pliku wskazującego na jądro :
/usr/src/linux/System.map
Are you a developer? Try out the
do katalogu z obrazem naszego jądra :
/boot/wersja_jądra/
W przypadku takich samych numerów jądra, stare jądro nie powinno zostać nadpisane, gdyż nowe
jądro nie zawsze może działać tak, jak tego sobie życzymy.
Domyślnym programem ładującym system jest program LILO.
Plikiem konfiguracyjnym tego programu jest plik : /etc/lilo.conf , a przykładowa konfiguracja
umożliwiająca wybór jednego z dwóch jąder może wyglądać następująco :
boot=/dev/hda
map=/boot/map
vga=normal
default=windows
keytable=/boot/pl.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
ignore-table
image=/boot/2.4.19/vmlinuz
label=linux-2.4.19
root=/dev/hda1
Are you a developer? Try out the
initrd=/boot/2.4.19/initrd.img
append="devfs=mount hdc=ide-scsi"
read-only
image=/boot/2.5.69/vmlinuz
label=linux-2.5.69
root=/dev/hda1
append="devfs=mount hdc=ide-scsi"
read-only
other=/dev/fd0
label=floppy
unsafe
Istniej możliwość automatycznego skompilowania i zainstalowania nowego jądra systemu poprzez
polecenie :
make bzlilo
lub
make zlilo
Najwygodniejszym sposobem kompilacji i instalacji nowego jądra jest wydanie komendy :
make dep clean bzlilo modules modules_install
polecenie to spowoduje wykonanie następujących czynności :
Are you a developer? Try out the
- wygenerowanie plików zależności
- usunięcie zbędnych plików
- utworzenie skompilowanej wersji jądra
- zmianę nazwy pliku /vmlinuz na /vmlinuz.old i skopiowanie nowego jądra do pliku /vmlinuz
- uruchomienie programu lilo i instalacja nowego obrazu jądra
- kompilację wszystkich modułów i instalację ich w odpowiednim katalogu
4) Moduły jądra
Moduły jądra doskonale odchudzają naszą pamięć dzięki temu, że mogą one być załadowane tylko w
razie potrzeby i usunięte, gdy nie są już potrzebne.
Na przykład :
jeśli obsługę interfejsu PPP mamy skompilowaną, jako ładowalny moduł jądra systemu, to tylko
podczas zestawiania połączenia internetowego ładowane są do pamięci wszystkie potrzebne
sterowniki. Po zamknięciu połączenia jądro usuwa z pamięci dany moduł.
Dzięki modułom możemy także dodać obsługę nowego sprzętu bez rekompilacji całego jądra.
Wszystkie moduły, które możemy w każdej chwili wykorzystać znajdują się w katalogu :
/lib/modules/
Modułami możemy swobodnie operować za pomocą następujących poleceń :
lsmod - wyświetla listę załadowanych modułów
Are you a developer? Try out the
insmod - ładuje moduły do uruchomionego jądra
rmmod - usuwa załadowany moduł
depmod - sprawdza wszystkie zależności pomiędzy modułami
modprobe - ładuje wszystkie moduły, od których zależny jest dany moduł