poniedziałek, 1 marca 2010

Kompilacja kernela 2.6.9 na RedHat 8.0

RedHat 8.0 zainstalowałem z 5 płyt CD z których w czasie instalacji potrzebne są chyba tylko 2 pierwsze.
W trakcie instalacji pozaznaczałem, że chcę mieć zainstalowane narzędzia programistyczne (m. in. kernel development).

Po ściągnięciu i rozpakowaniu kernela podawałem kolejno komendy:
make mrproper
make menuconfig (tu trzeba pamiętać, żeby obsługa ext3fs była wbudowana w kernel, a nie jako moduł, ponieważ partycja boot jest w ext3)
make dep
make clean
make bzImage
make modules
make modules_install (jako root, i nie "make module_install"!!!)

/sbin/mkinitrd /boot/initrd-2.6.9 2.6.9

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.9
cp System.map /boot/System.map-2.6.9
ln -s /boot/System.map /boot/System.map-2.6.9

W pliku /boot/grub/grub.conf należy dodać wpis:
title Red Hat Linux (2.6.9)
root (hd0,0)
kernel /vmlinuz-2.6.9 ro root=LABEL=/
initrd /initrd-2.6.9.img

Błędy:
>> depmod can't open /lib/modules/2.4.18-14/modules.dep for writing
>> Warning: you may have to install module-init-tools
Rozwiązanie jest takie jak w warning - zainstalować module-init-tools. Przeprowadzi przez to ten poradnik: http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/How_to_Compile_2_6_kernel_for_RedHat_9_8 w krokach 2:4.

Grub: nie można znaleźć pliku, error 15. Czy na pewno przekopiowany jest bzImage i System.map ? Ścieżka powinna zaczynać się od /, a nie od /boot/ - patrz NOTICE w grub.conf.
Błąd "pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed" oznacza, że obsługa ext3fs nie jest wbudowana w kernel. Trzeba ją dodać z pomocą "y" w kroku z make menuconfig.

Teraz pozostaje tylko restart i użycie nowego kernela. Mi podczas wstawania systemu wyskoczyła tylko niepokojąca mnie informacja o jakichś problemach z eth0, ale do projektu nie będzie mi to potrzebne najprawdopodobniej, więc na razie się nie martwię.