[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: