* Vasfi UYSAL <[EMAIL PROTECTED]> [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

