Linux

Linux Çekirdeği (Kernel’ı) Nasıl Derlenir?

Merhaba arkadaşlar. Sizlere bazı durumlarda bizlere lazım olan Linux Çekirdeği’ni (Kernel’ını) derlemeyi anlatmaya çalışacağım. Bu yazıyı yazarken bu adresi referans aldım. Ben bağlantıdaki yazının güncellenmiş bir halini yazmaya çalıştım. Buradan screenshoot isimli yazara da teşekkürlerimi iletiyorum.

Normalde siz Linux çekirdeği üzerine inşa edilmiş bir dağıtım kurduğunuz zaman bu dağıtım çekirdek uygulamaları geliştirebileceğiniz şekilde gelmez. Bu nedenle siz çekirdek uygulamaları yazamazsınız. Çekirdek uygulamaları yazabilmeniz için mutlaka çekirdeği derlemeniz gerekir. Çekirdek derlemedeki bir başka amacınız da sistem performansını arttırmak istemeniz olabilir. Yalnız derleme uzun ve biraz da zor bir iş. Şimdi kendinizi hazır hissediyorsanız başlayalım. Yazımız adım adım gidecek.

  1. Buradan Linux çekirdeğinin en son stabil sürümünü indiriyoruz. Ben bu yazıyı yazarken son stabil çekirdek 3.16.5 idi.                                                                                                                                                                                    Screenshot from 2014-10-11 22:39:32Latest Stable Kernel 3.17 yazıyor ama siz işi garantiye almak için 2. satırdaki stable sürümü indirin.
  2. Ben bu dosyayı Downloads klasörüne indirdim. Siz de indirdiğiniz yere göre şu komutu düzenleyerek dosyayı /usr/src dizinine kopyalayın:
  3. cd komutu ile /usr/src dizinine geçiş yapın:
  4. tar.xz uzantılı dosyayı şu komutla klasöre çıkartın:
  5. Klasöre çıkarttığınız dizine girin:
  6. Eski ayarları temizlemek için şu komutu verin:
  7. Sisteminizi optimize etmek için yapacağımız işe geldi sıra. Ben bu aşamada hiç bir şey yapmadan geçtim. Ama siz sisteminizi optimize etmek istiyorsanız komutu kullanabilirsiniz:


    Screenshot from 2014-10-11 23:27:52
  8. Fazlalıkları temizlemek için şu komutu verin:
  9. Sıra geldi elimizdeki çekirdeği derlemeye. Yaklaşık olarak 30 dakika sürecek bu işlem için şu komutu verin ( İşlemciniz daha iyiyse daha kısa sürebilir 🙂 ):
  10. Ardından derlemenin en uzun işlemi olan modül derlemesini gerçekleştirmek için şu komutu verin:
  11. Şu komutla çekirdek modüllerini modül kütüphanesine taşıma işlemini yapın:
  12. Şu komutla modüllerin ve sistemin düzgün çalışmasını sağlıyoruz:
  13. Şimdi vereceğiniz şu komutla derlediğiniz çekirdeği boot dizinine kopyalayın:
  14. System.map dosyasını boot dizinine kopyalayın:
  15. Sembolik bağ oluşturmak için şu kodu girin:
  16. Şimdi sıra derlediğimiz çekirdeğin grub ekranında çıkmasını sağlamaya geldi. Öncelikle şu komutla grub ayar dosyasını açın:
  17. Yeni bir terminal açın ve şu komutu verin:

    Bu komutu verdikten sonra gelen çıktıdan UUID değerini alacaksınız ve grub dosyasını düzenlerken kullanacaksınız. Ayrıca hd0 mı yoksa hd1 mi olduğuna yine buradan karar vereceksiniz. sda ise hd0 sdb ise hd1 yazmanız gerekiyor. Bu komutu herhangi bir dizin içindeyken verebilirsiniz.
    Screenshot from 2014-10-11 23:38:38
  18. Şimdi buradan aldığımız değerler ile grub dosyasını düzenleyelim. Az önce açtığınız grub dosyasında ### BEGIN /etc/grub.d/10_linux ### satırını bulun ve altına şu metni ekleyin:

     
  19. Ve son olarak şu komutu verin ve ardından sistemi yeniden başlatın. Yeniden başlattığınızda generic kelimesine sahip boot seçeneğinden sistemi boot edin:

Çekirdek(kernel) derleme yazım burada bitiyor. Başka bir yazıda görüşmek üzere sağlıcakla kalın.

  • ufuk

    Peki bu kerneli nasıl silebilirim? Nasıl tamamen kaldırabilirim?

    • Çekirdeği tamamen kaldırmaktan kastınız nedir? İşletim sistemi o çekirdek olmaksızın çalışmaz bildiğiniz üzere.

  • Can

    İlkay Bey merhaba,
    make modules_install işleminden sonra make install komutunu verdiğimizde sonraki aşamaalrı otomatik olarak gerçekleştiğini okudum. Öncelikle bu bilginin doğruluğunu öğrenmek istiyorum. ayrıca make install işleminin ardından grub ayar dosyasını açtığımda içi boş görünüyor. reboot işleminden sonra da init ramdisk kısmında pc donuyor ve boot işlemini tamamlayamıyor. benzer bir sorunla karşılaştınız mı veya öneriniz var mı?

    • Merhabalar.
      Benim bildiğim kadarı ile make install komutunu verdikten sonra işlemler otomatik yürümüyor. Yine manuel olarak devam ettirmeniz gerekiyor.
      Diğer yandan Grub dosyasının boş olması bir soruna dikkat ediyor. Path yazımlarında bir / vs. eksikse asıl dosya yerine kendisi boş bir dosya oluşturup onu gösteriyor.

  • Gençlik Merkezi

    make menuconfig komutunda hata veriyor

  • Gençlik Merkezi

    İlkay Bey merhaba,

    make menuconfig komutunda hata veriyor
    root@genclik-VirtualBox:/usr/src/linux-4.3.5# make menuconfig
    HOSTCC scripts/basic/fixdep
    HOSTCC scripts/kconfig/mconf.o
    In file included from scripts/kconfig/mconf.c:23:0:
    scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: Böyle bir dosya ya da dizin yok
    #include CURSES_LOC
    ^
    compilation terminated.
    make[1]: *** [scripts/kconfig/mconf.o] Hata 1
    make: *** [menuconfig] Hata 2

    • İlkay Günel

      Merhabalar.
      O komut donanım optimizasyonu için kullanılıyor. Yazıda da belirtildiği üzere ben o komutu optimizasyon yapmadığım için bir işlem yapmadan geçmiştim.
      Eğer bilginiz yoksa ya da donanım optimizasyonu yapmayacaksınız o komutu geçebilirsiniz.
      Öte yandan Linux Çekirdeği’nin şu anda 4.4.1 sürümü çıkmış. Ben yazdığımda 3.16.5 sürümü vardı, çekirdek derleme adımları çok değişkenlik gösterebiliyor.
      Kolay gelsin.