Linux Çekirdek (Kernel) Derleme

Bu yazı Mesih Veysi Kılınç kardeşimin (Hocamın) GTÜ’de bizi kırmayıp, vakit ayırıp, verdiği “Çekirdek Derleme” eğitiminden aldığım notların sistematik bir derlemesidir.

Gömülü sistem, linux tariflerini yapmadan. Neden Linux, Neden işletim sistemi sorularına cevap vermeden hemen işe koyulalım ve toolchain diyerek başlayalım.

Toolchain Yükleme,  11.02.19

Toolchain Araç zinciri bize hedef sistem için kod derlememizi sağlayan bir derleyici. Fakat bu derleyiciyi hedef sistemde değilde Host (kendi bilgisayarımızda) çalıştıracağımız için bunun bir adıda cross compailer oluyor.

Toolchain indirilebilecek siteler:

  • https://www.linaro.org/
  • https://toolchains.bootlin.com/

Toolchain nasıl bulunur ?

Toolchain için elinizde bulunan boardın işlemci modeli ni öğrenin (örn: ARM Cortex A7 ) : https://en.wikipedia.org/wiki/ARM_architecture#Cores sitesinden Mimariyi bulunuz (Örnek sonucu: ARMv7-A) sonra ise web sayfasından o mimariyi seçin.

m, eabi, abi, hf gibi ekler anlam ifade ediyor. Eğer seçenekleriniz var ise ayrıntılı öğrenmekte fayda var.

Derlemeyi yapacağımız bir ana klasör oluşturalım ve içine toolchain isimli bir klasördaha oluşturalım.

mkdir /opt/cekirdegim
chmod 777 /opt/cekirdegim
mkdir /opt/cekirdegim/toolchain

Şimdide toolchaini indirelim :
cd /opt/cekirdegim
wget https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf–glibc–stable-2018.11-1.tar.bz2

Ve zipten çıkaralım.
tar -xjf armv7-eabihf–glibc–stable-2018.11-1.tar.bz2

Derleyiciyi PATH e ekleyim ki gcc çağrısını yapabiliyor olalım
PATH=/opt/cekirdegim/toolchain/armv7-eabihf–glibc–stable-2018.11-1/bin:$PATH

derlemek için git ile u-boot reposunu indirelim:

git clone https://github.com/u-boot/u-boot.git -b v2019.01 –depth 1

v2019.01 : branch tag name, yani o branchi indiriyor.
–depth sayesinde sadece o commiti indirmiş tüm ağacı indirmemiş oluyoruz.

executablenin hangi sistem için derlendiğini görebilirsiniz.

Uboot Derleme

Devam edeeceğiz

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir