Archive for Haziran 2008
Kernel panic – not syncing: Fatal exception in interrupt
Bilgisayarınızı açtığınızda hafızaya ilk yüklenen yazılım olan çekirdek, sistemin beyni durumundadır. Donanımları kontrol eder ve hafızayı yönetir. Kullandığınız tüm yazılımların donanımla iletişim kurmasını sağlar. Çekirdek bu görevleriyle, kullandığınız dağıtımın en önemli bileşeni durumundadır. Dağıtım geliştiriciler çekirdeğe yaptıkları yamalara ve ayarlamalara çok dikkat ederler, çünkü attıkları her adım dağıtımlarının performansını etkileyecektir.
Peki bu çekirdek denen şey nasıl derlenir? www.kernel.org adresinden çekirdeği almakla başlayan macera nasıl devam eder, kod hangi aşamalardan geçerek bilgisayarınızı çalıştırabilir bir hale gelir? Yazımızda, vanilla kernel diye tabir edilen ham çekirdeğin, nasıl edinilip sıfırdan ayarlanarak kullanılabilir bir hale geleceğini inceleyeceğiz. Çeşitli dağıtımlarda çekirdek derlemenin farklı yolları olabilir, bu durum yazımızın ilgi alanına girmiyor…
Linux çekirdeğinin kodları dünya üzerinde pek çok yansıda tutuluyor. Ülkemiz üniversitelerinin yansılarında da bulmak mümkün. Kodları edinmenin en pratik yolu www.kernel.org adresine girip “The latest stable version of the Linux kernel is” satırının karşısındaki mavi renkli “F” harfine tıklamak olacak. Bu F harfi “full source” yani kararlı sürümün tüm kaynak kodları anlamına geliyor. Diğerlerinin ne anlama geldiğini öğrenmek için bir kaç satır aşağıya bakabilirsiniz.
Kaynak kodları indirdikten sonra sıra onu gerekli dizine açmaya gelecek. Bu işi de aşağıdaki komut yardımıyla yapabilirsiniz, indirdiğiniz dosyanın bulunduğu dizinde kullanmanız gerek. Tabii bu ve sonraki işlemler sırasında root kullanıcı olarak hareket etmeniz gerekiyor.
# tar -xjvf linux-2.6.30.tar.bz2 -C /usr/src
Bu yazının yazıldığı sırada en güncel çekirdek sürümü 2.6.30, siz indirdiğiniz çekirdek sürümüne göre yukardaki komutta değişiklik yapacaksınız. İşlemin başarıyla tamamlanıp tamamlanmadığından emin olmak için aşağıdaki gibi bir kontrol yapabilirsiniz:
# cd /usr/src/
# ls
# linux-2.6.30
ls komutundan sonra linux-2.6.30, daha doğrusu indirdiğiniz çekirdeğin adını görüyorsanız işlem muhtemelen tamamdır. Unutmadan, bu komut o dizindeki başka şeyleri de listeleyebilir. Siz sadece indirdiğiniz çekirdeğe dikkat edin.
Şimdi sıra sembolik bağlantı oluşturmakta. Aşağıdaki komut ile yapabilirsiniz:
# ln -sfn linux-2.6.30 linux
Bundan sonra /usr/src/linux dizininde çalışacağız. Artık bu dizine geçebiliriz:
# cd /usr/src/linux
Şimdi kritik bir noktaya geldik. www.kernel.org’dan indirdiğiniz kodlar ham yani yama yapılmamış halde. Dağıtım geliştiren ekipler, dağıtımın gereksinimlerine, hedeflerine ve güvenlik önlemleri için çekirdek koduna yama uygularlar. Bunu yapmayan dağıtım yoktur. Eğer çekirdekte olmayan bir özelliği sisteminize dahil etmek istiyorsanız yama uygulamalısınız. Örneğin: tuxonice ya da resmi çekirdek ağacında olmayan dosya sistemleri…
# patch -p1 < /home/purak/patch_dosyasi.patch
Bu komutu verirken /usr/src/linux dizini altında olmanız şart. Ayrıca yamanın bulunduğu tam adresi girmeniz gerekiyor. Bu işlemin süresi yamanın büyüklüğüne göre değişir. Eğer linux klasörü altında .rej uzantılı dosyalar varsa devam ediyordur. Eğer bu yamayı kaldırmak isterseniz şu komutu verin.
# patch -p1 -R < /home/purak/patch_dosyasi.patch
Tüm bu işlemlerden sonra en kritik aşamaya geliyoruz. Artık çekirdeği ayarlamanın zamanı geldi. Peki neden çekirdeği ayarlaya ihtiyacı duyarız? Bu soruya iki cevap verilebilir:
1-Dağıtımla birlikte gelen çekirdek, donanımızı aşan pek çok sürücüyle beraber gelir. Çekirdeği hafifletmek için yenisini ayarlayıp derleyebilirsiniz. Bu, açılış süresinde ufak bir hızlanma olarak geri dönebilir.
2-Dağıtımınızın kullandığı çekirdek eski olabilir ve siz yeni sürümde desteklenen donanımınıza kavuşmak isteyebilirsiniz. Ya da güncel sürüm sizi ilgilendiren yeni özellikler barındırıyordur.
Ve pandoranın kutusunu açın! Aşağıdaki komut, çekirdeği ayarlayabileceğiniz bir konsol tabanlı menü açacak.
# make menuconfig
Çekirdek derlemenin amacına ulaşması için onu ayarlamayı bilmeniz gerekiyor. Eğer bunu yapmayı bilmiyorsanız sisteminiz açılmaz ya da bazı fonksiyonlardan mahrum kalabilirsiniz. Şu aşamada size yardımcı olmamı beklemeyin, çünkü bu iş makinadan makinaya göre değişiklik gösterir. Ama sabit disk sürücülerini çekirdeğe gömmeniz ve grafik arabirim ile alakalı ayarları tam yapmanız gerektiğini söyleyebilirim. Bu konuyla ilgili çeşitli kaynaklar internet üzerinde mevcut.
Eğer ayarlamaları yaptığınıza inanıyorsanız derlemek için gereken komutu verebilirsiniz.
# make && make modules_install
Bu komut çekirdeği ve modülleri derleyecektir. Derleme işlemi bittikten sonra çekirdeği /boot dizini altında almamız gerekiyor, bu işlemi aşağıdaki gibi yapabilirsiniz:
# cp arch/i386/boot/bzImage /boot/linux-2.6.30-plo
Artık çekirdeği GRUB’a ekleyebiliriz. Aşağıdakine benzer satırları menu.lst dosyasına eklemeniz gerek. Çekirdek sürümünü ve sabit diskle alakalı kısımları kendinize göre değiştirmeniz gerek.
title=Linux 2.6.30-plo
root (hd0,0)
kernel /boot/kernel-2.6.30-plo root=/dev/sda1
Sistemi yeniden başlatmadan önce yaptığınız işleri kontrol edin ve kapalı kodlu ekran kartı sürücüleri gibi bileşenleri yeni çekirdeğe göre derlediğinize emin olun. Eğer bunu yapamazsanız özgür X.Org sürücülerini kullanacak şekilde ayarlamalar yapmayı unutmayın. Yoksa grafiksel ortam açılmaz!
Şimdi parmaklarınızı çapraz yapın ve sistemi yeniden başlatın, ilk denemeden sonraki 10 deneyde muhtemelen kernel panic hatası alacaksınız. Yani bilgisayarınız açılmayacak ve eski çekirdekle devam edeceksiniz. Ama eğer üzerine giderseniz sorunları çözüp yeni çekirdeğinizi kullanabilirsiniz.



