Çekirdek derleme (uçbirim üzerinden)

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

Uçbirim üzerinden çekirdek kurulumu

Derleme için gerekli paketleri kuruyoruz.


sudo apt-get install build-essential bin86  kernel-package libqt3-headers libqt3-mt-dev wget libncurses5  libncurses5-dev


Derleme işlemini gerçekleştireceğimiz dizine geçiyoruz


cd /usr/src 


Yapacağımız işlemler için root yetkilerine ihtiyacımız olacak. Root yetkilerini alıyoruz.


sudo -s


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


linux-2.6.33.3.tar.bz2 isimli indirdiğimiz çekirdeği arşivden çıkartıyoruz


tar xjvf linux-2.6.33.tar.bz2


Kerneli açtığımız dizine geçiyoruz


cd linux-2.6.33.3


Eski ayarları temizliyoruz


make mrproper


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

4e2376a0.png


Modüllerin bağımlılıklarını ve gerekli olan dosyaların yerinde olup olmadığını kontrol ediyoruz


make dep


Yapılandırma dosyasında kullanılmayan fazlalıkları temizliyoruz


make clean


Çekirdek imajını derliyoruz.


make bzImage


Modülleri derliyoruz.


make modules


Çekirdek Modülü olarak işaretlediğimiz modülleri /lib/modules dizini içine yüklüyoruz


make modules_install


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


Ç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


System.map dosyasını /boot dizinine kopyalıyoruz


cp System.map /boot/System.map-KERNEL_VERSION


Sembolik bağ oluşturuyoruz.


ln -s /boot/System.map-KERNEL_VERSION /boot/System.map


/usr/src dizine geçiyoruz


cd ..


www.kernel.org adresinden indirdiğimiz linux-2.6.33.3.tar.bz2 arşivini siliyoruz.


rm linux-2.6.33.3.tar.bz2


Buraya kadar sorunsuz işlemleri gerçekleştirdiyseniz derlediğimiz çekirdeği 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 


Derlenen çekirdeğin Grub2'ye eklenmesi

Grub2 ayar dosyamızın yedeğini alıyoruz.


sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.yedek


Yaptığımız değişikliklerin aktif olması için yazma izni alıyoruz.


sudo chmod +w /boot/grub/grub.cfg


Grub2 ayar dosyamızı açıyoruz.


sudo gedit /boot/grub/grub.cfg


Grub2 ayar dosyamızı açıyoruz.


sudo gedit /boot/grub/grub.cfg


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 

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

Yaptığımız değişiklikleri güncelliyoruz.


sudo update-grub2