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.
Oprócz oczywistych pakietów takich jak gcc i okolic, będziemy potrzebować kompletnego środowiska do budowania pakietów.
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.
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
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
Poniżej przykład budowania sterownika WiFi dla kart z układem Atheros:
./builder -bb madwifi-ng -r HEAD --alt_kernel vanilla
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.
*-module-build, *-headers itd. nie będą już nam potrzebne i możemy je odinstalować, zbudowane RPM-y jednak warto zachować.