Domyślny kernel sprawdza się większości wypadków, jednak czasami chcemy mieć jego najświeższą wersję lub specyficzną dla PLD odmianę. W tym rozdziale opiszemy budowanie kernela vaniliowego (bez jakichkolwiek łatek). Na serwerze dostępne są podstawowe alternatywne pakiety kernela, jednak nie ma do nich modułów dodatkowych np.: nvidia, madwifi, dlatego zbudujemy wszytko samodzielnie.

Założyłem, że będziemy chcieli mieć najnowsze dostępne wersje pakietów, dlatego przykłady będą dotyczyć tagów DEVEL i HEAD. Jest to ryzykowne i nie ma gwarancji, że budowanie się w takim wypadku uda, jednak w wielu wypadkach gra jest warta świeczki.

Środowisko deweloperskie

Oprócz oczywistych pakietów takich jak gcc i okolic, będziemy potrzebować kompletnego środowiska do budowania pakietów.

Kernel

Wchodzimy do katalogu ~/rpm/SPECS i zaczynamy od podstawowych pakietów jądra (trochę to potrwa):

./builder -bb kernel-vanilla -r HEAD

zanim zainstalujemy nowo zbudowane pakiety dobrze jest od razu zbudować dodatkowe moduły kernela.

Moduły spoza jądra

Aby zbudować moduły spoza źródeł jądra potrzebujemy pakiet kernel-module-build, który jednak nie jest budowany domyślnie. Dlatego teraz zbudujemy pakiety niezależne od architektury (kernel-module-build, kernel-source, itd.). Jeśli, dopiero co budowaliśmy kernel (jak wyżej), to możemy użyć szybszej metody, w katalogu ~/rpm/packages:

./repackage.sh kernel-vanilla/kernel-vanilla.spec --with noarch

w przeciwnym wypadku:

./builder -bb kernel-vanilla -r HEAD --with noarch

Pakiety trafiły do katalogu ~/rpm/RPMS, więc instalujemy je Poldkiem z użyciem parametru -n home:

poldek -n home -i kernel-vanilla-module-build

Nvidia

Budujemy moduł nvidia, jako że budujemy alternatywny kernel musimy użyć parametru –alt_kernel

./builder -bb xorg-driver-video-nvidia -r DEVEL --alt_kernel vanilla

Teraz kolej na sterownik X.org:

./builder -bb xorg-driver-video-nvidia.spec -r DEVEL --without kernel

Madwifi

Poniżej przykład budowania sterownika WiFi dla kart z układem Atheros:

./builder -bb madwifi-ng -r HEAD --alt_kernel vanilla

Instalacja

Kiedy wszystkie pakiety są gotowe, możemy je zainstalować za pomocą parametru -n home, jak to zostało wcześniej opisane. Niestandardowe pakiety będą miały słowo vanilla w nazwie, przez co nie będą kolidować z zainstalowanymi już paczkami. Co więcej, pliki instalowane do /boot (vmlinuz, initrd, itd.) też będą miały alternatywną nazwę, dlatego należy dokonać poprawek w konfiguracji bootloadera. Jeśli używamy lilo to dodatkowo instalujemy je na nowo i możemy restartować system.

Uwagi

  • zainstalowane pakiety *-module-build, *-headers itd. nie będą już nam potrzebne i możemy je odinstalować, zbudowane RPM-y jednak warto zachować.
  • więcej o budowaniu pakietów w podręczniku dewelopera.
  • budowanie pakietów z DEVEL lub HEAD nie zawsze się uda, możemy jednak użyć wersji oznaczonych tagami zaczynającymi się od auto np.: auto-th-kernel-2_6_25_9-4 w przypadku kernel.spec. Dzięki temu będziemy mieli pewność, że w repo SOURCES będą dostępne wszystkie wymagane łatki.
pl/przewodniki/budowanie-niestandardowego-kernela.txt · ostatnio zmienione: 2009/08/08 22:50 przez qwiat
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light