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
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
Kod: Zaznacz cały
tar xjf linux-3.2.7.tar.bz2
Kod: Zaznacz cały
ln -s /usr/src/ linux-3.2.7 /usr/src/linux
Kod: Zaznacz cały
apt-get install linux-source-3.2
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
Kod: Zaznacz cały
make menuconfig
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
Edytujemy ustawienia według potrzeb. Po zakończeniu czas na zapisanie konfiguracji. Wybieramy:
Kod:
Konfiguracja zapisana...**Exit**
potwierdzając:
Kod:
**YES**
na pytanie:
Kod:
**Do you wish to save your new kernel configuration?**
Aktualnie mamy skonfigurowane jądro. Pozostaje skompilować je i zbudować paczkę.
Kod: Zaznacz cały
make-kpkg clean
Kod: Zaznacz cały
make-kpkg --initrd --append-to-version=-yampress --revision=01 kernel_image kernel_headers
Po kompilacji jądra utworzyły się nam 2 paczki: jedna z nowym jądrem oraz druga plików nagłówkowych jądra.––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
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
Aby cieszyć się nową wersją jądra, resetujemy komputer
Kod: Zaznacz cały
shutdown -r now
Kod: Zaznacz cały
uname -a