Opis jądra Linux-a, jego instalacji itp.: Łatanie jądra (patchowanie).
Następna strona
Poprzednia strona
Spis treści
5. Łatanie jądra (patchowanie).
5.1 Zakładanie łaty.
Pakiety, które pozwalają na odnowienie jądra to łaty. Na przykład:
jeśli masz wersję 1.1.45 i znajdziesz plik o nazwie patch46.gz
to znaczy, że możesz odnowić swoje jądro do wersji 1.1.46. Możesz
zrobić kopię źródeł, które masz (make clean a potem
cd /usr/src; tar zcvf old-kernel.tar.gz linux)
Tak więc kontynuując powyższy przykład załóżmy, że masz plik
patch46.gz w katalogu /usr/src. Bedąc w katalogu
/usr/src wydaj polecenie zcat pacth46.gz | patch -p0
albo patch -p0 < patch46 jeśli łata nie jest
skompresowana. Zobaczysz teraz trochę ścieżek i nazw plików
oraz komunikatów przelatujących przez ekran, o tym co się udało a co
nie. Wszystko to przelatuje zbyt szybko, żeby nadążyć z
czytaniem, także właściwie nie wiesz czy się udało czy nie. Możesz
użyć parametru -s do polecenia patch, aby
poinformować je, żeby wyświetlało tylko komunikaty o błędach. Aby
zobaczyć czy coś poszło nie tak, poszukaj plików z rozszerzeniem
.rej w katalogu /usr/src/linux. Niektóre wersje
patch (starsze wersje, które mogły być skompilowane na gorszym
systemie plików) zostawiają błędy w plikach z rozszerzeniem
#. Możesz użyć polecenia find, aby znaleźć
te pliki:
cd /usr/src/linux; find ./ -name '*.rej' -print
Polecenie to wyświetli wszystkie pliki z rozszerzeniem rej
znajdujące się w bieżącym katalogu i jego podkatalogach.
Jeśli wszystko poszło dobrze, wydaj teraz po kolei polecenia
make clean, make config i make dep tak jak opisano w
sekcjach 3 i 4.
Do polecenia patch jest trochę opcji. Jak już wspomniałem,
patch -s spowoduje wyświetlenie na ekran tylko wiadomości
o błędach. Jeśli trzymasz źródła w innym katalogu niż
/usr/src/linux, polecenie patch -p1 wydane w tym
katalogu, gdzie trzymasz źródła zrobi wszystko bez błędów. Inne
opcje polcenia patch są dobrze opisane w podręczniku "man".
5.2 Jeśli coś pójdzie nie tak.
(Uwaga: ta sekcja odnosi się w głównej mierze do starszych wersji
jądra.)
Najczęstszym problemem było to, że kiedy polecenie patch
modyfikowało plik config.in nie wyglądał on tak jak
powinien, bo zmodyfikowałeś go, aby pasował do twojego komputera.
Zostało to już poprawione, ale w starszych wersjach błąd ten
pozostał. Aby to naprawić, przeczytaj plik config.in.rej
i zobacz co pozostało z oryginalnej łaty. Zmiany są zwykle
zaznaczane znakami + i - na początku linii. Spójrz na linie
otaczające tę zaznaczoną i przypomnij sobie, czy były one
ustawione na tak, czy na nie. Teraz w pliku config.in
zmień "y" na "n" i "n" na "y" tam gdzie trzeba. Wydaj polecenie
patch -p0 < config.in.rej a jeśli poinformuje cię, że
się powiodło, wtedy możesz kontynuować konfigurację i kompilację.
Plik config.in.rej pozostanie, ale możesz go skasować.
Jeśli odkryjesz dalsze problemy, mogłeś zainstalować jakąś łatę
nie w kolejności. Jeśli na ekranie pojawi się taka wiadomość:
previously applied patch detected: Assume -R? oznacza to,
że przypuszczalnie próbujesz nałożyć łatę o wersji mniejszej niż
źródła twojego jądra. Jeśli odpowiesz "y", polecenie patch
spróbuje zdegradować twoją wersję, i najprzypuszcalnie się to nie
powiedzie, przez co będziesz musiał zdobyć całkiem nowe źródła.
(co w sumie wcale nie jest takim złym pomysłem).
Aby odinstalować jakąś łatę użyj patch -R na oryginalnej.
Jak już się wszystko tak pomiesza, że nie będziesz mógł dojść do
ładu, to najlepszym sposobem jest zdobyć nowe źródła jądra i zacząć
od nowa.
5.3 Pozbywanie się plików ".orig".
Po zaledwie kilku łatach pliki .orig zaczynają niebezpiecznie
rosnąć. Na przykład: usunięcie plików .orig z wersji 1.1.51, która
była ostatnio czyszczona w wersji 1.1.48 spowodowało zwolnienie
ponad 500 kB dysku.
find . -name '*.orig' -exec rm -f {} ';'
Polecenie to spowoduje usunięcie wszystkich plików .orig z
bieżącego katalogu i jego podkatalogów.
Wersje patch, które używają plików .# zamiast plików .rej,
używają tyldy (~) zamiast plików .orig.
Są lepsze sposoby pozbycia się plików .orig, które zależą od
polecenia GNU xargs:
find . -name '*.orig' | xargs rm
lub metoda całkiem bezpieczna ale trochę "głośna" (dużo
komunikatówna ekranie):
find . -name '*.orig' -print0 | xargs --null rm --
5.4 Inne łaty.
Są jeszcze inne łaty (tzw. niestandardowe), niż te które
dystrybuuje Linus. Jeśli ich użyjesz łaty Linusa mogą nie działać
i będziesz musiał je albo odinstalować, dopasować źródła albo łatę,
zainstalować nowe źródła, albo jakaś kombinacja tego. Może to być
trochę frustrujące, więc jeśli nie chcesz grzebać w źródłach (z
możliwością narobienia niezłego bajzlu), odinstaluj niestandardowe
wersje łat zanim zainstalujesz łatę Linusa, albo po prostu
zainstaluj nowe źródła. Wtedy możesz zobaczyć czy łaty
niestandardowe wciąż działają. Jeśli nie to albo utknąłeś ze
starym jądrem i będziesz próbował zmusić jakoś źródło albo łatę,
żeby zaczęła działać, albo będziesz czekał (pewnie błagał) o nową
łatę.
Jak pospolite są te niestandardowe łaty?
Przypuszczalnie o nich usłyszysz. Ja używałem łaty "noblink" na
moich wirtualnych konsolach, bo nienawidzę mrugającego kursora. Ta
łata jest (a przynajmniej była) często odnawiana dla nowszych
wersji jądra. Z większością nowych sterowników jako ładowalne
moduły, chociaż częstotliwość niestandardowych łat znacznie spada.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
Kernel HOWTO pl 12 (2)Kernel HOWTO pl 9 (2)Kernel HOWTO pl 6 (2)Kernel HOWTO pl 4 (2)Kernel HOWTO pl (2)Kernel HOWTO pl 7 (2)Kernel HOWTO pl 2 (2)Kernel HOWTO plKernel HOWTO pl 11 (2)Kernel HOWTO pl 1 (2)Kernel HOWTO pl 10 (2)Kernel HOWTO pl 3 (2)Kernel HOWTO pl (3)Kernel HOWTO pl 8 (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)kernel howto 3 clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvq clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvqcdrom howto pl 1więcej podobnych podstron