Ubuntu’da Çekirdek (Kernel) Derleme
Bu yazımda Ubuntu 10.04 sürümü üzerinde çekirdek derlemeyi adım adım anlatacağım. Şu an kendi derlediğim güncel çekirdeği sorunsuz kullanıyorum.
Neden böyle bir ihtiyaç duyduğumu soracak olursanız mevcut çekirdek ile usb aygıtımı kullanamıyordum. Bazı modülleri eklemem gerekiyordu. Mecburiyetten çekirdek derlemem gerekti.
Lafı fazla uzatmadan kuruluma geçeyim.
KONSOLDAN ÇEKİRDEK KURULUMU
# 1
Derleme için gerekli paketleri kuruyoruz.
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget libncurses5 libncurses5-dev
# 2
Derleme işlemini gerçekleştireceğimiz dizine geçiyoruz
cd /usr/src
# 3
Yapacağımız işlemler için root yetkilerine ihtiyacımız olacak. Root yetkilerini alıyoruz.
sudo -s
# 4
www.kernel.org adresinden en son “stable” sürümüne bakıyoruz. Ben bu yazıyı oluştururken 2.6.33.3 sürümü vardı. Ben anlatımı bu çekirdek sürümü için yapacağım. Şimdi bu çekirdeği indiriyoruz.
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.3.tar.bz2
# 5
linux-2.6.33.3.tar.bz2 isimli indirdiğimiz çekirdeği arşivden çıkartıyoruz
tar xjvf linux-2.6.33.tar.bz2
# 6
Kerneli açtığımız dizine geçiyoruz
cd linux-2.6.33.3
# 7
Eski ayarları temizliyoruz
make mrproper
# 8
Konfigürasyon menüsüne geçiyoruz. Burada sisteminizin ihtiyaçlarınıza göre gerekli modülleri ekleyip çıkartabilirsiniz. Bu adımda çok dikkatli olmanızı öneriyorum. Herşeyi kernel çekirdeğine dahil ederseniz çekirdek şişer ve sistem açılışı gecikir. Derleme süresi uzar. Bazı durumlarda hata vermesi muhtemeldir.
“*” Simgesi kernel çekirdeğine dahil edilecek öğeleri işaret ediyor.
“M” harfi özelliğin modül olarak derlenmesi gerektiğini belirtiyor.
“——>” Ana kategori olduğuna işaret ediyor. Enter tuşuna basarak alt bölümlere geçebiliriz. İşlemimizi bitirdikten sonra klavyeden yön tuşlarını kullanarak exit üzerine gelip entere basıp yaptığımız değişiklikleri yapılandırma dosyasına kaydediyoruz.
make menuconfig
# 9
Modüllerin bağımlılıklarını ve gerekli olan dosyaların yerinde olup olmadığını kontrol ediyoruz
make dep
# 10
Yapılandırma dosyasında kullanılmayan fazlalıkları temizliyoruz
make clean
# 11
Çekirdek imajını derliyoruz. Bende yaklaşık 15 dakika kadar sürdü
make bzImage
# 12
Modülleri derliyoruz. Bu derleme yaklaşık 1.5 saat kadar sürdü
make modules
# 13
Çekirdek Modülü olarak işaretlediğimiz modülleri /lib/modules dizini içine yüklüyoruz
make modules_install
# 14
Kök dosya sisteminin bağlanabilmesi için gerekli çekirdek modülleri, Kök dosya sisteminde bulunan; ancak bu DS bağlanmadan önce yüklenmesi gereken modüller için initrd isimli paketimizi oluşturuyoruz.
mkinitramfs 2.6.33.3 -o /boot/initrd.img-2.6.33.3-generic
# 15
Çekirdek imajını /boot dizinine kopyalıyoruz
cp /usr/src/linux-2.6.33.3/arch/i386/boot/bzImage /boot/vmlinuz-2.6.33.3-generic
# 16
System.map dosyasını /boot dizinine kopyalıyoruz
cp System.map /boot/System.map-KERNEL_VERSION
# 17
Sembolik bağ oluşturuyoruz.
ln -s /boot/System.map-KERNEL_VERSION /boot/System.map
# 18
/usr/src dizine geçiyoruz
cd ..
# 19
www.kernel.org adresinden indirdiğimiz linux-2.6.33.3.tar.bz2 arşivini siliyoruz. Fazlalık benim için sorun olmaz derseniz kalabilirde 
rm linux-2.6.33.3.tar.bz2
Buraya kadar sorunsuz işlemleri gerçekleştirdiyseniz derlediğimiz kerneli kullanmak için grub/grub2′e eklememiz gerekiyor.
Grub için /boot/grub/menu.lst
Grub2 için /boot/grub/grub.cfg dosyalarını kullanacaksınız. Grub versiyonunu öğrenmek için aşağıdaki komutu kullanabilirsiniz.
dpkg -l | grep grub
DERLENEN ÇEKİRDEĞİN GRUB2′e EKLENMESİ
# 1
Grub2 ayar dosyamızın yedeğini alalım
sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.yedek
# 2
Yaptığımız değişikliklerin aktif olması için yazma izni alıyoruz
sudo chmod +w /boot/grub/grub.cfg
# 3
Grub2 ayar dosyamızı açıyoruz
sudo gedit /boot/grub/grub.cfg
# 4
Açılan sayfada ### BEGIN /etc/grub.d/10_linux ### satırını buluyoruz ve 1 satır altına şunu ekliyoruz.
menuentry 'Ubuntu, Linux 2.6.33.3-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set 57a40b28-08a8-4fe5-ba57-7fb4fc063d83
linux /boot/vmlinuz-2.6.33.3-generic root=UUID=57a40b28-08a8-4fe5-ba57-7fb4fc063d83 ro quiet splash
initrd /boot/initrd.img-2.6.33.3-generic
}
menuentry 'Ubuntu, Linux 2.6.33.3-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set 57a40b28-08a8-4fe5-ba57-7fb4fc063d83
echo 'Loading Linux 2.6.33.3-generic ...'
linux /boot/vmlinuz-2.6.33.3-generic root=UUID=57a40b28-08a8-4fe5-ba57-7fb4fc063d83 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.33.3-generic
}
# 5
Eklediğimiz satırdaki 57a40b28-08a8-4fe5-ba57-7fb4fc063d83 kısmını ve set root=’(hd0,6)’ kısmını ubuntunun kurulu olduğu bölüme göre değiştirmeniz gerekiyor. Mevcut kernelinizin olduğu satırlara bakıp gerekli değişikliği yapabilirsiniz. Yada şu komutla öğrenebilirsiniz.
sudo blkid
Gerekli değişiklikleri yaptıktan sonra dosyamızı kaydedip kapatıyoruz.
# 6
Yaptığımız değişiklikleri güncelliyoruz
sudo update-grub2
Bilgisayarı yeniden başlatın ve Ubuntu, Linux 2.6.33.3-generic ile giriş yapın.
DERLENEN ÇEKİRDEĞİN GRUB’A EKLENMESİ
# 1
Grub ayar dosyamızın yedeğini alalım
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.yedek
# 2
Grub ayar dosyamızı açalım.
sudo gedit /boot/grub/menu.lst
# 3
Açılan sayfada ## ## End Default Options ## satırını buluyoruz ve 1 satır altına şunu ekliyoruz.
title Ubuntu, kernel 2.6.33.3-generic uuid 57a40b28-08a8-4fe5-ba57-7fb4fc063d83 kernel /boot/vmlinuz-2.6.33.3-generic root=UUID=57a40b28-08a8-4fe5-ba57-7fb4fc063d83 ro quiet splash initrd /boot/initrd.img-2.6.33.3-generic quiet title Ubuntu, kernel 2.6.33.3-generic (recovery mode) uuid 57a40b28-08a8-4fe5-ba57-7fb4fc063d83 kernel /boot/vmlinuz-2.6.33.3-generic root=UUID=57a40b28-08a8-4fe5-ba57-7fb4fc063d83 ro single initrd /boot/initrd.img-2.6.33.3-generic
# 4
Eklediğimiz satırdaki uuid 57a40b28-08a8-4fe5-ba57-7fb4fc063d83 kısımlarını ubuntunun kurulu olduğu bölüme göre değiştirmeniz gerekiyor. Mevcut kernelinizin olduğu satırlara bakıp gerekli değişikliği yapabilirsiniz. Yada şu komutla öğrenebilirsiniz.
sudo blkid
Gerekli değişiklikleri yaptıktan sonra dosyamızı kaydedip kapatıyoruz.
# 5
Yaptığımız değişiklikleri güncelliyoruz
sudo update-grub
Bilgisayarı yeniden başlatın ve Ubuntu, Linux 2.6.33.3-generic ile giriş yapın.
Kaynaklar:
http://forum.ubuntu-tr.org/index.php/topic,2268.0.html
http://ubuntuforums.org/showthread.php?t=311158
http://www.gentoo.org/doc/tr/handbook/handbook-x86.xml?part=1&chap=7
http://www.belgeler.org/howto/kernel-nasil_derlenir.html







