Anasayfa > Linux > Ubuntu’da Çekirdek (Kernel) Derleme

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


  1. Şimdilik yorum yok.
  1. Şimdilik geri bağlantı yok
Yorum yapabilmek için giriş yapmalısınız.