Info: To nie jest informacja jak kompilować kernel – to raczej informacja jak go nie kompilować 🙂
Największym problemem okazała się dla mnie kompilacja kernela 2.6.30. Początkowo podczas instalacji użyłem narzędzia genkernel ponieważ było wygodne. Jednak tak stworzone jądro trochę długo się uruchamiało (około 1 minuty 15 sek. od GRUBA do ekranu logowania). Wszystko dlatego, że na początku uruchamiany był obraz initrd i on ładował do dużo modułów których nawet nie potrzebowałem! Pomijam już fakt, że kompilacja takiego jądra z milionem modułów trwała około 20 minut.
Postanowiłem więc wziąć sprawy w swoje ręce i zmodyfikować nieco ustawienia jądra tak aby nie musiało korzystać z initrd. Dodatkowo chciałem aby jądro obsługiwało system plików ext4, abym mógł pracować na partycji gdzie zainstalowałem Ubuntu (bo ono też jeszcze jest 😉 ).
Zatem poszedłem do źródeł gentoo-sources które były już na dysku od czasu gdy instalowałem system:
cd /usr/src/linux
I rozpocząłem konfigurowanie:
make menuconfig
Początkowo ogrom opcji jakie się cisną do oczu jest porażający. Po kilku nieudanych kompilacjach (tzn takich, że jądro po uruchomieniu dawało KERNEL PANIC). Postanowiłem zacząć całkowicie od nowa. W katalogu /usr/src/linux wydałem polecenie:
rm .config
Co oznacza, że usunąłem starą konfigurację (jeszcze wygenerowaną przez genkernel – stąd pewnie były problemy). Po tej operacji program do konfiguracji jądra wczytał podstawowe ustawienia, które są bardzo minimalistyczne. Bałem się czy takie jądro w ogóle poradzi sobie w życiu codziennym, ale postanowiłem spróbować.
Jedyne rzeczy jakie zmieniłem to dodałem obsługę ext4 oraz zaznaczyłem kilka opcji graficznych dla kart NVIDIA i mojej karty bezprzewodowej.
Kompilacja nowego jądra trwała mniej niż 2 minuty. Wygenerowanych zostało zaledwie 12 modułów, z których łatwo było wybrać te interesujące 🙂
Jak się okazało jądro poradziło sobie i uruchomiło się w około 30 sekund (gdyby nie konfigurować sieci to nawet kilka sekund szybciej). Widać zatem, że w prosty sposób można znacznie przyspieszyć ładowanie systemu operacyjnego.
Teraz jeśli zauważę, że potrzebuję dodatkowej opcji w jądrze to dodanie jej zajmuje tylko kilka minut. Ma to ogromne zalety w stosunku do tego, ze w Ubuntu właściwie wszystko działo się samo i nawet nie wiedziałem skąd, po co i dlaczego 🙂 A ja lubię wiedzieć dlaczego.
Wniosek
Jeśli kompilowałeś jądro przy użyciu genkernela lub w jakiś inny automatyczny sposób to najlepiej usuń tę konfigurację i zacznij od nowa.
W internecie jest bardzo wiele przewodników dotyczących konfiguracji i kompilacji jądra Linux. TA STRONA jest jednym z przykładów. Najważniejszą rzeczą podczas szukania informacji jest wiedza o tym, że informacje te mogą być przestarzałe – dlatego należy ostrożnie podchodzić do znalezionych informacji.