[+] Kompilacja j

Pomoc dotycząca instalacji systemu
vega01
Posty: 2
Rejestracja: 26 kwietnia 2008, 14:52

[+] Kompilacja jądra za pomocą systemu Debiana

Post autor: vega01 »

Witam!

Moje pytanie dotyczy Ubuntu, ale mam nadzieję, że nikt mnie stąd nie wywali z tego powodu. Pytam tutaj, bo na ubuntuforums jakoś nikt nic nie wie, a wydaje mi się, że tutaj mogę uzyskać odpowiedź. Mam taki problem - chcę skompilować jądro ze źródeł z dystrybucji, ale z dodanymi przeze mnie łatkami. Na początek jednak po prostu chcę bez łatek. Próbowałem za pomocą make-kpkg, ale o dziwo nie działa, tak ja oryginalne i nie wiem dlaczego. Dźwięk mi przestaje działać.

Potem próbowałem za pomocą systemu kompilacji jądra Debiana (czyli kompilacja z fakeroot) i tu się ładnie kompiluje i chodzi, ale jak skompiluje je z oryginalną nazwą, to potem synaptic mi podaje, że jest aktualizacja. Więc chciałbym zmienić nazwę wynikowej paczki deb, ale moje próby doprowadziły mnie do tego, że się albo nie instaluje albo instaluje, ale potem jest problem z ładowaniem systemu - informuje, że nie może znaleźć pliku /lib/modules/wersja_jądra/modules.dep.

Czy ktoś może wie coś na temat systemu kompilacji jądra Debiana i jak tu zmienić nazwę wynikową jądra?

Dziękuję z góry za pomoc.

Vega

P.S. Już przeszukałem internet i znalazłem tylko te same pytania, bez odpowiedzi.
Awatar użytkownika
Yampress
Administrator
Posty: 6423
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

  1. W jądrze jak zrobisz:

    Kod: Zaznacz cały

    make menuconfig
    wchodzisz:

    Kod: Zaznacz cały

    General setup ->  Local version - append to kernel release 
    
    i tam wpisujesz sobie relase, czy tam własna nazwę.
  2. Jak kompilujesz wydając polecenie:

    Kod: Zaznacz cały

    make-kpkg --initrd --revision=wlasny_opis_kernela  kernal_image
    
    Odnośnie tego, że nie działa to przez Ciebie skompilowane jajko tak samo jak dystrybucyjne to sprawdź, czy skorzystałeś z .config dystrybucyjnego jądra, czy skompilowałeś przy domyślnych ustawieniach źródeł dla swojego jądra.

    Nałóż łaty, potem skopiuj plik /boot/config_dalsza_nazwa do katalogu ze źródłami zmieniając jego nazwę na .config, a następnie go wczytaj podczas polecenia:

    Kod: Zaznacz cały

    make menuconfig
    A następnie pozaznaczaj opcje odnoszące się do nałożonych łatek.
vega01
Posty: 2
Rejestracja: 26 kwietnia 2008, 14:52

Post autor: vega01 »

Dziękuję za odpowiedź!

To, jak rozumiem, wszystko dotyczy tradycyjnego sposobu kompilacji jądra w Debianie, czyli przez make-kpkg?

Chyba dość niejasno napisałem swój post, chciałem krótko. Opiszę trochę dokładniej, co robiłem i co nie chodzi. Ogólnie korzystałem z poradnika Ubuntu https://help.ubuntu.com/community/Kernel/Compile.

Najpierw próbowałem w następujący sposób:

Kod: Zaznacz cały

sudo apt-get install linux-source
tar xjvf /usr/src/linux-source-2.6.24.tar.bz2
cd linux-source-2.6.24
cp -vi /boot/config-`uname -r` .config
fakeroot make-kpkg --initrd --append-to-version=-moja_wersja kernel-image kernel-headers
I potem instalacja linux-image i linux-headers z pakietów deb. Zrobiłem kompilację bez łatek, żeby zobaczyć, czy działa. Kompilacja poprawna, nazwa zmieniona, ale jądro nie działało dobrze. Tylko teraz się zastanawiam, czy samo skopiowanie, jak wyżej, pliku .config wystarczy? Nie uruchamiałem nawet make xconfig.

Natomiast chciałbym wiedzieć jeszcze jak skorzystać ze sposobu opisanego w poradniku jako nr 2. W poradniku znalazłem błąd (przynajmniej w wersji Ubuntu hardy nie działa): zamiast:

Kod: Zaznacz cały

apt-get source linux-source
powinno się ściągnąć źródła:

Kod: Zaznacz cały

 apt-get source linux-image
(dość logiczne). Kompilacja bez zmiany konfiguracji daje działające jądro. Czyli mniej więcej tak to wyglądało po ściągnięciu źródeł:

Kod: Zaznacz cały

DEB_BUILD_OPTIONS=parallel=2 AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic
I to wszystko. Potem instalacja z deb. Tylko synaptic mi potem zgłaszał dostępną aktualizację jądra.
Natomiast nie udało mi się w tym drugim sposobie zmienić nazwy jądra i chciałbym się dowiedzieć, jak to zrobić. Chociażby, żeby się nauczyć. Spędziłem nad tym sporo czasu, grzebałem w plikach linux-2.6.24/debian/changelog, linux-2.6.24/debian/control i Makefile jądra, ale ciągle mi coś nie grało. Jak się skompilowało, to nie chciało się zainstalować, jak się zainstalowało, to nie chce się uruchomić, bo jakieś ścieżki są nie tak albo nazwa jądra, itp.

Jeśli na tym forum nikt nie będzie wiedział, to może skierujecie mnie gdzieś indziej?

Dziękuję za pomoc.

Vega
Awatar użytkownika
Yampress
Administrator
Posty: 6423
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Chyba niedokładnie podałem wyżej.

Kod: Zaznacz cały

--append-to-version=-nazwa_własnego_kernela
Odnośnie revision to chodzi o kolejny numer:

Kod: Zaznacz cały

--revision=numer_kolejnego_wlasnego_kernela
Czyli:

Kod: Zaznacz cały

make-kpkg --initrd --append-to-version=-yampress --revision=1 kernel_image kernel_headers
Poza tym zerknij sobie na taką stronę:
http://www.howtoforge.com/kernel_compil ... ebian_etch

Opisuje 2 metody kompilacji jądra: debianowa i klasyczną. Artykuł jest tak napisany, że wykorzystuje .config starszego jądra dystrybucyjnego do konfiguracji nowszej wersji. ale nie musisz ściągać nowszej wersji, możesz po prostu na źródłach dystrybucyjnych zrobić.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Masz jeszcze przykład kompilacji z wykorzystaniem konfigu działającego jadra dostępnego na naszym forum: http://debian.linux.pl/viewtopic.php?p=41656#41656
ODPOWIEDZ