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
4) Moduły jądra
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ą
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
[ * ] 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
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
[ ] 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
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
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.
[ * ] 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 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
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
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
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
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 :
- 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
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ł
GRUPA MEDIA INFORMACYJNE & ADAM NAWARA
|