Re: yeni kernel
* Vasfi UYSAL <vasfi@med.ege.edu.tr> [2003-07-22 16:14:06+0300]
> bi makinada 2.6.-test1 kernele ac patchi yapip derleyip make-kpkg ile
> deb pakedini olusturdum
> dpkg -i ile bu yeni kernelei kurdugumda /boot altinda initrd image i
> yaratmadigini farkettim
> zaten liloyu duzenleyip reboot ettigimdede
> kernel panic : unable to mout root fs gibi bi hata veriyor
>
> bu boot etmemesi initd olmamasi ile ilgili olabilirmi
> yada initrd olusturacak sekilde nasil derlemeliyim cekirdegi derlerken
> icinde bu seceengi sectigimi hatirliyorum
>
> cevaplar icin simdiden tesekkurler
Kesinlikle bir FAQ problemiyle karsilasmissiniz :-) Maalesef Debian
kernel paketiyle gelen belgelerde anlatacagim sorunlar yeterince alti
cizilerek vurgulanmamis.
Probleminizin buyuk bir olasilikla `initrd' ile alakali oldugunu
dusunuyorum. Problem su:
Bu listede daha onceleri de defalarca belirttigim gibi Debian kernel
paketleri (`stock kernel') `initrd' ile calisacak sekilde
duzenlenmistir. (Bunu yapmak zorundalar, aksi halde bir yigin degisik
makinanin farkli ihtiyaclarina cevap veremezler.) Hazir bir
kernel-image paketi kurdugunuzda sorun olmuyor, kurulum sirasinda
`initrd' imajini paket betikleri olusturuyor (bu paketler zaten
`initrd-tools' bagimliligi gosterir). Peki siz kernel derlemek
istediginizde ne oluyor?
Kernel source paketinin ontanimli yapilandirmasinda da `initrd'li
duzenleme mevcut. Kernel yapilandirmasinda (`make menuconfig')
yaptiginiz degisikliklerin bu duzenlemeyi kirmadigini varsayarak
`make-kpkg kernel_image' ile paketi olusturdugunuzu dusunelim. Bu
durumda -benim anladigim odur ki- yaratilan paketin kurulum betiklerinde
(postinst) `initrd' imajlarini olusturan kisimlar aktiflenmiyor. Neden?
Cunku `make-kpkg'yi `--initrd' secenegiyle calistirmadiniz ;-)
Cozumlere gelince:
(1) Bu bir oneri: bundan sonra yapacaginiz cekirdek derlemelerinde
`initrd'yi kullanmayin. Makina sizin ve her ozelligini taniyorsunuz.
Fakat dikkat buyurun eger `initrd' kullanmayacaksaniz ozellikle `fs',
(eger kullaniliyor ise) `scsi' vb disk erisimiyle ilgili modulleri
cekirdegin icine almalisiniz. Ve tabii `initrd', `cramfs' seceneklerini
kaldiracaksiniz. Bunu yaptiginizda boyle sorunlarla karsilasmazsiniz.
Zaten ozel cekirdek derlemenin en onemli esprisi bu.
Su anki durum icin:
(2) Stock kernel'i (1)'de belirtilenlere uymadan `initrd' ile
derliyorsaniz, (bundan sonra) `--initrd' secenegini unutmayin:
make-kpkg --initrd ...
(3) Eger bunu yapmayi unutmus ve tekrar `make-kpkg' asamasina girmek
istemiyorsaniz (muhtemelen sizin sorununuz bu) soyle bir hack
onerebilirim (test etmedim, sorumluluk kabul etmem :-), kurdugunuz
pakete iliskin:
/var/lib/dpkg/info/kernel-image-2-???.postinst
betigini acin (tam ismi her ne ise artik). Tahminim dogru ise soyle bir
satir goreceksiniz:
my $initrd = ''; # initrd kernel
Bu satirda asagidaki degisikligi yapin:
my $initrd = "YES"; # initrd kernel
Dilerseniz daha legal bir yontem olarak, `initrd' imajini elle siz
olusturabilirsiniz:
mkinitrd -o /boot/initrd.img-<version> /lib/modules/<kernel-version>/
Bu islemlerden once `initrd-tools' paketinin sistemde kurulu olduguna
emin olun. Bu arada /etc/lilo.conf'da `initrd=/boot/initrd.img' gibi
bir satir da olmali (initrd.img'in sembolik bag oldugunu kabul
ediyorum). Bu ayari zaten yaptiginizi *varsayiyorum*.
Butun bunlar sorununuzu cozmuyorsa yanlis tahmin yuruttum demektir :-)
Boyle bir halde cekirdek yapilandirmasi sirasinda `initrd'
duzenlemelerini kirmis olabilmeniz de mumkun. Eger oyleyse `make
menuconfig'de o kisimlari elden gecirmenizi oneririm.
Cogu zaman oldugu gibi) uzun bir mail yazdik yine, okuyanlara kulfet
verdiysek affola ;-)
--
roktas
Reply to: