background image

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

background image

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