-->

sobota, 21 lipca 2012

Kompilacja jądra - metoda Debiana

Kompilacja kernela może wydawać się trudna ale tylko z pozoru ;) opiszę tutaj procedurę związaną z tzw. metodą debiana. A więc praktycznie systemy bazujące na Debianie (np. Ubuntu, Mint itp.) mają identyczną ścieżkę postępowania. System na którym kompilowałem kernel to Debian Squeeze (stable), stare jądro to 2.6.32, nowe do kompilacji to 3.1.6 ściągnięte prosto z kernel.org. Sprzęt to Asus A3HF.

Przed samą kompilacją warto wiedzieć jaki sprzęt posiadamy, służą do tego następujące polecenia:


Powyższe informacje mogą pomóc w konfiguracji kernela pod nasz sprzęt. Krok 1 to instalacja kilku paczek potrzebnych do przeprowadzenia całego procesu.
Otwieramy konsolę i zapodajemy:

żeby mieć pewność że mamy świeży system, jeśli ktoś używa apt-get to może bez problemu go użyć, ważne jest to aby nie mieszać aptitude z apt-get'em. Przy wszystkich poleceniach będę używał sudo, ponieważ mam taki zwyczaj jak najmniej pracować na użytkowniku root :D, jeśli chcecie to pominąć wystarczy zalogować się na roota poleceniem su. Następnie:

powyższe pakiety są potrzebne do kompilacji, libncurses5-dev jest potrzebne jeżeli chcemy pracować w konsoli. Możemy go nie instalować jeśli będziemy konfigurować wszystko przez GUI (musimy mieć wtedy GTK dla Gnome lub QT dla KDE – biblioteki dla interfejsów graficznych).
Po zainstalowaniu musimy ściągnąć nasz kernel do kompilacji, wchodzimy na kernel.org i klikamy najlepiej na ostatnią stabilną wersję ;> lub używamy wget'a, w moim przypadku:

po ściągnięciu przenosimy nasz kernel do /usr/src i tam też przechodzimy:

rozpakowujemy archiwum z jądrem:

a następnie tworzymy symlink do naszego katalogu z kernelem i przechodzimy do niego:

teraz najwygodniej będzie skopiować plik konfiguracyjny ze starego jądra po to by mieć gwarancję że nowe jądro będzie dobrze działać niż męczyć się z ustawianiem wszystkiego w przypadku braku tego pliku.

poleceniem ls -a upewniamy się że skopiowaliśmy plik konfiguracyjny.
Teraz zaczynamy konfigurację:

Ja użyłem menuconfig i dalszy opis jest dla konfiguracji w terminalu. Powinno pojawić się menu konfiguracji podobne do tego poniżej:


wybieramy Load an Alternate Configuration File i ładujemy plik .config

Po menu poruszamy się strzałkami ;] jeśli jest możliwość zaznaczenia czy moduł ma się znajdować, być wkompilowanym w jądro lub ma go nie być to operujemy spacją lub klawiszami Y (wkompilowany), N(nie chcemy w ogóle), M(będzie figurował jako moduł). Po trzech dolnych opcjach (Select/Exit/Help) poruszamy się klawiszem TAB. Jeżeli wchodzimy głębiej w opcje to wyjść musimy poprzez Exit (o jeden poziom w górę).

Po wejściu w General setup ważne jest opcja Initial RAM filesystem.... podświetlona na screenie. Jeśli nie chcemy bawić się po instalacji z ram dyskiem należy tą opcję pozostawić jako wbudowaną w jądro. Inaczej musieli byśmy ręcznie wygenerować plik inicjalizujący system plików.


Kolejną opcją wartą do przejrzenia jest sekcja Processor type and features, zaznaczamy tam przede wszystkim rodzinę procesora (dla mnie Pentium M), ponieważ Celeron M jest blisko związany z tą rodziną a opcji Celerona M nie ma. Odznaczyłem też Support for big SMP... ta opcja dotyczy maszyn wieloprocesorowych. Jako że kompilacja przygotowuje kernel dla laptopa to odznaczam także wcześniej zaznaczone Toshiba/Dell laptop support bo do mojego Asusa nie są one potrzebne. Wszystko widać na poniższym screenie ;]:


Jasne jest to iż nie zmieniamy opcji których nie jesteśmy pewni albo nie wiemy co robią ale jeśli np. wiemy że mamy kartę od Nvidi to śmiało możemy odznaczyć sekcję ze sterownikami do Radeona, zintegrowanych kart Intela itp. Tak jak poniżej ja odznaczam AMD/Via C7/Cyrix i nForce2.


Ostatnim podstawowym działem jest File system, zaznaczone są tam moduły dotyczące obsługi różnych systemów plików. Zostawiłem wszystko tak jak było standardowo, nigdy nie wiadomo co zamontujemy w naszym systemie ;>


Po tej krótkiej konfiguracji cofamy się do głównego menu i dajemy Save an Alternate Configuration File lub zaznaczamy Exit, potwierdzamy i kiedy wyskoczy opcja zapisu pliku konfiguracyjnego zatwierdzamy Yes :]
teraz jedna ważna rzecz, podczas pierwszej kompilacji pojawił mi się błąd

I wiem że jest to w tym momencie powszechny problem, aby go rozwiązać należy otworzyć nasz plik konfiguracyjnym dowolnym narzędziem do edycji tekstu (jesteśmy cały czas w /usr/src/linux) np.

odszukujemy

i zmieniamy na:

i to załatwia sprawę (niestety czasem takie bugi się zdarzają.... powyższy wynika z umieszczenia lguest w ./Documentation/virtual, w starszych wersjach plik był w ./Documentation i dlatego teraz sypie się wszystko) no i ostatnie polecenie:

gdzie
--append-to-version =– nasza nazwa kernela
--revision = numer naszej autorskiej wersji

i teraz dość długa przerwa, jądro się kompiluje. Zabiera to chwilę czasu (w moim przypadku około 2 godz.). Do powyższego polecenia można dodać opcję -jX gdzie X to liczba rdzeni procesora.

Po skompilowaniu w katalogu nadrzędnym (/usr/src) stworzyły się dwie paczki, jedna z kernelem a druga z plikami nagłówkowymi. Obie instalujemy

po instalacji uruchamiamy ponownie sprzęt i wybieramy w menu Gruba nowe jądro :D

Brak komentarzy:

Publikowanie komentarza