Forum Amilo zaprasza

Forum o informatyce

Ogłoszenie

.::Witamy na naszym forum i zapraszamy serdecznie do rejestracji::.

#1 2008-03-31 22:59:24

admin

Administrator

2274656
Call me!
Zarejestrowany: 2008-03-31
Posty: 33
Punktów :   

Wprowadzanie

1. Wprowadzenie
        Prawdopodobnie każdy użytkownik systemu operacyjnego Linux, prędzej czy później stanie przed koniecznością kompilacji jądra systemu. Wprawdzie dystrybucje dostajemy już z przygotowanym jądrem, które będzie działać poprawnie na większości komputerów i systemu takiego możemy bez problemu używać, lecz jądro z dystrybucji posiada zbyt wiele niepotrzebnych elementów nie przydatnych dla naszego systemu, zwalniających jego pracę i pochłaniających niepotrzebnie zasoby. Mimo że kompilacja jądra wymaga od nas podstawowej wiedzy o systemie Linux oraz dokładnej znajomości sprzętu, na którym pracujemy nie należy to do wielce trudnych zadań.
        Jądro systemu jest programem napisanym w języku C. Dostępne jest ono w postaci kodu źródłowego lub skompilowanych pakietów binarnych. Pakiety możemy wykorzystać od razu, lecz ze źródeł sami musimy zbudować własne jądro systemu. Do zbudowania jądra niezbędny jest kompilator, który tłumaczy program napisany w języku programowania na język zrozumiały dla komputera. Przekompilowanie jądra dostarczonego z dystrybucją pozwala na zwiększenie szybkości działania całego systemu. Natomiast jądra nowszej wersji posiadają poprawione błędy znalezione w wersji wcześniejszej i często zwiększoną ilość sterowników i funkcji.

        Celem pracy jest ułatwienie i opisanie jak najprostszym i zrozumiałym sposobem przeprowadzenie kompilacji jądra, przez osoby robiące to po raz pierwszy lub nieznające dostatecznie dobrze języka angielskiego do wyboru zestawu niezbędnych im sterowników. Drugim celem jaki sobie postawiłem jest stworzenie spolszczenia opcji konfiguracyjnych jądra, z których każdy mógłby korzystać bezpośrednio w czasie konfiguracji.
1.1. Czym jest jądro systemu
        Jądro systemu operacyjnego Linux stanowi jego podstawę. Znajdują się tam główne sterowniki i programy odpowiadające za działanie systemu. Każdy system komputerowy posiada zbiór programów, który nazywany jest systemem operacyjnym. Najważniejszym z tych programów jest jądro (kernel). Jądro jest ładowane do pamięci RAM w czasie uruchamiania systemu, zawiera ono wiele niezbędnych dla systemu procedur. Kształt i możliwości komputera opierają się na jego jądrze. Często słowa "system operacyjny" używa się w odniesieniu do jądra systemu. Jądro współdziała ze sprzętem poprzez programy niskiego poziomu. Dostarcza też środowisko dla aplikacji działających w systemie. Kiedy program chce wykorzystać zasoby sprzętowe, musi wystosować odpowiednie zapytanie. Jądro rozważa to zapytanie i wybiera czy, jak i kiedy użyczyć programowi potrzebnych mu zasobów.

        Jądro w systemach typu Unix odgrywa rolę pośrednika między programami, a sprzętem. Najpierw zajmuje się przydziałem pamięci dla wszystkich uruchomionych programów (procesów), i dba o to, aby wszystkie one dostały równą ilość czasu procesora. [1]
1.2. Rodzaje wersji jądra
        Istnieją dwa rodzaje dostępnych wersji jądra - stabilna (stable) i rozwojowa (development). Stabilna przeznaczone jest dla ludzi ceniących sobie niezawodność i stabilność systemu jak również jego bezproblemową obsługę. Natomiast wersje rozwojowe (developerskie) przeznaczone są dla ludzi zajmujących się rozwojem jądra, zawierają one często wiele nowych sterowników dla najnowszych urządzeń i wiele funkcji eksperymentalnych, które mogą zniknąć w następnym jądrze. Jądra te mogą także być niestabilne i powodować liczne problemy.

        Pierwsza liczba oznaczenia jądra przedstawia numer wersji, następna czy jądro jest stabilne (liczba parzysta) czy rozwojowe (liczba nieparzysta), ostatnia liczba określa natomiast numer wydania (rys. 1.2.1 i 1.2.2).
Opis numeracji wersji stabilnej jądra systemu operacyjnego Linux         Opis numeracji wersji rozwojowej jądra systemu operacyjnego Linux
Wynika z tego, że wersje stabilne to np. 2.2.40, 2.4.27, 2.6.9. Jądrami deweloperskimi będą np. 2.3.24, 2.5.75 i w przyszłości 2.7.1. [1]

Funkcja    Jądro 2.4.X    Jądro 2.6.X
Maksymalna liczba obsługiwanych procesorów    16    255, NUMA (Non-Uniform Memory Access)
Maksymalny rozmiar RAM-u    16 GB    64 GB
Maksymalny rozmiar systemu plików    2 TB    16 TB
Obsługiwane systemy plików (odczyt i zapis)    Ext2, Ext3, ReiserFS, JFS, HPFS, FFS, HFS+, MS DOS, FAT, VFAT, ISO9660    Ext2, Ext3, ReiserFS, Reiser4, JFS, HPFS, FFS, HFS, HFS+, MS DOS, FAT, VFAT, ISO9660, NTFS, XFS
Sieciowe systemy plików    NFSv3, SMB, NCP, InterMezzo, Coda    NFSv4, SMB, NCP, Intermezzo, Coda, AFS, CIFS
Rodzaje wątków    LinuxThreads    NPTL (wątki POSIX)
Obsługiwany format dźwięku    OSS    ALSA
Obsługa Hyper-threading    Nie    Tak
Liczba możliwych urządzeń    255    4095
Tabelka 1.2.3 Różnice pomiędzy jądrami systemu operacyjnego Linux w wersji 2.4 a 2.6 [2]

        W tabeli 1.2.3 możemy zobaczyć główne różnice pomiędzy jądrami dwóch wersji. W jądrach z serii 2.6 zwiększono liczbę obsługiwanych jednocześnie procesorów do 255 w systemie NUMA. Zwiększyła się także ilość obsługiwanej pamięci RAM i rozmiaru systemu plików.

        W nowym jądrze dodano też obsługę większej ilości systemów plików obsługiwanych bezpośrednio przez jądro jak i obsługę większej liczby urządzeń. Znajduje się też nowy system obsługi dźwięku ALSA.
1.3. Co to są moduły
        Moduły - "Są to części jądra, które nie są zawarte bezpośrednio w nim. Kompiluje się je osobno i można je umieścić a następnie usunąć z uruchomionego jądra prawie zawsze. Z powodu tej elastyczności jest to teraz preferowana metoda pisania niektórych fragmentów jądra. Wiele popularnych sterowników urządzeń to ładowalne moduły." [3]
        Są to sterowniki różnych urządzeń, które nie są wkompilowane bezpośrednio w jądro. Jednak gdy zajdzie potrzeba użycia takiego sterownika zostaje on wtedy załadowany dynamicznie przez specjalny program ładujący bez przerywania pracy naszego systemu. Wszystkie moduły dostępne w naszym systemie znajdują się w katalogu /lib/modules/numer_wersji_naszego_jądra.
        Korzyść z użycia modułów jest taka, że przez ich zastosowanie otrzymujemy mniejsze i szybsze jądro, dzięki czemu nie trwonimy bez potrzeby zasobów naszego komputera, w razie gdy potrzebujemy raz na jakiś czas skorzystać z sterownika a mamy go jako moduł, możemy załadować go na czas pracy, a gdy już nie będzie nam potrzebny spokojnie możemy skasować go z pamięci. Jednak nie wszystkie sterowniki możemy użyć jako moduły, Linux potrzebuje część z nich jeszcze zanim zostaną one załadowane przez system, tak jest np. z obsługą dysku twardego czy systemu plików, aby system mógł się poprawnie uruchomić i obsłużyć posiadany przez nas sprzęt.
1.3.1. Zarządzanie modułami
        Modułami możemy zarządzać za pomocą poleceń:
insmod [nazwa modułu] - "instaluje ładowalny moduł w pracującym jądrze." [4]
depmod - "tworzy plik podobny do "Makefile" z zależnościami, bazujący na symbolach, które znalazł w zbiorze modułów podanych w linii komend (lub w standardowym miejscu). Plik zależności może być potem użyty przez modprobe, aby automatycznie załadować odpowiednie moduły." [5]
modprobe [nazwa modułu] - ładuje podany, szukając modułów w katalogu /lib/modules/"uname -r", oraz wszystkie inne moduły, od których jest zależny. [6]
rmmod [nazwa modułu] - "usuwa załadowany moduł z działającego jądra systemu." [7]
lsmod - "wyświetla informację o wszystkich załadowanych modułach." [8]
Istnieje też możliwość wykorzystanie do tego programu KMOD, który możemy skompilować zaznaczając specjalną opcję w czasie jego konfigurowania. Program ten będzie automatycznie ładował niezbędne moduły, lecz nie zawsze działa poprawnie i wtedy musimy załadować moduł ręcznie.
1.4. Co to są łaty (patche)
        Łaty (patche) - Są sposobem na dodawanie do jądra lub uaktualnianie sterowników lub funkcji. Nieraz po załataniu jądra, szczególnie nieoficjalnymi łatami może nie działać ono poprawnie, lub nawet może nie powieść się jego kompilacja. Łatać jądro powinniśmy jedynie wtedy, gdy jesteśmy pewni jego działania i do tego najlepiej na osobnej kopii źródeł jądra.

Istnieją łaty oficjalne i nieoficjalne:
- Łaty oficjalne możemy znaleźć na stronie www.kernel.org. Łaty te zostały zaakceptowane przez twórców jądra i pozwalają one aktualizować starszą wersję jądra na nowszą. Np. jądro 2.6.7 za pomocą łaty patch-2.6.8.bz2 zaktualizować jądro 2.6.7 do wersji 2.6.8. Łaty te, jeśli nie użyjemy wersji testowej z dopiskiem -rc i nakładamy na niezałatane wcześniej jądro działają poprawnie. Oprócz tego możemy także znaleźć codzienne zrzuty z czasu rozwoju jądra. Posiadają one dopisek -bk.
Ostatnio pojawiły się także łaty poprawiające błędy w stabilnej już wersji jądra. Posiadają one na końcu jeszcze jedna cyfrę, np. 2.6.8.1.

- Łaty nieoficjalne możemy znaleźć w różnych miejscach, zazwyczaj poprawiają one działanie jądra, aczkolwiek nie muszą zawsze działać poprawnie.

Linki do różnych łat do jądra w wersji 2.6:
http://programista.org/~snaj/.
http://kem.p.lodz.pl/~peter/cko/.
http://members.optusnet.com.au/ckolivas/kernel/.
http://omfg.linux.dk/pub/configurable-h … -polling/.
http://shfs.sourceforge.net/.
http://linux.bytesex.org/v4l2/.
http://www.bluez.org/.
http://fallow.fm.interia.pl/index.html.
http://kem.p.lodz.pl/~peter/qnet/.
http://relaks.info/linux/mq/testing/.
http://www.reactivated.net/patches/linux-kernel/.
http://www.bootsplash.org/.
http://www.kernel.org/pub/linux/kernel/people/.
http://people.redhat.com/mingo/.

Linki do łat do starszych wersji:
http://www.plumlocosoft.com/kernel/.
http://www.holtmann.org/linux/kernel/.
http://www.openwall.com/linux/.
http://www.kernel.org/pub/linux/kernel/ … crl/v2.4/.
http://www.kernel.org/pub/linux/kernel/people/benh/.
http://www.kernel.org/pub/linux/kernel/ … cw/Altix/.
http://www.kernel.org/pub/linux/kernel/people/hedrick/.
http://www.kernel.org/pub/linux/kernel/ … /patches/.
http://surriel.com/patches/.

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.bojowe1kurczaki.pun.pl www.wiedzmin11.pun.pl www.blackcherry.pun.pl www.zbp.pun.pl www.anime-center.pun.pl