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.



Komutun doğru şekli (2.6 çekirdekler için)
make && make modules_install && make install
Tom Pompadil
Haziran 11, 2008 at 7:58 pm
Selam Tom
Ben şu şekilde kullanıyorum işe yarıyor.
make && make modules_install
Senin eklediğin make install kısmı tam olarak ne iş yapıyor?
buraxezer
Haziran 11, 2008 at 8:11 pm
2.6 serisi çekirdekler için sırasıyla :
make : make menuconfig veya make xcongig komutu vasıtasıyla yapılandırdığımız çekirdeği, modülleri ile birlikte derler yani makine diline çevirir.
make modules_install : Çekirdek yapılandırması esnasında yani Çekirdek Modülü olarak işaretlediğimiz modülleri /lib/modules/2.6.****** dizini içine yükler.
make install : vmlinuz çekirdek imajını, System.map ve çekirdek yapılandırma dosyası olan config dosyasını /boot dizini içine yükler ve 3.5 luk flopy diskete önyükleyici kurmak isteyip istemediğimizi sorar.
Tom Pompadil
Haziran 11, 2008 at 8:42 pm
Teşekkürler Tom Pompadil…
buraxezer
Haziran 12, 2008 at 9:06 am
İlerde bende böyle olacağım
bakalım. Yazın için teşekkürler Kpss den sonra deneyeceğim bakalım öğrencin becerebilcekmi senin yazdıklarını uygulamayı
asukaki
Haziran 24, 2008 at 2:19 pm
Ben neyim ki sen de böyle olacaksın? Sıradan bir Linux kullanıcısıyım ben… Buradaki püf nokta kernel ayarları ama hazır olarak alırsan sadece komut vermeye bakar bu iş…
buraxezer
Haziran 29, 2008 at 7:34 am
Merhaba dediğiniz işlemleri aynen yapmama ve hiç bir hata mesajı almama rağmen sistem açılmıyor.Grub menüsünden yeni kernelli pardusu seçiyorum ve sadece siyah bir ekran görüyorum.Bir süre sonrada caps lock ile scroll lock lambaları aynı anda yanıp yanıp sönmeye başlıyorlar.Bu nedir bir kernel panic belirtisi mi?Eğer öyleyse en az 10 kere falan bu kerneli derledim.Hepsinde de niye böyle siyah ekran görüyorumr?Cevap verirseniz çok makbule geçer.
blackcavalry
Ağustos 25, 2008 at 8:05 pm
Evet, siz bir kernel panic madurusunuz!
Kerneli kendiniz mi ayarladınız? Eğer cevap evet ise bu ayarlama meselesinin kolay olmadığını bilin. Kafanıza göre bir konfigurasyon belirleyemezsiniz. Kernel ayarlamak bir bilgi ve dikkat işidir.
Grub ayarlamalarını doğru olduğuna emin misiniz? Initramfs gerekmediği halde grub.conf’da ya da menu.list içinde tanımlanmışsa açılmayabilir. Tam tersi de doğrudur…
Başarılar…
buraxezer
Ağustos 25, 2008 at 10:03 pm
Öncelikle cevap için teşekkürler.Ben aslında make oldconfig komutunu kullanayım dedim ama bir sürü soru soruyor şunu yapayım mı bunu yapayım mı diye bende configi açıp olduğu gibi kaydetmeyi denedim ama hep hüsran.Grubum doğru orda bir problemim yok.Bir sizin anlattığınız gibi kopyalamayı deneyeyim bakalım olacak mı?
blackcavalry
Ağustos 26, 2008 at 10:32 am
Tekrar merhaba./boot klasörünün altında config dosyası yok?!?!Hatta bütün sistem dosyaları arasında arattım ama öyle bir şeye rastlamadım.Nolcak benim bu kernelin hali:S
blackcavalry
Ağustos 26, 2008 at 7:57 pm
O dosyanın orda işi yok zaten. /usr/src/linux dizini altında bulunur o…
buraxezer
Ağustos 26, 2008 at 8:49 pm
İyide yukarda bootun içinde config dosyası var demişsiniz?
blackcavalry
Ağustos 26, 2008 at 8:51 pm
>Pardus’un /boot dizini altında bulunan .config dosyasını(gizlidir)
Pardus 2007′de orada bulunuyordu galiba(işi ne acaba orda) Fakat şu an kullandığım Gentoo’da /usr/src/linux dizininde… Ve normali de budur.
buraxezer
Ağustos 26, 2008 at 8:56 pm