Upgrade Kernela

Instalacja źródeł

Na początek instalujemy źródła nowego kernela


# emerge -av vanilla-sources

zamieniamy vanilla-sources na kernel który chcemy upgrade’ować. Następnie wykonujemy dowiązanie symboliczne do nowych źródeł


# ln -sfn <nowe-źródła-kernela> linux

zamieniamy <źródła-kernela> na nasze źródła.

Konfiguracja

Kopiujemy stary .config do linux/.config


# cp <stare-źródła>/.config linux/.config

jeżeli mamy /proc/config wbudowany w kernel możemy użyć jego konfiguracji


# cat /proc/config > linux/.config
lub
# gzcat /proc/config.gz > linux/.config

Teraz możemy skonfigurować nasz nowy kernel używając opcji ze starego lub aktualnego kernela.


# cd linux
# make oldconfig

make oldconfig konfiguruje kernel zgodnie z zawartością pliku .config. Jeżeli ma ustawić nową opcje (która nie jest zdefiniowana w pliku .config) zostaniemy zapytani co zrobić. Aby uzyskać pomoc należy nacisnąć “?”. Kiedy make oldconfig zakończy swoją prace możemy skompilować nasz kernel lub wyedytować plik .config. Trzeba zauważyć, że make oldconfig powinien zostać użyty tylko w przypadku upgrade’u jednego wydania Gentoo do innego np. z gentoo-sources-2.6.9-r1 do gentoo-sources-2.6.9-r2. Używanie make oldconfig na oficjalnych wydaniach kerneli może być niebezpieczne.

Kompilacja i instalacja

Podczas kompilacji i instalacji naszego kernela postępujemy zgodnie z HOWTO Ręczna Kompilacja Kernela. Jeżeli obraz kernela został zapisany pod inną nazwą należy upewnić się czy konfiguracja bootloadera jest właściwa.

Sterowniki

Musimy pamiętać, że po rekompilacji kernela niektóre sterowniki wymagają przeinstalowania (na przykład nvidia-kernel czy alsa-driver). Jeżeli po zrestartowaniu komputera na naszym nowym kernelu zobaczymy błędy związane z nvidią lub alsą, będziemy musieli je przeinstalować.

module-rebuild


# emerge -av module-rebuild
# module-rebuild

Rozwiązanie to jest oczywiste. Program będzie szukać modułów, które potrzebują przebudowy (co jest przyczyną powolnego działania za pierwszym razem). Można również dodać lub usunąć moduły. Na początek powinniśmy zapełnić “listę”:


# module-rebuild populate

Po każdej rekompilacji kernela będziemy musieli wpisać:


# module-rebuild rebuild

Instalacja sterowników


# grep -l '^dir /lib/modules' /var/db/pkg/*/*/CONTENTS | \
sed -e ’s/\/var\/db\/pkg\//=/’ -e ’s/\/CONTENTS//’ -e \
’s/^=.*\///’ -e ’s/-[0-9].*$//’ | sort -u | xargs emerge -1

Wyjaśnenie skryptu:


grep - wyszukuje wszystkie programy zainstalowane w /lib/modules
sed - filtruje informacje z otrzymanej linijki
sort -u - ignoruje duplikaty, (na przykład w przypadku nvidia drivers)
xargs - konwertuje linie do postaci argumentów
emerge -1 - emerge, bez dodawania do drzewa world. Warto użyć -p przed instalacją (-a nie zadziała z xargs).

Upgrade kernela - wiki.gentoo.pl

3 Responses to “Upgrade Kernela”


  1. Gravatar Icon 1 Łukasz Horodecki Apr 5th, 2006 at 5:05 pm

    Damn, ale roboty. Nie lepiej użyć “smart install kernel-cośtam”? :D

  2. Gravatar Icon 2 rasheed Apr 5th, 2006 at 5:54 pm

    3 minuty ;-)

  3. Gravatar Icon 3 RedHand Apr 5th, 2006 at 7:27 pm

    Do tej pory robiłem dokładnie tak samo (albo bardzo podobnie), z jednym wyjątkiem. Nie używałem module-rebuild. Zawsze rebuildowałem ręcznie ;-) Nawet nie wiedziałem, że istnieje takie cudo. Teraz przynajmniej nie będę się musiał zastanawiać co mam rebuildnąć ;-)

Leave a Reply