[+] Kompilacja j

Ogólne pytania dotyczące systemu
piroaa
Beginner
Posty: 324
Rejestracja: 11 kwietnia 2008, 14:46

[+] Kompilacja jądra, brak initrd

Post autor: piroaa »

Witam.
Postanowiłem skompilować nowe jądro 2.6.30, kilka dni siedziałem nad konfigiem wszystko ładnie się skompilowało za pomocą polecenia:

Kod: Zaznacz cały

make-kpkg  kernel_image linux-image linux-headers --initrd
w wyniku otrzymałem paczki z jądrem oraz nagłówki obydwa pakiety zainstalowałem, i tu pojawił się problem pierwszy, w /boot nie pojawił się initrd, pomyślałem co tam jądro było mocno okrojone więc powinno wystartować podając w /boot/grub/menu.list tylko:

Kod: Zaznacz cały

title		Debian GNU/Linux, kernel 2.6.30 nommconfig vga=0x318
root		(hd0,6)
kernel		/boot/vmlinuz-2.6.30 root=/dev/sda7 ro quiet vga=0x318
jednak po restarcie zobaczyłem tylko:

Kod: Zaznacz cały

kernelpanic
Usunąłem więc zainstalowanie pakiety z jądrem i nagłówkami, pozmieniałem konfig i skompilowałem jądro ponownie za pomocą polecenia:

Kod: Zaznacz cały

make-kpkg --revision=kernel1.0 --initrd kernel_image
Nowe paczki powstały w katalogu /usr/src jednak po instalacji znów brak initrd a w /boot znajduje się tylko:

Kod: Zaznacz cały

config-2.6.26-2-686          initrd.img-2.6.26-2-686      System.map-2.6.26-2-686      vmlinuz-2.6.26-2-686
config-2.6.30                initrd.img-2.6.26-2-686.bak  System.map-2.6.30            vmlinuz-2.6.30
Czyli zupełnie to samo co po pierwszej instalacji.
I tutaj dochodzę do wniosku że coś robię nie tak skoro nie pojawiają się ani initrd ani nowy vmlinuz.
Jak powinno się to skompilować z tych samych źródeł aby otrzymać nowy vmlinuz oraz upragniony initrd.
ArnVaker

Post autor: ArnVaker »

kernel-package znajdujący się obecnie w Squeeze oraz Sid "tak ma" (nie tworzy initrd, choć powinien). Po instalacji skompilowanego jądra wygeneruj initrd poleceniem:

Kod: Zaznacz cały

mkinitramfs -o /boot/initrd.img-wersja_jądra /lib/modules/wersja_jądra
Awatar użytkownika
ilin
Senior Member
Posty: 2292
Rejestracja: 26 sierpnia 2007, 11:54
Lokalizacja: PRLu

Post autor: ilin »

No i pamiętaj o dopisaniu initrd do gruba.
ArnVaker

Post autor: ArnVaker »

Lub prościej, poleceniem:

Kod: Zaznacz cały

update-grub
piroaa
Beginner
Posty: 324
Rejestracja: 11 kwietnia 2008, 14:46

Post autor: piroaa »

Dziękuje za szybką odpowiedź, oczywiście zadziałało bezproblemowo.
Mam jednak jeszcze jedno pytanie czy jeśli będę chciał ponownie przekompilować jądro z tych samych źródeł to czy wystarczy że tak jak do tej pory dodam --revision= czy należy robić coś z /lib/modules/2.6.30/, i czy w /boot nie powinien mi się pojawić vmlinuz-2.6.30 z dopiskiem który podałem po opcji --revision świadczący o tym że to pochodzi z którejś tam z kolej kompilacji czy też normalnym jest to że za każdym razem vmlinuz nazywa się tak samo.
ArnVaker

Post autor: ArnVaker »

Jak chcesz mieć swoją nazwę kernela, to kompiluj trochę innym poleceniem.

Kod: Zaznacz cały

make-kpkg --initrd --append-to-version=-Twoja_nazwa --revision=xy kernel_image kernel_headers
Wtedy kernel nazywałby się ładnie linux-image-2.6.30-Twoja_nazwa

Parametr --revision określa tylko wersję paczki. Sam sprawdź, na przykład poleceniem:

Kod: Zaznacz cały

dpkg -l |grep linux-image
piroaa
Beginner
Posty: 324
Rejestracja: 11 kwietnia 2008, 14:46

Post autor: piroaa »

Witam
Na nazwie kernela mi nie zależy ważne że pod tą samą nazwą pojawia się nowo przekompilowane jądro oraz zestaw modułów w /lib/modules/2.6.30 i o to chodziło.
Jeszcze raz dziękuje.
ODPOWIEDZ