Kompilowanie jądra
Z ThinkPad-Wiki
Tutaj dowiesz się, jak skompilować własne jądro, wprowadzić poprawki (patche) i odblokować funkcje systemowe niskiego poziomu w Linuksie.
Spis treści |
Co daje samodzielnie skompilowane jądro?
- Przejście z jądra 2.6.24 na 2.6.25 ma sens, ponieważ liczba przerwań rescheduling i timer jest wreszcie wyraźnie mniejsza, dzięki czemu jądro przy niewielkim obciążeniu zużywa około 0,75 W ±0,25 W mniej energii. T61 14,1" Wide + Nvidia Quadro 140 (z najnowszym sterownikiem Nvidia) pobiera około 11,5 W z włączonym Wi-Fi, przy najniższej jasności i wyładowanych modułach USB. Wcześniej było to około 12,5 W (wersja 64-bitowa Ubuntu Hardy).
- Z jądrem 2.6.26 dioda LED WLAN wreszcie działa.
- Jądro można „spatchować”, na przykład patchem PHC, aby pracować z niższymi wartościami napięcia (undervolting), albo włączyć ochronę dysku twardego (Hdaps). Wymaga to ponownej kompilacji.
- Nowa wersja PowerTOP 1.10 wymaga jądra 2.6.25 lub nowszego
- Skompilowanie sterowników USB w jądrze zapewnia działające USB autosuspend, a tym samym oszczędza 1–2 W
Czy warto podjąć ten wysiłek, trzeba zdecydować samemu. Nakład pracy to w każdym razie edycja konfiguracji jądra (możliwa w interfejsie graficznym, a jeśli się znasz – lub podążasz za tą instrukcją – zajmuje to 5 minut) oraz około godziny kompilacji (w zależności od mocy komputera i wyboru modułów). Następnie trzeba ręcznie zainstalować sterownik karty graficznej (np. sterownik Nvidia; pomocny może być Envy lub Kernelcheck). Dodatkowo trzeba później dostosować dowiązanie symboliczne do katalogu z firmware (np. dla firmware WLAN Intel3945).
Wadą może być to, że jądra „bleeding edge” są też mniej dopracowane. Warto więc wcześniej sprawdzić, jakie problemy mogą wystąpić z danym jądrem i które błędy nie zostały jeszcze rozwiązane.
Kompilacja ręczna czy za pomocą skryptu?
Zasadniczo istnieją dwie drogi do nowego jądra: kompilacja ręczna lub zautomatyzowana za pomocą skryptu, np. Kernelcheck. Wynik jest ten sam. Niektórzy eksperci wolą wariant ręczny, bo widzą dokładniej, co się dzieje. Kernelcheck jednak wykonuje swoją pracę niezawodnie i oszczędza pisania. A dla początkujących znacznie ułatwia kompilowanie jądra.
Konfiguracja jądra
Największą przeszkodą jest konfiguracja nowego jądra. Ponad 100 opcji przytłacza. Nie trzeba jednak przechodzić przez wszystkie – można przenieść dotychczasową konfigurację do nowego jądra. Robi się to automatycznie poleceniem make oldconfig, a Kernelcheck robi to samodzielnie. Bez dalszej ręcznej edycji sterowniki Wi-Fi i dźwięku nie zostaną jednak aktywowane. Te opcje trzeba więc zaznaczyć ręcznie w konfiguracji, zob. zrzuty ekranu.
Ręczna kompilacja jądra
Przebieg w skrócie na przykładzie jądra 2.6.25.7:
sudo apt-get install build-essential kernel-package xmlto libqt3-mt-dev #notwendige Pakete installieren cd /usr/src #ins Verzeichnis der Kernelsourcen wechseln wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.7.tar.bz2 #Herunterladen des neuen Kernels sudo -s #nicht der Königsweg, mich würden aber die 12 mal "sudo" die jetzt notwendig sind, nerven tar xjf linux-2.6.25.7.tar.bz2 #entpacken rm linux #evtl vorhandenes Verzeichnis löschen ln -s linux-2.6.25.7 linux #Softlink erstellen cd linu x #Verzeichnis wechseln cp /boot/config_$(uname -r) .config #aktuelle Kernelconfig zum neuen Kernel kopieren #patch -p1 -l < /Speicherort/des/Patches #evtl patchen, z.B. libata und hdaps make oldconfig #alte Config an neuen Kernel anpassen make xconfig #Config editieren make-kpkg clean #aufräumen make-kpkg --initrd --revision=meineeigeneVersion binary #Kaffee oder Tee trinken gehen #ln -s /lib/firmware/2.6.24-19-generic /lib/firmware/2.6.25.7 #evtl noch fehlenden Softlink setzen exit
Kompilacja jądra za pomocą Kernelcheck
nieco łatwiej można to zrobić za pomocą Kernelcheck. Niezbędne kroki:
- Pobierz Kernelcheck jako .deb, zainstaluj i uruchom
- Pozwól sprawdzić wersję jądra („get Kernel Information”) i w razie potrzeby wybierz konkretną (zwykle nie jest potrzebna żadna zmiana)
- w opcjach patchy wybierz „Custom Patch”, jeśli chcesz dodać patche ręcznie (zalecane)
- wybierz „Build new Kernel” (z menu)
- pojawi się terminal, w którym samodzielnie dodajesz patche (zob. Patche poniżej)
- es wird eine Kernel-Konfiguration aus der alten generiert und dann grafisch angezeigt (s. Abb.). Hier muss man die gewünschten Änderungen wählen:
- do włączenia: dźwięk (ALSA, Intel HD i AC97) oraz WLAN (np. iwl3945), zob. ilustracje
- Zapisz konfigurację i zamknij okno. Pozwól przejść procesowi kompilacji (trwa ok. 1 godz. na procesorze Core Duo 1,6 GHz), a następnie uruchom ponownie komputer (Kernelcheck kompiluje i tworzy wpisy rozruchowe, wszystko automatycznie).
Czynności końcowe
Utwórz dowiązanie symboliczne do katalogu firmware wcześniejszego jądra:
sudo ln -s /lib/firmware/2.6.24-19-generic/ /lib/firmware/2.6.26.1-ultimate
Łatki jądra
- Ochrona dysku twardego: zastosuj łatkę HDAPS dla jądra 2.6.26 według instrukcji thinkwiki. Nie zapomnij przy tym wcześniej zintegrować łatki libata, w przeciwnym razie system może się zawiesić
- Undervolting: zastosuj patch PHC według tej instrukcji
- później można obniżyć napięcia rdzenia według tej instrukcji
- bezpośredni link do PHCTool – GUI dla patcha linux-phc. Link
Powertop 1.10
new in this release:
- USB suspend statistics
- support for iwl4965 power saving
- Powertop now reports which C-states are supported by CPU/BIOS (requires 2.6.25 or newer kernel).
- Updated translations: ja, pt_BR, hu, id, zh
- Website: As of release 1.9, the PowerTOP website is part of the higher level lesswatts.org website.
Dla tej wersji nie ma jeszcze pakietów w repozytorium. Powertop trzeba więc skompilować samodzielnie ze źródeł. Służą do tego następujące 5 poleceń (rozpakowanie, przejście do właściwego katalogu, kompilacja, instalacja, uruchomienie):
tar -zxf powertop-1.9.tar.gz cd powertop-1.9 make make install powertop
Doświadczenia użytkowników z wersjami jądra
- Kernel 2.6.26-Ultimate@x61t: Działa stabilnie. Pobór mocy nieco niższy niż w 2.6.24. USB autosuspend wreszcie działa. Dioda WLAN również. I Powertop 1.10. Niestety wznawianie po Suspend to RAM nie działa - status: niewyjaśniony --pibach 15:15, 20 lip 2008 (CEST)
- Kernel 2.6.26.1-Ultimate@x61t: Działa stabilnie, wreszcie także z Suspend to RAM. --pibach 20:55, 8 sie 2008 (CEST)
Usuwanie starych wersji jądra
Niepotrzebne już wersje jądra można wygodnie usunąć za pomocą menedżera pakietów (np. Synaptic).
Linki
zob. także ten wątek i ten na forum ThinkPad

