Co to jest jądro systemu?
Linux jest systemem operacyjnym, który można ściśle dostosować do
swoich potrzeb. Dzięki temu można uzyskać optymalną wydajność komputera.
Jądro systemu (po angielsku: kernel) jest odpowiedzialne za
przełączanie procesora pomiędzy poszczególne procesy, komunikacje z
wszelkiego rodzaju urządzeniami wchodzącymi w skład komputera oraz
zarządzanie pamięcią i partycją wymiany. Pierwsze jądro Linux`a napisał
oczywiście sam Linus Torvalds, który do teraz zajmuje się jego rozwojem.
Zostało ono stworzone prawie w całości przy użyciu języka
programistycznego C. Jądro Linuxa ma modularną budowę, ale o tym poniżej.
Moduły
Moduły wynalezione zostały po to, aby odciążyć jądro Linuxa i nie
ładować niepotrzebnych sterowników urządzeń do pamięci. Nie chodzi tutaj o
niepotrzebne sterowniki np. streamera, którego nie mamy, ale o takie,
które nie są konieczne w danej chwili i mogą zostać załadowane, kiedy
będziemy chcieli skorzystać z urządzenia. Bo np. ile razy uruchamiamy
komputer i nie używamy np. drukarki? Jeśli sterownik drukarki byłby
wkompilowany w jądro na stałe, wtedy zajmował by pamięć nawet wtedy, gdy
nie mielibyśmy wcale zamiaru drukować :-) Moduły mają tę zaletę, że możemy
je dodawać do jądra bez przerywania pracy systemu. Możemy także dodać
obsługę nowego sprzętu (który kupiliśmy, bądź dołączyliśmy) bez
rekompilacji całego jądra. Modułami możemy swobodnie operować za pomocą
linii komend linuxowej konsoli.
|
insmod -
polecenie to pozwala na załadowanie modułu do
pamięci, rmmod - usuwa moduł, lsmod - wyświetla
listę załadowanych modułów, depmod - tworzy bazę danych z
informacjami o dostępnych w systemie modułach, które mogą zostać
umieszczone w jądrze.
|
|
Wersje jądra Linuxa
Istnieją dwa rodzaje dostępnych wersji jądra - stabilna (stable) i
rozwojowa (development). Stabilna jest przeznaczona dla ludzi ceniących
sprawdzone, nie zawierający większych błędów szkielet systemu. Wersje te
zalecane są także dla początkujących użytkowników gdyż nie powinny
sprawiać większych problemów i są bardzo dobrze udokumentowane. Wersje
developerskie przeznaczone są dla ludzi zajmujących się rozwojem kernela,
zawierają często wiele nowych sterowników dla najnowszych urządzeń oraz
pomysłów. Często zdarza się jednak, że użytkownicy wybierają niestabilne
jądro i na nim pracując, wykorzystują je lepiej niż stabilne :-) Ze
względu na podział na wersje, także różna jest ich numeracja. Wersje
stabilne mają środkową liczbę parzystą np. 2.4.4, a developerskie
nieparzystą np. 2.3.40. Wersją testowym przybywa numerków często,
natomiast stabilnym co miesiąc - dwa - trzy.
Źródła
Aby móc skompilować jądro Linux`a musimy mieć jego pliki źródłowe.
Powinniśmy wybrać najnowszą stabilną wersję, najlepiej w postaci
spakowanej *.tar.gz. Możemy też wziąć źródła z naszej dystrybucji zawarte
w pakietach *.rpm, ale na 90% będą one już przestarzałe! Pliki te będą
nosiły nazwy kernel-headers-numer.wersji.rpm i kernel-source-numer.wersji.
My jednak zaopatrzymy się w najnowsze źródełka, mogą być z internetu,
jeśli ktoś posiada łącze pozwalające na w miarę szybkie przepuszczenie
kilkudziesięciu megabajtów. Najświeższą wersję znajdziemy na ftp://ftp.kernel.org/ oraz licznych
mirrorach.
No więc mamy już plik kernel-numer.wersji.tar.gz. Na początek wywalmy
źródła zainstalowane z *.rpm`a. Można do tego użyć gnorpm ,
poszukać pliku kernel-sources-wersja i zdeinstalować go.
Potem przenieśmy plik ze źródłami do katalogu /usr/src i
wydajmy polecenie rozpakowania źródeł nowego jajka:
|
tar -zxvf
kernel-numer.wersji.tar.gz |
| Spowoduje to umieszczenie
ogromnej ilości plików w katalogu /usr/src/linux-wersja . To
są nasze źródełka, na których będziemy działać. Można utworzyć dowiązani
symboliczne o nazwie linux do tego katalogu:
|
ln -s
/usr/src/linux-wersja linux |
|
Patchowanie źródeł
Zdarza się, że nie możemy ściągnąć z Internetu najnowszego kernela.
Możemy wtedy zaopatrzyć się w jedno z popularnych pism komputerowych, np.
LinuxPlus albo CHIP lub spatchować źródła jądra. W tym celu ściągamy plik
o nazwie patch-wersja.która.chemy.mieć.gz , np.
patch-2.4.4.gz . Potem rozpakowujemy patch poleceniem:
i kopiujemy rozpakowany
plik patch-2.4.4 do katalogu /usr/src . Potem
wydajemy polecenie:
Jeśli wszystko
przebiegnie bez problemów, możemy przystąpić do konfiguracji jądra.
Patch'e Alana Cox'a
Jedną z najszybciej rozwijanych gałęzi jądra jest -ac, czyli gałąź
nowych, postępowych rozwiązań, za którą odpowiedzialna jest grupa
mainternerów z Alanem Cox'em na czele. Patch'e -ac aplikujemy w nieco inny
sposób. Po rozpakowaniu (gzip -d patch-wersja-acX.gz )
kopiujemy patch do katalogu /usr/src/linux (czyli jeden / głębiej niż przy
zwykłych patch'ach) i wydajemy polecenie:
|
patch -p1 <
patch-wersja-acX |
| Dalsza konfiguracja nie
różni się niczym od standardowej, chociaż należy pamiętać, że jest to
rozwojowa gałąź i mogą pojawić się problemy ze stabilnością.
Przed kompilacją
Musisz być pewny, że masz zainstalowane pakiety: make ,
bin86 , egcs i glibc-devel . Są one
konieczne do kompilacji jądra systemu.
Masz do wyboru trzy sposoby ustawienia opcji konfiguracyjnych:
1. Program konfiguracyjny uruchamiany poleceniem make config.
Wybór opcji kompilacyjnych polega na żmudnym odpowiadaniu na zadawane
przez komputer pytania. Niezbyt wygodny w użyciu, nie polecam.
2. Program konfiguracyjny uruchamiany poleceniem make
menuconfig. Dostajemy narzędzie a`la mc :-). Cały proces przygotowania
pliku konfiguracyjnego opiera się na używaniu dwóch klawiszy: entera i
spacji. Bardzo prosty w obsłudze, za pomocą znaku "?" dostajemy dość
obszerną pomoc dla każdego z komponentów.
3. Program konfiguracyjny uruchamiany poleceniem make xconfig.
Jak nazwa wskazuje odpalamy go w środowisku XWindow, ma przyjemny
interfejs, bardzo łatwo i fajnie się go obsługuje. Wszelkie wybory
dokonujemy za pomocą myszki.
Sterowniki mogą być, jak już napisałem powyżej, wkompilowane w jądro,
mogą być skompilowane jako moduł lub nie kompilowane wcale. My użyjemy do
konfiguracji jądra programu xconfig . Sterowniki kompilowane
na stałe w jądro oznaczone będą przez kliknięcie y, m jako
moduł , lub nie kompilowane wcale - n. Wybór poszczególnych
rodzajów odbywa się poprzez wielokrotne kliknięcia. Możemy też uzyskać
pomoc przez kliknięcie Help. Artykuły są zazwyczaj bardzo obszerne
i wszystko wyjaśniają - w języku angielskim. Zdarza się, że jeśli artykuł
totalnie do nas nie przemawia (zbyt techniczny żargon), autorzy umieścili
na końcu wskazówki typu: "zaznacz, może okazać się potrzebne", lub "jeśli
nie rozumiesz ani słówka, idź dalej" ;-)
Konfiguracja jądra
Przechodzimy do katalogu /usr/src/linux i wydajemy
polecenie:
Po chwili ujrzymy menu główne
programu, można rozpocząć konfiguracją jądra.
A oto i niektóre opcje wraz z opisem. Opisy pochodzą z artykułu Artura Pęczaka.
|
Code maturity level options [ ] Prompt for
development and/or incomplete code/driver
Możliwe jest tylko wkompilowanie tej opcji w jądro na stałe.
Pozwala korzystać z nowych, rozwijających się dopiero sterowników.
Nie zaleca się jej włączenia. |
|
|
Procesor type and features Procesor family
wybieramy rodzaj zainstalowanego u nas proc
(1Gb) Maximum Physical Memory określamy maksymalną wielkość
pamięci
[ ] Math emulation opcja emulująca koprocesor, przydatna tylko
wtedy gdy go nie mamy
[*] MTRR (Memory Type Range Register) support kontroluje dostęp
do pamięci, należy ją włączyć przy procesorach: Pentium Pro, Pentium
II i wyższych,
[ ] Symmetric multi-processing support włącz gdy posiadasz więcej
niż jeden procesor, w pozostałych przypadkach powinna być wyłączona
|
|
|
Loadable module support
[*] Enable loadable module support Dzięki temu nasze jądro będzie
zmodularyzowane -> będzie mogło korzystać z modułów.
[*] Set version information on all symbols for modules Opcja
pozwoli na korzystanie z modułów wcześniej skompilowanych nawet po
kompilacji nowego jądra.
[*] Kernel module loader Pozwala na ładowanie modułów podczas
pracy kernela. Bardzo przydatna opcja. |
|
|
General setup
[*] Network support Obsługa sieci, jeśli masz komputer podłączony
do sieci powinieneś wybrać tę opcję, jeśli nie też :-) gdyż niektóre
programy korzystają z portów sieciowych itp.
[*] PCI support Konieczne gdy masz urządzenia na PCI,
(Any) PCI access mode Można ustawić czy system odczyta
konfiguracje PCI z biosu czy określić ją samodzielnie. Any próbuje
określić konfiguracje, jeśli się nie uda, czyta ją z biosu.
[*] PCI quirks Pozwala na ustawienie szyny PCI jeśli BIOS
komputera jest błędny, Jeśli jesteś pewnie, że mam dobry BIOS możesz
wyłączyć, jeśli nie jesteś pewien, włącz.
[*] Backward-compatible /proc/pci dla zgodności /proc/pci ze
starszymi wersjami kernela, nie rozumiem tego do końca więc,
przeczytaj help`a -? :-)
[] MCA support MicroChannel Architecture - szyna systemowa
podobna do PCI i ISA, stosowana w niektórych maszynach IBM PS/2
maszynach i laptopach. Zajrzyj do dokumentacji jądra.
[*] System V IPC Komunikacja między procesami za pomocą System`u
V, wykorzystywanego w unixach. Zalecane zaznaczenie tej opcji.
[*] 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
Opcje te pozwalają na wykonywanie kodu binarnego programów
skompilowanych w różnych formatach. Opcje kompilacji warto zaznaczyć
tak jak powyżej.
<*> Paraller port support Musimy zaznaczyć gdy korzystamy z
urządzeń podłączonych do portu równoległego np. drukarka. Możemy
wybrać kompilacje jako moduł, jednak u mnie drukarka zadziałała
dopiero po wkompilowaniu tego sterownika w jądro :-(
--> <*> PC-style hardware Zaznacz jeśli masz port
równoległy PC-style. Taki port mają komputery kompatybilne z IBM PC
i Alpha.
--> [] Support foreign hardware Jeśli chcesz mieć obsługę
niestandardowych portów równoległych. Większość jednak nie
potrzebuje tej opcji.
[] Advanced Power Management BIOS support Zaawansowane
oszczędzanie energii oparte na BIOSie komputera. Potrzebne w
laptopach gdzie musimy oszczędzać akumulatory |
|
|
Block devices
<M> Normal PC floppy disk support Konieczne do używania
stacji dyskietek. Zalecana kompilacja jako moduł.
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Sterowniki obsługujące urządzenia IDE/MFM/RLL takie jak dyski
twarde, cdrom, streamer`y.
[] Use old disk-only driver on primary interface Sterowniki dla
starych dysków MFM,RLL,IDE pracujących jako pierwsze.
<*> Include IDE/ATA-2 DISK support <*> Include
IDE/ATA-2 CDROM support <> Include IDE/ATA-2 TAPE support
<> Include IDE/ATA-2 FLOPPY support Włącza wydatniejszą
obsługę dysków, cdrom`ów, dyskietek IDE/ATA-2.
<> SCSI emulation support Włącza emulacje dysków IDE jako
SCSI
[*] CMD640 chipset bugfix/support --> [] CMD640 enhanced
support Poprawa błędu i rozszerzony support dla chipsetu CMD640,
występującego w większości płyt dla procesorów 486 i Pentium.
[*] RZ1000 chipset bugfix/support Poprawa błędu i rozszerzony
support dla chipsetu RZ1000, występującego w większości płyt dla
procesorów 486 i Pentium.
[*] Generic PCI IDE chipset support Jeśli masz PCI system z
obsługą dysków IDE, nie potrzebna, gdy korzystasz z urządzeń
SCSI,
[*] Generic PCI bus-master DMA support Jeśli Twój dysk obsługuje
DMA zaznacz tę opcję.
[] Boot off-board chipset first support Gdy chcesz pozmieniać
numery kontrolerów
[*] Use DMA by default when available Warto włączyć gdy masz
urządzenia DMA
[] Other IDE chipset support Włącz jeśli masz jakieś
niestandardowe urządzenia IDE
---- Additional Block Devices
<> Loopback device support <M> Network block device
support [] Multiple devices driver support Pozwala na łączenie
dysków w jeden system plików - tworzenie macierzy dyskowych
<> RAM disk support Możesz używać części pamięci RAM jako
system plików.
<> XT hard disk support Jeśli masz bardzo stary kontroler
dysku używany w IBM XT
<> Mylex DAC960/DAC1100 PCI RAID Controller support Support
dla tych kontrolerów
<> Parallel port IDE device support Jeśli masz podłączony
CDROM lub jakieś dyski do portu równoległego
<> Compaq SMART2 support Wsparcie dla kontrolera Compaq
Smart Array |
|
|
Network device support
[*] Network device support Musisz zaznaczyć tę opcję, jeśli
chcesz wykorzystywać sieć - internet lub intranet
-- ARCnet support Jeśli masz karty sieciowe oparte na chipsecie
ARCnet
<M> Dummy net driver support Zaznacz, jeśli używasz sieci
na protokołach SLIP lub PPP
<> EQL (serial line load balancing) support Jeśli chcesz
używać jednocześnie dwóch połączeń do tego samego komputera (wymaga
2 modemów i 2 linii telefonicznych)
<> General Instruments Surfboard 1000 Sterownik dla
powyższego urządzenia
Ethernet (10 or 100Mbit)
Musisz zaznaczyć jeśli chcesz utworzyć lokalna sieć na bazie kart
sieciowych i wybrać odpowiedni jej model
[] FDDI driver support Jeśli masz kartę FDDI (szybka sieć
lokalna)
<M> PLIP (paraller port) support Jeśli chcemy połączyć dwa
komputerki za pomocą portu równoległego,
> PPP (point-to-point) support Gdy korzystamy z Internetu
poprzez linię telefoniczną, np. dostęp przez TPSA
--CCP compresors for PPP are only built as modules <> SLIP
(serial line) support starszy brat PPP wykorzystywany (coraz
rzadziej) do łączenia się z Internetem, poprzez linię telefoniczną
lub do połączeń z innymi komputerami za pomocą kabla nullmodem
<> CSLIP compressed headers to samo co SLIP, tylko, że
kompresowane są nagłówki TCP/IP
[] Keepalive and linefill dodatkowe możliwości dla SLIP przy
łączach słabej jakości
[] Wireless LAN (non-hamradui) Sieci związane z radiem, ale nie z
tzw. radiem amatorskim (amateur radio)
Token ring device --> IBM`owski sposób komunikacji w sieci
Ethernet, wymaga specjalnej karty Token ring |
|
|
Character devices
[*] Virtual terminal Możliwe jest uruchomienie kilku terminali,
przełączanych za pomocą klawiszy ALT+Fx. Powinieneś koniecznie
zaznaczyć tę opcję
[*] Support for console on virtual terminal Dzięki tej opcji
będziesz mógł ustawić wirtualny terminal na konsoli - urządzeniu na
które wysyłane są komunikaty i ostrzeżenia jądra systemu oraz
pozwala na zalogowanie się w trybie single-user
<M> Standard/generic (dumb) serial support Za pomocą tej
opcji będziemy mogli włączyć obsługę urządzeń działających na porcie
szeregowym np. myszka, modem
[] Support for console on serial port Będziemy mogli 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 Pseudo-Terminal urządzenie programowe
pozwalające na prace takich programów jak np. telnet, xterm
(256) Maximum number of Unix98 PTY in use (0-2048) Maksymalna
liczba pseudo-terminali mogących pracować jednocześnie, dla
komputerów desktop 256 jest liczbą w zupełności wystarczającą,
jednak dla serwerów udostępniających usługi telnet/ssh/rlogin itp.
konieczne może się okazać zwiększenie tej liczby
<*> Parallel printer support Zaznacz jeśli Twoja drukarka
jest podłączona do portu równoległego. Zazwyczaj wystarczy
ustawienie tego jako moduł, ale u mnie pomogło dopiero wkompilowanie
w jądro na stałe
[] Support IEEE1284 status readback Jeśli Twoja drukarka
dostosowywuje się do IEEE1284 (FireWire?), pozwala dostarczać znaki
statusu np. cat /dev/lp1
[*] Mouse Support (not serial mice) Mice --> Obsługa myszki
podłączonej do portu PS/2. Zaznaczenie tej opcji wymagane jest tylko
i wyłącznie przy myszkach PS/2, myszki szeregowe nie potrzebują jej
wcale! W sekcji Mice możemy wybrać rodzaj naszej myszki
<> QIC-02 type support Jeśli masz takie urządzenie taśmowe
(nie SCSI)
[] Watchdog Timer Support Opcja użyteczna w przypadku serwerów,
które muszą być przywrócone do pracy po reboot`ie tak szybko jak to
możliwe
[*] Enhanced Real Time Clock Support Dostęp do zegara czasu
rzeczywistego
Video For Linux -->
<> Video For Linux Konieczne jest zaznaczenie tej opcji
jeśli chcemy oglądać telewizję bądź słuchać radia. Powinniśmy także
wybrać odpowiedni rodzaj naszej karty
|
|
|
Filesystem
[*] Quota support Jeśli odpowiesz tak, będziesz mógł ustawiać
limity dyskowe użytkownikom.
<> Kernel automonter support Pozwala na montowanie
odległego systemu plikowego na żądanie
<> Amiga FFS filesystem support FFS (Fast File System) jest
używany przez Amigi. Jeśli masz taki dysk i chcesz z niego czytać,
bądź pisać na nim zaznacz tę opcję
<> Apple Macintosh filesystem support (experimental)
Pozwala na korzystanie z dyskietek i dysków twardych sformatowanych
w systemie plikowym Macintosh`y
<*> DOS FAT fs support Gdy masz obok Linux`a
zainstalowanego Windows`a zaznaczenie tej opcji pozwala na
korzystanie z jego partycji
<> VFAT (Windows-95) fs support Dostęp do partycji FAT z
długimi nazwami plików
<*> ISO 9660 CDROM filesystem support ISO 9960 jest
standardem jeśli chodzi o zapis na płytach kompaktowych, więc opcja
ta powinna być zaznaczona, jeśli chcemy korzystać z CDROMu
[] Microsoft Joliet CDROM extensions Joliet jest Microsoftowym
rozszerzeniem dla ISO 9660, który pozwala na długie nazwy plików w
formacie unicode
<> NTFS filesystem support (read-only) System plików
Windows NT. Możliwe jest tylko czytanie z tego rodzaju partycji
[*] /proc filesystem support Wirtualny system plików tworzony w
katalogu /proc do którego jądro zapisuje pliki z informacjami o
działalności systemu np. przerwania itp.
[] /dev/pts filesystem for UNIX98 PTYs Zaznacz tę opcję jeśli
zaznaczyłeś UNIX98 PTY support, jest to wirtualny filesystem dla
PTY
<> ROM filesystem support System plików tylko do odczytu
wykorzystywany w inicjującym system disk-ramie
<*> Second extended fs support Standardowy system plików
wykorzystywany w Linuxie: ext-2. Koniecznie wkompiluj to w
jądro.
<> UFS filesystem support System plików wykorzystywany
m.in. przez SunOS, FreeBSD, NetBSD, OpenBED i NeXTstep
Network File System --> Support dla sieciowych systemów
plikowych, np. takich jak NFS, SMB |
|
|
Console drivers
[*] VGA text console Bez tej opcji niemożliwe będzie korzystanie
z Linuxa w trybie tekstowym, a praca z takim systemem będzie raczej
uciążliwa. Koniecznie zaznacz.
[] Video mode selection support Gdy masz kartę, która pozwala na
ustawianie niestandardowych rozdzielczości ekranu |
|
|
Sound
<M> Sound card support Jeśli masz kartę dźwiękową w swoim
komputerze. Polecam wybranie tej opcji jako moduł.
Musisz także wybrać rodzaj swojej karty. Dla SoundBlaster 16 jest
to: <M> OSS sound modules <M> 100% Sound Blaster
compatibiles (SB16/32/64, ESS, Jazz16) support <M> FM
synthesizer (YM3812/OPL-3) support
Dla SoundBlaster Live! należy wybrać tylko i wyłącznie: <M>
OSS sound modules
Additional low level sound drivers --> Przyjrzyj się temu menu
bliżej jeśli masz karty: miroSOUND PCM12 i PCM20, Sound Blaster
32/64 lub Galant Audio Cards (SC-6000 i SC-6600)
|
|
|
Kernel Hacking
[] Magic SysRq key Będziesz miał większą kontrolę nad systemem,
np. podczas debuggowania jądra. Opcja dla ludzi pracujących nad
jądrem systemu. |
|
Kompilacja jądra
Wychodzimy z konfiguratora i zapisujemy ustawienia. Warto zapisać
ustawienia do pliku, aby wykorzystać je w przyszłości. Teraz przyszła
pora, aby skompilować nowe jądro. Zrobimy to za pomocą trzech poleceń:
|
make dep make
clean make bzImage
|
|
make dep zrobi wszystkie powiązania, make
clean wyczyści niepotrzebne śmieci ze źródeł, a make
bzImage skompiluje nam obraz naszego jądra. Operacja kompilacji
trwa zależnie od szybkości naszego procesora oraz od ilości zainstalowanej
pamięci RAM. Dla K6-2 i 128 Mb RAM jest to kilka minut.
Mamy już skompilowane jądro, które leży sobie w pliku
/usr/src/linux/arch/i386/boot/bzImage .
Teraz powinniśmy skompilować moduły. Robimy to poleceniem:
A następnie zainstalować je do katalogu /lib/modules/numer.wersji:
UWAGA!
Ważne, aby przed wydaniem polecenia make modules_install
usunąć z katalogu /lib/modules/numer-wersji poprzednio
skompilowane moduły. Czynność tę musimy wykonać tylko w wypadku, gdy
kompilujemy jądro o numerze wersji takim samym jak skompilowane wcześniej.
Przykładowo jeśli mamy już jądro 2.4.4 i kompilujemy jądro o takiej samej
wersji usuwamy katalog /lib/modules/2.4.4 . Uchroni nas to
przed nadpisywaniem modułów oraz komunikatem Unresolved symbol ...
Instalacja jądra
Jądro w Linuxie powinno zostać umieszczone w katalogu
/boot i nie powinniśmy nadpisywać starego jądra, gdyż
może się zdarzyć, że nowe jądro wcale nie będzie chciało z nami
współpracować i wtedy zostalibyśmy na lodzie. Przekopiujemy plik jądra do
katalogu /boot pod nową nazwą.
|
cp
/usr/src/linux/arch/i386/boot/bzImage
/boot/vmlinux-numer.wersji-new
|
|
Ładowanie jądra
Jądro ładowane jest podczas startu systemu, wywołuje je LInux LOader
(LILO). Dlatego też skonfigurujemy plik /etc/lilo.conf , który
będzie odpowiedzialny za ładowanie naszego nowego jądra. Dopiszmy parę
linijek do oryginalnego pliku, który może wyglądać tak:
|
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux
image=/boot/vmlinuz-2.2.12-20 label=linux initrd=/boot/initrd-2.2.12-20.img read-only root=/dev/hda5 other=/dev/hda1 label=dos
#
tutaj definicja nowego jajka
image=/boot/vmlinuz-2.2.13 #
ścieżka do pliku z jądrem
label=linux-new # to musimy
wpisać po prompcie LILO: # jeśli wszystko będzie grać możemy
zmienić # opcję
default
read-only root=/dev/hda4 #lokalizacja głównego
systemu plików
|
|
Przeładowanie LILO
Bardzo ważną rzeczą jest ponowne uruchomienie lilo w celu odczytania
zawartości pliku lilo.conf. Jeśli zmienialiśmy w nim cokolwiek, zmiany z
tego pliku zostaną odczytane dopiero w momencie wydania polecenia:
System.map
Jeśli instalowaliśmy nową wersję jądra Linux`a zapewne pojawią się
komunikaty, że plik System.map ma niewłaściwą wersję kernela.
Aby to usunąć kopiujemy plik System.map z katalogu /usr/src/linux do
kartoteki /boot . Możemy też sprawę wykonać bardziej
elegancko, co jest przydatne, jeśli korzystamy z kilku obrazów kernela.
Wtedy kopiujemy System.map do katalogu /boot jako
System.map-wersja-jądra oraz tworzymy plik System.map jako dowiązanie
symboliczne do odpowiedniej wersji pliku:
|
ln -s
System.map-wersja System.map
|
|
Teraz możemy zrestartować nasz system i uruchomić nowe jajko
poleceniem, które podaliśmy w lilo.conf. Obejrzyjmy czy nie wyskakują
jakieś błędy, czy wszystkie urządzenia działają etc. Potem możemy to jądro
ustawić jako ładowane standardowo podczas startu systemu.
|