64
marzec 2007
Tipsy
Łatanie pingwina – patchsety dla kernela
65
www.lpmagazine.org
Tipsy
Łatanie pingwina – patchsety dla kernela
Łatanie pingwina
– patchsety dla kernela
Wojciech Treter
N
igdy nie jest tak dobrze, że-
by nie mogło być lepiej. Dla-
tego dla linuksowego kernela
dostępna jest duża ilość róż-
norodnych poprawek i dodatków różnego
pochodzenia. Łaty (patche), bo o nich mowa,
dzielą się na oficjalne i nieoficjalne. Pierwsze
to te dostępne na www.kernel.org. Zostały one
zaakceptowane przez twórców jądra i po-
zwalają aktualizować starszą wersję kernela
do nowszej. Druga kategoria to łaty tworzone
przez użytkowników, zwykle wprowadzają-
ce nowe funkcje. Zbiory takich łat to pacthse-
ty. Zwykle są to większe zestawy mające na
celu wyprofilowanie kernela do konkretnych
zastosowań.
Oficjalne źródła...www.kernel.org
Czyli tzw. vanilla-sources. Są to stabilne wy-
dania Linuksa produkcji Linusa Torvaldsa
i zespołu deweloperów. Nie zawierają żad-
nych wymyślnych łat, ale są najbardziej wol-
ne od błędów, z uwagi na szeroką społecz-
ność użytkowników. Na stronie można się
także natknąć na wersję -mm. Jest to oficjal-
ny kernel z poprawkami Andrew Mortona,
które są nieco bardziej eksperymentalne niż
oficjalna seria.
CK / LCK
Patchset autorstwa australijskiego lekarza
Cona Kolivasa. Został zaprojektowany w ce-
lu zwiększenia wydajności systemu poprzez
przebudowę schedulera (z ang. planista – al-
gorytm dzielący czas procesora między za-
dania) i zarządzania pamięcią (m.in. prze-
rzuca dane ze swapu do ram'u przy ma-
łym jego użyciu). Według opinii użytkow-
ników, daje wymierne efekty, chociaż jego
części włączono już do głównej gałęzi 2.6.
Łaty przeznaczone są na komputer desk-
topowy, choć dostępna jest też wersja ser-
werowa, oraz gotowy kernel serii 2.6 dla
Fedory. Wersja dla jąder 2.4 jest rozwija-
na przez Plum Loco Software jako lck. Na
stronach projektów dostępne są szczegóły,
oraz porządne FAQ, Howto i lista mailin-
gowa.
http://members.optusnet.com.au/ckolivas/
kernel/ - ("ck")
http://www.plumlocosoft.com/
kernel/ - ("lck")
NITRO
Nitro-sources to patchset zapewniający więk-
szą elastyczność i zwiększający wydajność.
Zwykle daje wyraźne efekty, ale autor za-
znacza, iż bazuje na eksperymentalnych źró-
dłach, co może prowadzić do niestabilności
systemu. Zawiera m.in. poprawki Cona Ko-
livasa, fbsplash/gensplash (odpowiedniki boot-
pslasha, zapewniające graficzny ekran ładowa-
nia systemu) oraz wsparcie systemów plików:
rozwijanego ciągle Resier4, UnionFS, SSHFS
oraz SquashFS. Dostępne jest także Win4Lin
– środowisko pozwalające na uruchomienie
Windowsa 9x pod Linuksem.
www.stud.uni-karlsruhe.de/~uyavl/public/
nitro-sources/
BEYOND
Patchset Beyond zawiera elementy ck-sources,
nitro-sources oraz łat Gentoo. W zamyśle ma
dostarczać popularne, wypróbowane funk-
cje i poprawki, które nie weszły jeszcze do
oficjalnych źródeł. Oprócz w/w zestawów,
są to:
• Linux Processor Hardware Control (Linux-
PHC) – łata dostarczająca programowe
możliwości sterowania napięciem rdze-
nia procesora. Przydatne zwłaszcza na
laptopach, pozwala zredukować wydzie-
lane ciepło i zużycie energii.
• Suspend2 - mówiąc prosto, odpowiednik
znanej z Windows hibernacji. Zapisuje za-
wartość pamięci na dysk twardy i wyłą-
cza komputer. Przy ponownym włącze-
niu przywracany jest poprzedni stan i mo-
żna kontynuować pracę, bez ponownego
otwierania dokumentów czy włączania
programów. Całość jest o wiele szybsza
niż tradycyjne włączanie/wyłączanie.
http://iphitus.loudas.com/beyond.html
64
marzec 2007
Tipsy
Łatanie pingwina – patchsety dla kernela
65
www.lpmagazine.org
Tipsy
Łatanie pingwina – patchsety dla kernela
GRSECURITY
Głównym zastosowaniem łaty jest zwiększe-
nie bezpieczeństwa systemu, m.in. poprzez:
• tworzenie list kontroli dostępu opartych
o role (RBAC - Role-Based Access Con-
trol)
• nałożenie restrykcji na środowisko chro-
ot, uniemożliwiających wyrwanie się
z niego (nawet rootowi)
• rozbudowane logowanie, ułatwiające au-
dyt (możliwość zapisu adresu IP osoby
dla określonych zdarzeń)
• losowość stosu TCP (numerów sekwen-
cyjnych, portów źródłowych, IP ID)
• działania zapobiegające atakom siłowym
(bruteforce)
Dzięki wykorzystaniu osiągnięć projektu PAX,
umożliwia także:
• oznaczenie stosu jako niewykonywalne-
go (ochrona przed wykonywaniem kodu
w zapisywalnych obszarach pamięci)
• nałożenie ograniczeń dla mprotect, loso-
wości dla mmap() oraz stosu i sterty
• ochronę przed modyfikacją jądra przez
/dev/mem, /dev/kmem i /dev/port.
www.grsecurity.net
PEPEK
Rodzima produkcja autorstwa Pawła Sna-
j'a Pawilcza, przeznaczona głównie do za-
stosowań serwerowych. Zawiera oficjalne
poprawki oraz patchsety QoS and Netfilter
(stosowany dla routerów), ck w wersji ser-
werowej, grsecurity, a także obsługę Rei-
ser4.
http://snaj.ath.cx/26x/index.html
NO
Zestaw bazujący na patchsetach -love i -mm,
z założenia eksperymentalny, będący konty-
nuacją zarzuconego projekt -love. Zawiera
rozmaite funkcjonalności zapożyczone z in-
nych źródeł, oraz te najbardziej popularne
wśród użytkowników, wymieszane w różnej
konfiguracji. Podobnie jak w przypadku -ni-
tro jest to zestaw tylko dla linuksowych fan-
(atyk)ów. Jego autorzy nie gwarantują stabil-
ności, wręcz przeciwnie.
http://no.oldos.org/files/
PatchSet24
Coś dla zwolenników serii 2.4. Zastosowanie
wyraźnie sieciowe. Zestaw składa się z trzech
części, do nałożenia na kernel, iptables oraz
iproute2. Dodatki, jakie wnosi, to przede
wszystkim grsecurity, netfilter Layer7 (do ogra-
niczania ruchu sieci P2P), ESFQ (podział łą-
cza), IMQ-nat, patch-o-matic-ng.
www.linux.internetdsl.pl
Szczegóły techniczne
Nieraz po załataniu jądra, szczególnie nieofi-
cjalnymi poprawkami może ono nie działać
poprawnie, lub nawet nie powiedzie się jego
kompilacja. Łatać jądro należy jedynie wtedy,
gdy jest pewne jego działanie i najlepiej na
osobnej kopii źródeł jądra.
Obojętnie jaki patchset zdecydujemy się
użyć, należy najpierw zaopatrzyć się w ade-
kwatne źródła vanilla. Powinien to być ker-
nel o numerze wersji 2.*.*, tzn. bez czwartego
numeru, oznaczającego poprawkę (tzw. pat-
cha frajera), gdyż zwykle patchsety już go za-
wierają i może to powodować problemy przy
nakładaniu.
Po rozpakowaniu kernela we właściwe
miejsce (standardowo katalog w /usr/src/ ), pat-
chset (zwykle plik(i) *.diff lub *.patch) nakła-
da się wydając jako root polecenie w katalo-
gu ze źródłami:
patch -p1 < /ścieżka/do/pliku/patcha
Pomocne tutaj mogą się okazać opcje polece-
nia patch:
• -N – powoduje ignorowanie przez pro-
gram miejsc, gdzie łata koliduje z już na-
łożoną.
• -f – pozwala „przepchnąć” łatę nawet je-
śli po drodze wystąpią błędy.
• --dry-run – z tym przełącznikiem da się
przeprowadzić łatanie „na sucho”, tzn.
łata nie zostanie rzeczywiście nałożona,
a jedynie program wyświetli wyniki pat-
chowania.
• -R - nakłada łatę odwrotnie, czyli pozwa-
la zdjąć uprzednio nałożoną i przywró-
cić wersję źródeł sprzed patchowania.
Jeśli wszystko przebiegnie bez komunikatów
o problemach, można przystąpić do standar-
dowej konfiguracji i kompilacji.
Coś nie tak...
Błędy w zasadzie nie powinny się pojawić, je-
śli źródła i patchset są właściwej wersji. Moż-
liwe jest jednak, że łata została źle napisana
lub nie jest prawidłowa z powodu nałożonej
przed nią łaty. Mogą wtedy wystąpić poniż-
sze błędy:
• Hunk #3 FAILED at 234 - oznacza, że
trzeciej łaty z zestawu nie udało się nało-
żyć, błąd w linii 234.
• Hunk #4 succeeded at 457 (offset 10 lines)
– czwarta została poprawnie nałożona,
ale miejsce, gdzie powinna się znaleźć,
różni się o 10 linii w pliku docelowym.
• 1 out of 11 hunks FAILED -- saving rejects
to file usr/src/linux/nv-linux.h.rej – komuni-
kat ten to podsumowanie nakładania łat
oznacza, że nie powidło się nałożenie jed-
nej łaty z zestawu jedenastu łat. Odrzuco-
na łata została zapisana w podanym pli-
ku, (w tym przypadku usr/src/linux/nv-li-
nux.h.rej).
W przypadku takich komplikacji pozosta-
je jeszcze ręczne modyfikowanie pliku pat-
cha.
Podsumowując, decyzja o użyciu spatcho-
wanego kernela musi być przemyślana, zwła-
szcza w przypadku źródeł z założenia niesta-
bilnych. Jednakże użycie jakiegokolwiek patch-
setu powinno z założenia przynieść więcej ko-
rzyści niż strat.
Autor nie jest póki co zawodowym oblaty-
waczem linuksowych maszyn, ale posiada
kilkuletnie doświadczenie i dorobek w po-
staci kilku udanych kompilacji. Za sprawą
nagłego olśnienia porzucił systemy Micro-
softu na rzecz Mandrivy, potem Slackwa-
re’a, którego jest obecnie fan(atyki)em.
Momentami próbuje szczęścia w różnych
dziedzinach - od programowania, po - jak
w tej chwili - produkcję artykułów o najlep-
szym z OS’ów.
Kontakt z autorem: juzefwt@gmail.com
O autorze