Kompilacja kernela 3.x/4.x metodą Debiana

Nowe aktualne opisy i poradniki
Awatar użytkownika
Yampress
Administrator
Posty: 6108
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Kompilacja kernela 3.x/4.x metodą Debiana

Post autor: Yampress » 09 marca 2016, 19:51

Na początku zadajemy sobie proste pytanie:

Po co kompilujemy własną wersję jądra?
1.W standardowym jajku nie mam tego co potrzebuje do działania (obsługi) sprzętu itp.
2. Potrzebuję jakiejś większej funkcjonalności po nałożeniu swoich łatek.
3. Chcę się nauczyć kompilować jajo.

W innych przypadkach nie ma sensu tego robić. Dystrybucyjne jajo jest budowane przez ludzi, którzy się na tym znają, zawiera obsługę potrzebnych elementów aby na jak największej ilości sprzętu działało, ma wsparcie bezpieczeństwa.

Teraz to już nie te czasy kiedy trzeba było walczyć o każdy kilobajt miejsca w pamięci albo na dysku! Dyski są wielkie, pamięci też. A parę kilobajtów więcej, przedkładając na czas włożony w kompilację, w ogóle się nie przelicza.

Według mnie kompilacja jaja dla idei (po to aby uruchamiać system na własnej wersji jądra albo mieć wyższy numerek jaja) jest stratą czasu, który można poświęcić na coś innego.
Tak, trzeba poznać proces kompilacji, tego nie ukrywam.

Kompilacja przeprowadzona na Debianie Wheezy, który jest jeszcze w tej chwili wersją testową

Na początek instalujemy potrzebne paczki aby skompilować i zbudować paczkę z jądrem.

Kod: Zaznacz cały

apt-get update
apt-get install kernel-package build-essential libncurses5-dev zlib1g-dev
apt-get install fakeroot wget bzip2 initramfs-tools cramfsprogs
Następnie ściągamy najnowszego źródła jądra ze strony http://www.kernel.org
Na dzień dzisiejszy jest to jądro w wersji 3.2.7 (25.2.2012)
wget http://www.kernel.org/pub/linux/kern...-3.2.7.tar.bz2

Po ściągnięciu paczki ze źródłami jądra kopiujemy ją do katalogu: /usr/src:

Kod: Zaznacz cały

cp linux-3.2.7.tar.bz2 /usr/src 
i rozpakowujemy:

Kod: Zaznacz cały

tar xjf linux-3.2.7.tar.bz2
Tworzymy dowiązanie symboliczne wskazujące na katalog linux-3.2.7

Kod: Zaznacz cały

ln -s /usr/src/ linux-3.2.7  /usr/src/linux
Jeśli chcemy skorzystać ze źródeł wersji jadra, która jest w repozytorium instalujemy je poleceniem:

Kod: Zaznacz cały

apt-get install linux-source-3.2
Nie jest to najnowsza wersja źródeł, a ta sama co wersja jądra dystrybucyjnego.

Sprawdzamy, czy jesteśmy w katalogu /usr/src/linux, po czym przechodzimy do konfiguracji jądra.
Dobrze jest wczytać poprzedni konfig jaja, a potem dopiero od tego zacząć konfigurować, więc wydajemy polecenie:

Kod: Zaznacz cały

make oldconfig  && make menuconfig
Ewentualnie jeśli mamy swój konfig robimy tylko polecenie:

Kod: Zaznacz cały

make menuconfig
i tam w menu wczytujemy stary konfig.

Jeśli czujemy się na tyle silni, że potrafimy samemu skonfigurować to nie wczytujemy nic i nie wykonujemy polecenia make oldconfig przed make menuconfig.

Kod: Zaznacz cały

make menuconfig
Pojawi nam się niebieskie menu konfiguracyjne jądra.

Edytujemy ustawienia według potrzeb. Po zakończeniu czas na zapisanie konfiguracji. Wybieramy:
Kod:
**Exit**
potwierdzając:
Kod:
**YES**
na pytanie:
Kod:
**Do you wish to save your new kernel configuration?**
Konfiguracja zapisana...


Aktualnie mamy skonfigurowane jądro. Pozostaje skompilować je i zbudować paczkę.

Kod: Zaznacz cały

make-kpkg clean
make-kpkg --initrd --append-to-version=-yampress --revision=01 kernel_image kernel_headers[/code]

Do czego służą dane opcje?
––append-to-version=-yampress - własna nazwa jądra -yampress
––revision=01 - numer kolejnej wersji zmian w konfiguracji jądra
––initrd - tworzy ram dysk jądra
Po kompilacji jądra utworzyły się nam 2 paczki: jedna z nowym jądrem oraz druga plików nagłówkowych jądra.

Pozostaje już tylko je zainstalować:
Kod:

Kod: Zaznacz cały

dpkg -i  linux-image-3.2.7-yampress_01_i386.deb
dpkg -i linux-headers-3.2.7-yampress_01_i386.deb
Potem należy jeszcze przejrzeć plik konfiguracyjny grub i ewentualnie wprowadzić indywidualnie ustawienia według potrzeb.

Aby cieszyć się nową wersją jądra, resetujemy komputer

Kod: Zaznacz cały

shutdown -r now
Po uruchomieniu sprawdzamy na jakiej aktualnie wersji jądra nasz system pracuje.

Kod: Zaznacz cały

uname -a

ODPOWIEDZ