www debianusers pl Kompilacja j�dra Linux

background image

www.debianusers.pl: Kompilacja jądra Linux

Page 1

http://www.debianusers.pl/print.php?aid=10

2004-02-12 13:15:40

wersja oryginalna

Kompilacja jądra Linux

Paweł Tęcza

i

inni

Wstęp

Ten artykuł ma za zadanie pomóc początkującemu użytkownikowi Debiana w kompilacji jądra

Linux. Po jego przeczytaniu będzie on wiedział co to jest jądro systemu operacyjnego, jakiego

jądra używa Debian, czym różnią się wersje stabilne od rozwojowych Linuxa, po co kompiluje się

jądro oraz jak skompilować jądro metodą tradycyjną i sposobem Debiana. Wybór metody zależy

oczywiście od czytelnika. Kompilacja i instalacja sposobem Debiana ma tę zaletę, że jest

prostsza i bardziej zgodna z systemem pakietów Debiana.

Spis treści

1. Co to jest jądro?
2. Wersje stabilne i rozwojowe Linuxa
3. Po co kompilować jądro?
4. Kompilacja jądra metodą tradycyjną

4.1. Konfiguracja jądra
4.2. Kompilacja jądra
4.3. Instalacja jądra

5. Kompilacja jądra sposobem Debiana

5.1. Konfiguracja jądra
5.2. Kompilacja jądra
5.3. Instalacja jądra
5.4. Inne możliwości make-kpkg

5.4.1. Tworzenie podwersji jądra
5.4.2. Nakładanie "łatek" na jądro
5.4.3. Budowa modułów
5.4.4. Dodanie do jądra wsparcia dla initrd

6. Źródło
7. Podziękowania

1. Co to jest jądro?

Jądro jest najważniejszą częścią systemu operacyjnego, jego "mózgiem", ale samo nie jest

systemem operacyjnym. Zadaniem jądra jest obsługa systemu plików, zarządzanie pamięcią,

przydzielanie programom czasu procesora i urzędzeń zewnętrznych. Obecnie Debian korzysta z

jądra Linuxa (stąd nazwa Debian GNU/Linux), choć trwają też prace nad wykorzystaniem jądra

Hurd.

2. Wersje stabilne i rozwojowe Linuxa

Pierwotna wersja jądra Linux została stworzona w 1991 r. przez fińskiego programistę -- Linusa

Torvaldsa. Dziś zajmuje się on koordynacją pracy programistów z całego świata nad jego

dalszym rozwojem. Spakowane źródła nowych wersji jądra można pobierać bezpośrednio od

Linusa, bądź z większości serwerów z oprogramowaniem dla systemów GNU/Linux. Specjalny

system numeracji pozwala odróżniać użytkownikom kolejne wersje jądra. Jeśli pobraliśmy z

serwera plik linux-2.x.x.tar.gz, to pierwsza cyfra oznacza serię produkcyjną (od wielu lat równa jest

2), druga określa serię jądra, a trzecia -- numer kolejnej wersji tej serii. Parzysty numer serii

jądra oznacza, że mamy do czynienia z jego wersją stabilną, a numer nieparzysty -- z wersją

niestabilną, czyli wciąż rozwijaną. Po przetestowaniu i usunięciu błędów jądro rozwojowe staje

się jądrem stabilnym. Nowe wersje stabilne jądra pojawiają się co kilka tygodni, a

eksperymentalne -- nawet z dnia na dzień. Zamiast wielomegabajtowych plików ze spakowanymi

źródłami całego jądra (źródła do wersji 2.4.x zajmują ponad 25MB) można też pobierać tylko pliki

z zapisanymi zmianami w stosunku do poprzedniej wersji (tzw. "łaty"). I tak, jeśli na przykład

mamy już źródła jądra w wersji 2.4.1, a chcemy uaktualnić jądro do wersji 2.4.3, to nie musimy

pobierać pliku linux-2.4.3.tar.gz, lecz wystarczy ściągnąć pliki: patch-2.4.2.gz i patch-2.4.3.gz.

3. Po co kompilować jądro?

Standardowe jądro dostarczane z Debianem obsługuje większość konfiguracji i jeśli Twój system

działa zgodnie z oczekiwaniami, to kompilacja jądra nie jest Ci potrzebna. Kompilacja może być

jednak konieczna, jeśli chcesz:

korzystać ze specjalnego sprzętu lub pozbyć się konfliktów sprzętowych, które mogą

wystąpić w przypadku standardowego jądra,
korzystać ze sprzętu lub opcji takich, jak APM (zarządzanie energią) lub SMP (obsługa

wielu procesorów), które nie są obsługiwane przez standardowe jądro,

background image

zoptymalizować rozmiar jądra usuwając zbędne sterowniki i kompilując niektóre jako

moduły, co może przyspieszyć czas ładowania systemu i szybkość jego działania,
użyć opcji jądra wyłączonych w standardowym jądrze (np. obsługa firewalli),
korzystac z uaktualnień lub rozwojowej wersji jądra,
zrobić wrażenie na kolegach/koleżankach ;-) albo wypróbować nowe rzeczy.

4. Kompilacja jądra metodą tradycyjną

4.1. Konfiguracja jądra

Najpierw musimy wypakować pobrane źródła. W tym celu kopiujemy je do katalogu /usr/src i

rozpakowujemy poleceniami:

dla plików ze źródłami .tar.gz:

gunzip linux-2.x.x.tar.gz | tar -xvf -

dla plików ze źródłami .tar.bz2:

bunzip2 linux-2.x.x.tar.bz2 | tar -xvf -

dla plików ze "łatkami" .gz:

gunzip patch-2.x.x.gz | patch -p0

dla plików ze "łatkami" .bz2:

bunzip2 patch-2.x.x.bz2 | patch -p0

Jeśli w trakcie rozpakowywania nie wystąpiły jakieś błędy, to możemy przystapić do

konfigurownia jądra. Możemy to zrobić na trzy sposoby:

make config
make menuconfig
make xconfig

Pierwszy sposób to najstarsza metoda konfiguracji w trybie tekstowym. Jest on niewygodny i

należy go zastosować tylko wtedy, gdy zawiodą pozostałe. Drugi sposób pozwala na wygodną

konfigurację z użyciem systemu tekstowych menu. Wreszcie trzeci -- najwygodniejszy, działa

tylko pod systemem X Window. W każdym z nich jednak mamy do dyspozycji pomoc do prawie

wszystkich opcji.

4.2. Kompilacja jądra

Po skonfigurowaniu jądra możemy przystąpić do jego kompilacji. W tym celu wydajemy

komendy:

make dep
make clean
make bzImage
make modules
make modules_install

Trzy pierwsze polecenia przygotowują kompilację jądra, a następnie ją wykonują, dwa ostatnie

zaś kompiluja moduły i instalują je. Czas trwania kompilacji zależy od szybkości maszyny i waha

się od kilku minut na komputerach z procesorem Pentium II lub Celeron do kilkudziesięciu minut

na komputerach wyposażonych w procesor 486.

UWAGA: Jeśli ponownie kompilujemy źródła tej samej wersji jądra, to przed wydaniem

polecenia make modules_install musimy usunąć katalog /lib/modules/2.x.x z zainstalowanymi

modułami.

4.3. Instalacja jądra

Jeśli kompilacja zakończyła się sukcesem i na ekranie nie mamy żadnych informacji o błędach, to

możemy przystapić do zainstalowania nowego jądra:

1. Kopiujemy plik bzImage:

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-<nowa_wersja>

background image

2. Tworzymy symboliczne dowiązania /vmlinuz i /vmlinuz.old:

ln -s /boot/vmlinuz-<nowa_wersja> /vmlinuz
ln -s /boot/vmlinuz-<stara_wersja> /vmlinuz.old

3. Kopiujemy plik System.map:

cp /usr/src/linux/System.map /boot/System.map-<nowa_wersja>

4. Tworzymy plik initrd*:

mkinitrd -o /boot/initrd-<nowa_wersja> /lib/modules/<nowa_wersja>

5. Modyfikujemy plik /etc/lilo.conf

# Nowe j

ądro

image=/vmlinuz

label=debian
initrd=/boot/initrd-<nowa_wersja>*
read-only


# Stare j

ądro

image=/vmlinuz.old

label=debian.old
initrd=/boot/initrd-<stara_wersja>*
read-only

* - tylko jeśli chcemy dodać do jądra obsługę initrd (ang. Initial RAM disk).

6. Aktualizujemy LILO:

lilo -v

UWAGA: Pozostawienie starego jądra i utworzenie symbolicznego dowiązania do niego pozwoli

nam ponownie uruchomić komputer, gdyby okazało się, że system nie chce działać z nowym

jądrem.

5. Kompilacja jądra sposobem Debiana

Do kompilacji jądra z wykorzystaniem udogodnień znajdujących się w Debianie potrzebne są

następujące pakiety: binutils, bzip2, fileutils, libc-dev, gcc, make, libncurses-dev, kernel-package, bin86,
fakeroot

.

5.1. Konfiguracja jądra

Najpierw wypakowujemy źródła jądra do jednej z poniższych lokalizacji:

/tmp/linux
/var/tmp/linux
/usr/local/src/<gdziekolwiek>
/usr/src/linux-x.x.x

Następnie konfigurujemy jądro za pomocą komendy:

make-kpkg --config <metoda>

, gdzie metoda może przyjmować następujące wartości: oldconfig, config, menuconfig, xconfig lub w

skrócie: old, menu, x.

5.2. Kompilacja jądra

Po skonfigurowaniu jądra czyścimy drzewo katalogów ze źródłem i parametry pakietu kernel-
package

. W tym celu wydajemy polecenie:

make-kpkg clean

Teraz budujemy pakiet .deb z nowym jądrem. Robimy to w następujący sposób:

make-kpkg --revision <nasza_nazwa> kernel_image

background image

gdzie <nasza_nazwa> jest symbolem oznaczającym naszą wersję jądra. Musi on zawierać litery i

przynajmniej jedną cyfrę oraz nie może zawierać znaku '_'. Jako łączników można użyć znaków '.',
'+'

i ':', np.:

make-kpkg --revision SuperKernel1.0+sound kernel_image

UWAGA: Do budowania pakietu możemy użyć konta dowolnego użytkownika, jeśli zastosujemy

program fakeroot:

fakeroot make-kpkg --revision <nasza_nazwa> kernel_image

5.3. Instalacja jądra

Jeśli budowa pakietu przebiegła bezbłędnie, to w katalogu nadrzędnym powinien już czekać

gotowy .deb. Instalujemy go w dokładnie taki sam sposób, jak każdą inną paczkę:

dpkg -i kernel-image-2.x.x_<nasza_nazwa>_i386.deb

UWAGA: Jeśli po raz kolejny budujemy pakiet z tych samych źródeł jądra, to przed jego

instalacją powinniśmy przenieść stare moduły w inne miejsce, np.:

mv /lib/modules/2.x.x /lib/modules/2.x.x.old

Polecenie instalujące pakiet oprócz samego jądra zainstaluje także inne potrzebne pliki (/boot/
System.map-2.x.x

i /boot/config-2.x.x) oraz tak zmodyfikuje program ładujący jądro (LILO), aby

można je było uruchomić po zrestartowaniu komputera. Standardowe dowiązania symboliczne

utworzone przez program dpkg są następujące:

/vmlinuz.old

-- dla starego jądra,

/vmlinuz

-- dla nowego jądra.

5.4. Inne możliwości make-kpkg

Program make-kpkg to bardzo pożyteczne narzędzie, które umożliwia nam również tworzenie

podwersji jądra, nakładanie "łatek", budowanie modułów, dodawanie do jądra wsparcia dla initrd

i wiele innych.

5.4.1. Tworzenie podwersji jądra

Dzięki tej funkcjonalności programu make-kpkg możemy w łatwy sposób tworzyć paczki z tą samą

wersją jądra, lecz w różnej konfiguracji.

Załóżmy, że chcemy dodać do naszego jądra obsługę dźwięku, która standardowo jest wyłączona

w "Woodim". W tym celu dokonujemy odpowiednich modyfikacji w konfiguracji jądra i

kompilujemy je w sposób pokazany poniżej:

make-kpkg --config menu --revision SuperKernel1.0+sound --append-to-version -sound \
kernel_image

W wyniku działania polecenia otrzymamy pakiet kernel-image-2.x.x-
sound_SuperKernel1.0+sound_i386.deb

.

Nie musimy się zbytnio martwić o moduły do tego jądra, gdyż po instalacji pakietu zostaną one

umieszczone w katalogu /lib/modules/2.x.x.-sound.

5.4.2. Nakładanie "łatek" na jądro

Powiedzmy, że znudziło się nam już standardowe logo Linuxa wyświetlane w czasie startu

systemu przez framebuffer. Możemy je zmienić modyfikując odpowiednio źródła jądra. W tym

celu wykorzystamy dostępny w dystrybucji pakiet kernel-patch-debianlogo. Instalujemy go w

typowy dla Debiana sposób:

apt-get install kernel-patch-debianlogo

Po zainstalowaniu pakietu odpowiednie "łaty" zostaną umieszczone w katalogu /usr/src/kernel-
patches/all/debianlogo

.

Żeby "połatanie" jądra się udało musimy wcześniej wyeksportować zmienną środowiskową
PATCH_THE_KERNEL

:

export PATCH_THE_KERNEL=YES

background image

Teraz możemy przystąpić do budowy jądra i jego automatycznego "połatania":

make-kpkg --config menu --revision SuperKernel1.0+logo --append-to-version -logo \
--added-patches debianlogo kernel_image

Po zakończeniu działania polecenia otrzymamy pakiet kernel-image-2.x.x-
logo_SuperKernel1.0+logo_i386.deb

.

5.4.3. Budowanie modułów

Program make-kpkg możemy wykorzystać nie tylko do budowania jądra, ale także modułów.

Załóżmy, że mamy notebooka, dodaliśmy do jądra obsługę dźwięku, a teraz chcemy zbudować

moduły do obsługi kart sieciowych PCMCIA. Instalujemy w tym celu pakiet pcmcia-source. Po jego

zainstalowaniu źródła znajdą się w katalogu /usr/src/modules/pcmcia-cs.

Teraz przystępujemy do budowy modułów używając komendy:

make-kpkg --revision SuperKernel1.0+sound --append-to-version -sound \
--added-modules pcmcia-cs modules_image

Po zakończeniu działania komendy otrzymamy pakiet pcmcia-modules-2.x.x-
sound_3.1.33+SuperKernel1.0+sound_i386.deb

.

UWAGA: Jeśli do budowy jądra nie używaliśmy opcji --append-to-version, to do zbudowania

modułów także nie musimy jej używać.

5.4.4. Dodanie do jądra wsparcia dla initrd

Initrd (ang. Initial RAM disk) to RAM dysk, który jest montowany przez program uruchamiający

Linuxa (np. Loadlin lub LILO) jako partycja / przed zamontowaniem właściwej głównej partycji.

Initrd jest najczęściej używany po to, aby załadować moduły potrzebne do podmontowania

"prawdziwej" partycji /. Aby dodać obsługę initrd przez jądro musimy w czasie jego konfiguracji

zaznaczyć wkompilowanie na stałe opcji RAM disk support (CONFIG_BLK_DEV_RAM) i Initial RAM disk
(initrd) support

(CONFIG_BLK_DEV_INITRD) w sekcji Block Devices oraz opcji ROM filesystem support

(CONFIG_ROMFS_FS) w sekcji Filesystems. Więcej informacji na temat initrd możemy znaleźć w

pliku Documentation/initrd.txt znajdującym się w źródłach jądra.

Do pliku /etc/kernel-img.conf dopisujemy linijkę:

do_initrd = Yes

Do wywołania make-kpkg dodajemy jeszcze jedną opcję:

make-kpkg --revision SuperKernel1.0+initrd --append-to-version -initrd \
--initrd kernel_image

Po zainstalowaniu pakietu powiniśmy jeszcze sprawdzić czy dowiązanie symboliczne /initrd.img

wskazuje na /boot/initrd.img-2.x.x-initrd.

6. Źródło

Artykuł "Jądro Linuxa -- szlifowanie systemu", Igor Wawrzyniak, PC World Komputer,
Dokument

Instalacja Debiana GNU/Linux 2.2 dla architektury Intel x86

,

Artykuł "Pamiętnik starego debianowca", Artur Górniak, LinuxPlus nr 7/2000,
Artykuł "Kompilacja jądra w Debianie", Robert Litwiniec, LinuxPlus Extra! Debian 3.0

Woody,
Plik README dołączony do źródła jądra,
Plik /etc/doc/kernel-package/README.gz,
Strona podręcznika make-kpkg(1).

7. Podziękowania

Autor artykułu dziękuje następującym osobom:

Koziemu, Tomaszowi Rykale i Michałowi Bogusiakowi vel kilop za dostrzeżone

błędy.
Kaczemu za uzupełnienie informacji na temat parametru --revision programu make-kpkg.

Copyleft

Pafcio

. All rights reversed.

Ostatnia modyfikacja: Pt 30.05.2003 16:38:01

Ten artykuł został opublikowany pod adresem

background image

http://www.debianusers.pl/article.php?aid=10

.


Wyszukiwarka

Podobne podstrony:
www debianusers pl Kompilacja j�dra Linux
download Zarządzanie Produkcja Archiwum w 09 pomiar pracy [ www potrzebujegotowki pl ]
struktura organizacyjna BTS [ www potrzebujegotowki pl ]
co oznacza malzenstwo WWW ALEJAJA PL
www literka pl oznaczenia rezystorow,archiwum,2815,druku
phmetria www przeklej pl
02 geneza i rozwoj logistyki [ www potrzebujegotowki pl ]
(ebook www zlotemysli pl) matura ustna z jezyka angielskiego fragment W54SD5IDOLNNWTINXLC5CMTLP2SRY
forex analiza techniczna (e book www zlotemysli pl ) DK3ZOOPY4OOL2LNDIKQIOV6NQ566VKSXSPJLABQ
Niemierko, Walukiewicz [ www potrzebujegotowki pl ]
inventor modelowanie zespolow www przeklej pl
antropologia kultury-[ www.potrzebujegotowki.pl ], Ściągi i wypracowania
Logistyka produkcji zajmuje się procesami transportowymi(2)-[ www.potrzebujegotowki.pl ], Ściągi i w
prob wki www.przeklej.pl, Ratownictwo Medyczne
Dilthey skfuo [ www potrzebujegotowki pl ]
rozw j teorii literatury wyk zag do egz www przeklej pl
pytania www przeklej pl
biznes plan TreeLogic [ www potrzebujegotowki pl ]
(ebook www zlotemysli pl) dieta surowa darmowy fragment BO3ZICSGAEIYEJWZSIHIM6KV7L5EABOVCDFMHSA

więcej podobnych podstron