|
[+] Kompilacja jądra za pomocą systemu Debiana
vega01 - 26-04-2008 15:08
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.
Yampress - 26-04-2008 15:41
l W jądrze jak zrobisz:
make menuconfig
wchodzisz:
General setup -> Local version - append to kernel release
i tam wpisujesz sobie relase, czy tam własna nazwę. l
l Jak kompilujesz wydając polecenie:
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:
make menuconfig
A następnie pozaznaczaj opcje odnoszące się do nałożonych łatek.l
vega01 - 26-04-2008 18:13
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:
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:
apt-get source linux-source
powinno się ściągnąć źródła:
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ł:
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
Yampress - 27-04-2008 11:43
Chyba niedokładnie podałem wyżej. --append-to-version=-nazwa_własnego_kernela
Odnośnie revision to chodzi o kolejny numer:
--revision=numer_kolejnego_wlasnego_kernela
Czyli:
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_com...on_debian_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 - 27-04-2008 11:57
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
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|