Jądrowa rewolucja

Nowa wersja jądra Linuksa otwiera przed użytkownikami nowe możliwości, które dotąd były dostępne jedynie w kosztownych systemach komercyjnych.

Nowa wersja jądra Linuksa otwiera przed użytkownikami nowe możliwości, które dotąd były dostępne jedynie w kosztownych systemach komercyjnych.

Przez cały rok 2000 wszyscy użytkownicy Linuksa oczekiwali na nową wersję jądra Linuksa, oznaczoną 2.4.x. Ma ona przynieść głębokie zmiany w obsłudze sprzętu, zarządzaniu wieloma procesorami, jak również nowe, zaawansowane usługi systemu. Gdy powstawał ten tekst, nie była jeszcze dostępna wersja "stabilna" nowej wersji jądra. Stabilna, tzn. taka, która jest na tyle sprawdzona, aby można było ją wdrożyć w systemach produkcyjnych. Nie oznacza to, iż wersje testowe są niepełnowartościowe, choć ryzyko ich używania jest znaczące. Zmian jest wiele, a większość z nich nie jest zauważalna dla zwykłego użytkownika. Oto główne nowości nowej wersji "serca" Linuksa:

LVM

Dodano do standardowego jądra podsystem LVM (Logical Volume Manager) do zarządzania dyskami i partycjami na wyższym poziomie abstrakcji niż urządzenia fizyczne (patrz opis poniżej).

Więcej procesorów

Jądro 2.4.x może obsługiwać trzy nowe architektury sprzętowe: Intel IA64 (Itanium/Mer-ced), IBM S/390 oraz Hitachi SuperH (procesory Intel Itanium/Merced jeszcze nie pojawiły się w sprzedaży). Wprowadzono obsługę rejestrów MTRR (Memory Type Range Registers) dla procesorów AMD K7 i Cyrix. Linux potrafi również obsłużyć 16 procesorów w jednej maszynie. Jądro 2.4.x jest całkowicie 64-bitowe, usunięto także ograniczenie 4 GB w przypadku pamięci RAM i wielkości plików (do tej pory było to 2 GB).

Lepsza obsługa sprzętu

Jądro 2.4.x obsługuje standardowo dyski ATA66. Jej brak był uciążliwy w wersji 2.2.x i zmuszał do włączania dysków w trybie kompatybilności ATA. Poprawiono również obsługę SCSI, wprowadzając wiele nowych sterowników, oraz dodano obsługę złączy FireWire. FireWire to szybki port, służący do przyłączania urządzeń zewnętrznych, na tyle szybki, aby przyjmować pełny sygnał Composite Video w czasie rzeczywistym albo by przyłączać dyski twarde. Najczęściej FireWire jest używany do podłączania cyfrowych kamer wideo. Jest najbardziej popularny w komputerach Macintosh (każdy Mac wyprodukowany po 1998 r. ma wbudowane takie łącze). W przypadku komputerów PC FireWire trzeba dokupić. Ciekawostką jest to, że nowa wersja jądra może samodzielnie wykrywać standardowe karty rozszerzeń ISA plug and play oraz przydzielać numery przerwań (IRQ) i kanałów DMA. Również urządzenia USB powinny być obsługiwane znacznie lepiej niż w poprzednich wersjach.

DEVFS

To nowy (DevFS - device filesystem) system nazewnictwa i zarządzania plikami urządzeń. Wszystkie urządzenia są w Linuksie widoczne dla systemu jako pliki specjalne, znajdujące się w katalogu "/dev". Niekiedy takie pliki trzeba było tworzyć ręcznie. DevFS wpisy te potrafi dodawać dynamicznie. Zmienił się również sposób nazewnictwa urządzeń, ale dostęp do starych nazw został zachowany.

Nowe systemy plików

Wersja 2.4.x obsługuje standardowo trzy nowe systemy plików: UDF (płyty DVD, dotychczas trzeba było samodzielnie kompilować jądro z odpowiednimi dodatkami) i XFS (EFS) używany w systemie IRIX.

Modernizacja obsługi sieci

W wersji jądra 2.4.x zaktualizowano większość ste-rowników kart sieciowych. Dodano również kilka nowych, szczególnie kart ATM. Nowa wersja jądra za-wiera przepisany na nowo system obsługi maskowania adresów IP (NAT) oraz obsługę funkcji firewalla, aczkolwiek możliwe jest przełączanie na tryb obsługi zgodny z narzędziami dla wersji 2.2.x. Przepisano cały stos TCP/IP, szczególną uwagę zwracając na szybkość i pewność działania. Niemniej warto pamiętać, że tak głębokie zmiany na pewno spowodują powstanie nowych dziur w zakresie bezpieczeństwa. Do ją-dra włączono również serwer WWW (kHTTPd - patrz dalej).

Wideo

Najważniejsza zmiana w obsłudze grafiki na poziomie jądra systemu to doda-nie mechanizmu Direct Rendering Manager (DRM), który pełni rolę pośrednika między aplikacjami a interfejsem wideo, dba o odpowiednie odblo-kowanie interfejsu i zapobiega zawieszaniu (a raczej "zamrażaniu") systemu, gdy kilka procesów próbuje manipulować pamięcią wideo w tym samym czasie.

Ulepszono również funkcjonalność często wykorzystywanego (np. przez większość instalatorów różnych dystrybucji Linuksa) bufora ramki (framebuffer), dodając sterowniki do nowych kart wideo. Framebuffer to obszar pamięci, który reprezentuje pamięć wideo. Zapis do niej powoduje natychmiastowe zmiany w wyświetlanym obrazie. Bufor ramki (wprowadzony już w jądrze 2.2.x) integruje w ten sposób tryb tekstowy i konsolę.

Inną istotną nowością jest dynamiczne określanie limitu równocześnie działających procesów/wątków. Jest to szczególnie ważne w przypadku maszyn wieloproce-sorowych, pozwalając na skalowanie w zależności od dostępnych zasobów. Poprzedni, sztywny limit (1024) znacząco zmniejszał wydajność przy dużej liczbie pracujących użytkowników. Obecnie limit jest ustalany dynamicznie, a jedynym ograniczeniem jest ilość dostępnej pamięci RAM. W dalszej części prezentujemy wybrane, najciekawsze możliwości nowej wersji jądra wraz z przykładami ich wykorzystania.

kHTTPd - zintegrowany serwer WWW

Ciekawą nowością jądra 2.4.x jest serwer WWW (kHTTPd), zawarty bezpośrednio w jądrze systemu (jako moduł). Działa on na poziomie jądra. Jest bardzo szybki: około czterech razy szybszy niż standardowy serwer Apache. Oczywiście kHTTPd jest bardzo prostym serwerem i nie zawiera dodatkowych rozszerzeń do obsługi aktywnych stron WWW. Może serwować jedynie statyczne pliki HTML, tak jak Apache lub inny serwer WWW, ale żądania uruchomienia programu CGI lub wykonania skryptu muszą być przekazywane do serwera działającego w przestrzeni użytkownika (np. do Apache).

Jak korzystać z kHTTPd?

kHTTPd może funkcjonować w dwóch konfiguracjach: jako główny lub pomocniczy serwer HTTP. Najlepsze zastosowanie kHTTPd to użycie go jako uzupełniającego podstawowego serwera WWW (zazwyczaj Apache), działającego w systemie. Apache pracuje wówczas na porcie 80, a kHTTPd uzupełnia go, działając na innym porcie TCP (np. 8080). Może zdarzyć się sytuacja odwrotna: kHTTPd - serwer główny, Apache - uzupełniający. Konfiguracja kHTTPd jest dokonywana poprzez manipulowanie na systemie plików "/proc". Należy ustawić trzy podstawowe parametry: numer portu, na którym będzie nasłuchiwał kHTTPd, numer portu, na którym pracuje lokalny serwer WWW (np. Apache), oraz główny katalog zawierający pliki HTML (powinien być taki sam, jak dla serwera Apache). Ręczne ustawianie tych parametrów jest uciążliwe, najlepiej więc przygotować odpowiedni skrypt (znajdziesz go również na drugiej płycie CD-ROM w katalogu "/kernel"):

#!/bin/sh

modprobe khttpd

echo 80 > /proc/sys/net/khttpd/clientport

echo 8080 > /proc/sys/net/khttpd/serverport

echo /var/www > /proc/sys/net/khttpd/documentroot

echo php3 > /proc/sys/net/khttpd/dynamic

echo shtml > /proc/sys/net/khttpd/dynamic

echo 1 > /proc/sys/net/khttpd/start

Aby zatrzymać pracę kHTTPd, należy wykonać polecenie:

"echo 1 > /proc/sys/net/khttpd/stop".


Zobacz również