surix Opublikowano 6 Stycznia 2012 Zgłoś Opublikowano 6 Stycznia 2012 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. Przed samą kompilacją warto wiedzieć jaki sprzęt posiadamy, służą do tego następujące polecenia: cat /proc/cpuinfo //info na temat procesoralspci //info na temat kart wlan, muzycznych itp.lsusb //myszki, drukarki, modemy itp. 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: sudo aptitude updatesudo aptitude upgrade ż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 :wink:, jeśli chcecie to pominąć wystarczy zalogować się na roota poleceniem su. Następnie: sudo aptitude install kernel-package build-essential libncurses5-dev sudo aptitude install fakeroot wget bzip2 initramfs-tools cramfsprogs 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: wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.1.6.tar.bz2 po ściągnięciu przenosimy nasz kernel do /usr/src i tam też przechodzimy: sudo mv linux-3.1.6.tar.bz2 /usr/srccd /usr/src rozpakowujemy archiwum z jądrem: sudo tar xjf linux-3.1.6.tar.bz2 a następnie tworzymy symlink do naszego katalogu z kernelem i przechodzimy do niego: sudo ln -s linux-3.1.6 linuxcd /linux 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. sudo cp /boot/config-stara_wersja_jądra ./.configls -a poleceniem ls -a upewniamy się że skopiowaliśmy plik konfiguracyjny. Teraz zaczynamy konfigurację: sudo make menuconfig //jeśli chcecie konfigurować w konsolisudo make xconfig //jeśli w GUI (QT)sudo make gconfig // GTK 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 Procesor 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 ipt. 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 Documentation/lguest: No such file or directory. Stop. 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. sudo gedit .config odszukujemy CONFIG_LGUEST_GUEST=yCONFIG_PARAVIRT_SPINLOCKS=yCONFIG_LGUEST=y i te opcje zmieniamy na # CONFIG_LGUEST_GUEST is not set# CONFIG_PARAVIRT_SPINLOCKS is not set# CONFIG_LGUEST is not set 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: sudo make-kpkg --initrd --append-to-version=-name --revision=1.0 kernel_image kernel_headers 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 sudo dpkg -i linux-image-xxx.debsudo dpkg -i linux-headers-xxx.deb po instalacji uruchamiamy ponownie sprzęt i wybieramy w menu Gruba nowe jądro :D PS. Plany na przyszłość to opis tworzenia initrd oraz patchowanie kernela. ;) 2 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...