B

Tematy związane z oprogramowaniem, instalacją, konfiguracją
mieszko22
Posty: 48
Rejestracja: 12 listopada 2008, 10:58

Błąd przy kompilacji jądra

Post autor: mieszko22 »

Witam.

Kompilowałem jądro na Debianie Lenny w wersji linux-2.6.31.6.

Postępowałem według poniższej instrukcji:
Krok 1:
Przygotowanie potrzebnych pakietów do kompilacji jądra:
apt-get update
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Krok 2:
Pobranie źródeł nowego jajka:
Aktualne jajko znajdziesz na http://www.kernel.org
cd / usr / src
wget http://www.kernel.org/pub/linux/kernel/ ... 31.tar.bz2
Rozpakowanie jajka:
tar xjf linux-2.6.31.tar.bz2
ln -s linux-2.6.31 linux
cd /usr/src/linux
Krok 3:
Konfiguracja nowego jądra:
Dobrym pomysłem jest skopiowanie aktualnego pliku konfiguracji
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
Uruchamiamy narzędzie konfiguracji:
make menuconfig
£adujemy plik .config i zaczynamy zabawę z konfiguracją
Krok 4:
Kompilacja jądra (proces czasochłonny może potrwać parę minut)
make dep
make clean
make bzImage

make modules
make modules_install
Krok 5:
Instalacja nowego kernela:
Kopiujemy plik bzImage :
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-<nowa_wersja>
Tworzymy symboliczne dowiązania /vmlinuz i /vmlinuz.old :
ln -s /boot/vmlinuz-<new> /vmlinuz
ln -s /boot/vmlinuz-
  1. /vmlinuz.old
    Kopiujemy plik System.map :
    cp /usr/src/linux/System.map /boot/System.map-<new>
    Tworzymy plik initrd* :
    update-initramfs -k 2.6.31 -c
    Modyfikujemy plik /etc/lilo.conf
    # New
    image=/vmlinuz
    label=debian
    initrd=/boot/initrd-<new>
    read-only
    # Old
    image=/vmlinuz.old
    label=debian.old
    initrd=/boot/initrd-
    1. read-only
      Aktualizujemy LILO:
      lilo –v

      aktualizacja wpisow w Grub
      update-grub
Wszystkie powyższe kroki przeszedłem bez problemów, nie wywołały one żadnych błędów więc jest w porządku.

Moje wpisy dla GRUB-a wyglądają następująco:

Kod: Zaznacz cały

title           Debian GNU/Linux, kernel 2.6.31.6
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.31.6 root=/dev/hda1 ro quiet
initrd          /boot/initrd.img-2.6.31.6

title           Debian GNU/Linux, kernel 2.6.31.6 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.31.6 root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.31.6

title           Debian GNU/Linux, kernel 2.6.30.9
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.30.9 root=/dev/hda1 ro quiet
initrd          /boot/initrd.img-2.6.30.9

title           Debian GNU/Linux, kernel 2.6.30.9 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.30.9 root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.30.9

title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
initrd          /boot/initrd.img-2.6.26-2-686

title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.26-2-686
Mój plik LILO.CONF ma takie wpisy:

Kod: Zaznacz cały

# Automatically added by lilo postinst script
large-memory

# New
image=/vmlinuz31
label=debian31
initrd=/boot/initrd.img-2.6.31.6
read-only

# Old
image=/vmlinuz686.old
label=debian686.old
initrd=/boot/initrd.img-2.6.26-2-686
read-only
Dowiązania jakie utworzyłem znajdują w katalogu głównym ,,/ ''.

Jak uaktualniam LILO poleceniem

Kod: Zaznacz cały

lilo -v
i uaktualniam wpisy w GRUB-ie poleceniem

Kod: Zaznacz cały

update-grub
nie wyskakują mi żadne monity o błędach, wszystko jest wykonywane poprawnie.

Kiedy restartuje system bo chcę go odpalić na nowym jajku przy starcie mi się zatrzymuje w miejscu błąd na załączonym zrzucie ekranu:

Obrazek

i dalej system już nie rusza.

Dziękuję za pomoc wydaje mi się że wyraźnie opisałem mój problem.
Pozdrawiam.
greg23
Posty: 75
Rejestracja: 29 lipca 2008, 11:16

Post autor: greg23 »

Czy konfig do nowego jądra po prostu skopiowałeś tylko, czy może tez zmieniałeś coś? Obsługę systemów plików dodałeś jako [*] w konfiguracji jądra?
mieszko22
Posty: 48
Rejestracja: 12 listopada 2008, 10:58

Post autor: mieszko22 »

Witam
Konfig jądra normalnie skopiowałem i importowałem do nowego jądra, zapisałem i uruchomiłem kompilację, nic w żadnych ustawieniach nie zmieniałem.

Czy myślisz, że to może być powodem tego błędu?

Dziękuję za pomoc.
greg23
Posty: 75
Rejestracja: 29 lipca 2008, 11:16

Post autor: greg23 »

Nie jestem pewien, ale im wyższa wersja jądra, to pewne opcje znikają (zastąpione przez nowe rozwiązania), jak i pojawiają się nowe. Kiedyś też tak zrobiłem - kopiując tylko plik konfiguracyjny, i okazało się, że obsługę systemów plików skompilowało jako moduł.

Zwróć też uwagę, czy nie jest przypadkiem wymagany wpis w boot odnoszący się do initrd.xxx i czy takowy plik posiadasz.
Awatar użytkownika
ryba84
Beginner
Posty: 340
Rejestracja: 08 lipca 2007, 14:55
Lokalizacja: LDZ

Post autor: ryba84 »

Przed kompilacją powinieneś jeszcze wykonać make oldconfig. Jeśli to ma być komputer do użytku domowego to polecam zmianę architektury procesora na taki jaki masz no i zaznaczyć low latency desktop.
ODPOWIEDZ