Gömülü Linux
  • Giriş
  • Linux Çekirdeği
    • Gömülü Sistemlerdeki Kullanımı
    • Geliştirme Süreci ve Versiyonlar
    • Kod Sözdizim Rehberi
    • Konfigürasyon Süreci ve Kbuild Sistemi
    • Derleme ve Çapraz Derleme
    • Initramfs İmajının Eklenmesi
    • U-boot İmajı Haline Getirilmesi
  • Gömülü Sistemlerde Boot Yükleyiciler
    • U-boot
    • RedBoot
    • ARM Mimarisinde Açılış Süreci
  • Linux Açılış Süreci
    • Kernel Açılış Süreci
    • Kullanıcı Kipine Geçiş - Init Süreci
  • Kök Dosya Sistemi Oluşturma
  • Initramfs İle Erken Kullanıcı Kipi
  • Devtmpfs Dosya Sistemi
  • NfsRoot Çalışma Yöntemi
  • Çapraz Derleme ve Gerekli Ekipmanlar
  • NOR, NAND, eMMC ve Flash Tabanlı Depolama
  • Memory Technology Device - MTD Katmanı
  • Unsorted Block Images - UBI Katmanı
  • Gömülü Sistemlerde Kullanılan Dosya Sistemleri
    • JFFS2 Dosya Sistemi
    • YAFFS2 Dosya Sistemi
    • UBIFS Dosya Sistemi
    • Cramfs Dosya Sistemi
    • Squashfs Dosya Sistemi
    • Minix Dosya Sistemi
    • FAT Dosya Sistemi
    • Ext2,3,4 Dosya Sistemi
  • Watchdog Kullanımı
  • CPU Frequency Scaling
  • Buildroot
  • Android Platformu
    • Geliştirme Ortamının Hazırlanması
    • İnşa Süreci
  • Sistem Çağrıları
  • I2C Protokolü
    • I2C Protokolünün Tanıtılması
    • Linux Altında I2C İşlemleri
    • Board Seçimi ve İlk İşlemler
    • Sıcaklık Sensörünün Seçilmesi
    • Sıcaklık Değerinin Yazılımsal Olarak Elde Edilmesi
  • Strace Kullanımı
  • GNU Build Sistemi Araçları
    • Make
    • Autoconf, Automake
  • Orange Pi Zero
    • Orange Pi Zero Teknik Özellikleri
    • Gerekli Araçların Elde Edilmesi
    • U-boot Derleme Süreci
    • Kernel Derleme Süreci
    • Wifi Desteği - Problemli Senaryo Örneği
    • Dosya Sisteminin Hazırlanması
    • SD Kartın Hazırlanması
    • Cihazın Açılması
  • Raspberry Pi
    • Raspberry Pi 2 Teknik Özellikleri
    • Açılış Süreci
    • Gerekli Araçların Elde Edilmesi
    • Kernel Derleme Süreci
    • U-boot Derleme Süreci
    • Dosya Sisteminin Hazırlanması
    • Cihazın Açılması
    • NFS Root Çalışma
    • Sistem Konfigürasyonu
    • Raspberry Pi 3
  • Board Spesifik Kılavuzlar
    • Hawkboard
    • Olimex A20
    • TI DM6446 EVM
    • BeagleBoard
    • BeagleBoneBlack
    • Savage Board
  • EKLER
    • Seri Konsol Kullanımı
    • TFTP Sunucu Kurulumu
    • NFS Sunucu Kurulumu
    • TI işlemcilerinde DSP kullanımı
      • C6Run
      • DSP Testi
    • Ubuntu Sanal Makine Performansı
Powered by GitBook
On this page
  • Kaynak Kodun Edinilmesi
  • Derleme
  • Modüllerin Kök Dosya Sistemine Aktarılması

Was this helpful?

  1. Raspberry Pi

Kernel Derleme Süreci

PreviousGerekli Araçların Elde EdilmesiNextU-boot Derleme Süreci

Last updated 5 years ago

Was this helpful?

Kaynak Kodun Edinilmesi

Raspberry Pi için kernel patch'leri adresinde yayınlanmaktadır.

Kernel kodunu aşağıdaki gibi git ile klonlayarak indirebilirsiniz:

$ git clone https://github.com/raspberrypi/linux

Yukarıdaki clone işlemi tüm kernel kaynak kodunu geçmiş commit tarihçesi ile birlikte indireceğinden 1 GB'ın üzerinde download gerektirecektir. Alternatif olarak commit tarihçesinden vazgeçip son halini daha küçük bir download gerekecek şekilde aşağıdaki gibi de indirmeniz mümkündür. Ancak bu şekilde indirme işlemi yaptığınızda sonradan git pull yapamazsanız.

$ git clone --depth=1 https://github.com/raspberrypi/linux

Derleme

Derleme sürecine başlamadan önce kullanacağınız toolchain'in PATH ortam değişkeni içerisinde yer aldığından emin olunuz. Eğer değilse öncelikle toolchain ana dizinine geçip aşağıdaki komutları uygulayınız:

$ cd tools
$ export PATH=$PWD/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/:$PATH

Sonraki adımda Raspberry Pi 2 board'umuz için kernel kodu içerisinden çıkan öntanımlı konfigürasyonu uygulayalım:

$ make ARCH=arm bcm2709_defconfig

Kernel kodu ile birlikte gelen öntanımlı konfigürasyon dosyasında ihtiyaç duyulmayacak pek çok bileşen bulunmaktadır (Kullanmayacağımız network protokolleri, aygıt sürücüleri, dosya sistemleri gibi). Bu noktada mevcut kernel konfigürasyonu üzerinde ek iyileştirme çalışmaları için menuconfig aracını aşağıdaki gibi çalıştırıp konfigürasyonu iyileştirebilirsiniz:

$ make ARCH=arm menuconfig

Konfigürasyon süreci tamamlandıktan sonra derleme aşamasına geçebilirsiniz. Öncelikle sıkıştırılmış kernel imaj dosyası olan zImage'i üretelim:

$ make ARCH=arm CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- -j4 zImage

İşlem bitiminde aşağıda dosya yolunda arch/arm/boot/zImage dosyası oluşacaktır:

Sonrasında Flattened Device Tree modeli için kullanılacak olan dtb dosyasını üretmek amacıyla aşağıdaki komutu çalıştırın:

$ make ARCH=arm CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- -j4 dtbs

İşlem tamamlandığında arch/arm/boot/dts/bcm2709-rpi-2-b.dtb dosyası oluşacaktır.

Sıradaki işlem konfigürasyon sürecinde modül olarak derlenmesi seçilen kernel modüllerinin derlenmesidir. Bunun için aşağıdaki komutu çalıştırın:

$ make ARCH=arm CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- -j4 modules

Modüllerin Kök Dosya Sistemine Aktarılması

Derlenmiş olan modüllerin uygun bir dizin hiyerarşisi altında toplanması gereklidir.

İlerleyen bölümde Raspberry Pi 2 board'umuz için kendi kök dosya sistemimizi /opt/rpi dizini altında oluşturacağız. Kernel modülleri ise çalıştığı sistemde /lib/modules dizini altında kernel versiyon numarası adıyla oluşturulan dizin ve alt dizinlerinde yer alacaktır.

Modülleri uygun dizin yapısıyla çıkartmak için gereken make hedefi modules_install şeklindedir. INSTALL_MOD_PATH değişkenini geliştireceğimiz kök dosya sistemini barındıracak olan ana dizini gösterecek şekilde ayarlamak suretiyle, modüllerin kurulumunu gerçekleştirebiliriz. Bunun için kullanacağımız komut aşağıdaki gibi olacaktır:

$ make ARCH=arm CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- \
INSTALL_MOD_PATH=/opt/rpi modules_install

İşlem bitiminde /opt/rpi/lib/modules/4.4.13-v7+ ve /opt/rpi/lib/firmware dizin yapıları oluşacaktır. Derlemiş olduğunuz kernel versiyonuna göre ilkinin ismi değişkenlik gösterebilir. Derleme yaptığınız kernel içerisine dahil etmiş olduğunuz ve kernel kodu ile dağıtıma uygun firmware bileşenleri içeren modüllere ait firmware dosyaları da kendilerine özgü dizin hiyerarşisi içerisinde oluşturulacaktır.

İşlemler tamamlandıktan sonra /opt/rpi/lib/modules/4.4.13-v7+ ve /opt/rpi/lib/firmware dizinlerini incelemenizi öneririz.

https://github.com/raspberrypi/linux