> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Kernel

> Linux Kernel

<Note>
  Bu bölümde Gemstone geliştirme kartlarında bulunan Linux Kernel özelleştirmeleri, yeni sürücülerin
  aktifleştirilmesi gibi konular ele alınacaktır.
</Note>

<Tip>
  Bölüm bitiminde aşağıdaki konularda bilgi sahibi olacaksınız.

  * Gemstone Linux Kernel derlemek
  * Yeni donanım sürücüsü aktifleştirmek
</Tip>

Gemstone kartları için Linux kernel de tıpkı U-Boot gibi Yocto tarafından derlenmektedir.
meta-gemstone katmanı içerisinde [T3 Gemstone Linux Git reposunu](https://github.com/t3gemstone/linux)
kullanan `linux-t3-gem-o1-rt_6.1.bb` isminde bir tarif bulunmaktadır. Daha eski veya yeni bir versiyona
geçilecekse ilgili versiyonun commit ID'si alınıp tarif içerisinde yer alan `SRCREV` değişkeni
güncellendikten sonra aşağıdaki komutlar çalıştırılarak derleme başlatılabilir.

<Warning>
  Aşağıda yer alan komutların hepsi distrobox içerisinde çalıştırılacaktır. Dolayısıyla ilk olarak
  `devbox shell` --> `task box` komutlarını çalıştırmalısınız. Ayrıca Yocto ortamına geçiş yapabilmek
  için `m:oeinit t3-gem-o1` komutunu çalıştırmalısınız.
</Warning>

<Note>
  Bu bölümde T3-GEM-O1 kartı üzerinden anlatım yapılacaktır. Farklı bir makine için
  yapılanları uygulayacaksanız makine ismini uygun şekilde değiştiriniz.
</Note>

```bash theme={"system"}
bitbake virtual/kernel
```

Yukarıdaki işlemler tamamlandıktan sonra `<sdk-dizini>/build/t3-gem-o1/deploy-ti/images` klasöründeki
`Image` isimli dosyayı karttaki `/boot` klasörüne kopyalayarak geliştirme kartı üzerinde testlerinizi
yapabilirsiniz.

### Menuconfig ile Konfigürasyon Güncelleme

Çeşitli donanım sürücülerini aktif/deaktif edecekseniz veya kernel konfigürasyonunu değiştirecekseniz
(kısacası Kconfig ile tanımlanmış özellikleri değiştirecekseniz) menuconfig arayüzünü kullanabilirsiniz.

<AccordionGroup>
  <Accordion title="Menuconfig ekranının açılması">
    ```bash theme={"system"}
    bitbake -c menuconfig virtual/kernel
    ```

    <Frame>
      <img src="https://mintcdn.com/t3gemstone-754bcb96/oFj6OOIrYSQVBj-3/images/kernel-menuconfig.png?fit=max&auto=format&n=oFj6OOIrYSQVBj-3&q=85&s=2b593579fe25cdb739f770e2fe334449" width="824" height="539" data-path="images/kernel-menuconfig.png" />
    </Frame>

    İstediğiniz ayarları değiştirdikten sonra aşağıdaki pencere açılana kadar
    `ESC` tuşuna basınız. Ardından "Yes" butonunu seçiniz.

    <Frame>
      <img src="https://mintcdn.com/t3gemstone-754bcb96/oFj6OOIrYSQVBj-3/images/kernel-menuconfig-save.png?fit=max&auto=format&n=oFj6OOIrYSQVBj-3&q=85&s=35cdd08d4ff72342650dd76e85ad9b58" width="824" height="539" data-path="images/kernel-menuconfig-save.png" />
    </Frame>
  </Accordion>

  <Accordion title="Değişikliklerin kalıcı hale getirilmesi">
    Bu aşamada kerneli tekrar derleyebilirsiniz ancak yaptığınız değişiklikler sadece
    sizin bilgisayarınızda kalır ve build klasörünü temizlemeniz durumunda kaybolurlar.
    Bunu engellemek için aşağıdaki adımları takip ediniz.

    ```bash theme={"system"}
    bitbake -c savedefconfig virtual/kernel
    cp /home/workdir/build/tmp-musl/work/t3_gem_o1-gemstone-linux-musl/linux-t3-gem-o1-rt/6.1.83+git/defconfig \
        /home/workdir/yocto/meta-gemstone/dynamic-layers/meta-ti/recipes-kernel/linux/linux-t3-gem-o1-rt-6.1/
    ```

    Yukarıdaki komutlar sayesinde menuconfig ekranında yaptığınız değişiklikler
    `yocto/meta-gemstone/dynamic-layers/meta-ti/recipes-kernel/linux/linux-t3-gem-o1-rt-6.1/` dizinindeki
    `defconfig` dosyasına kaydedilmiş olacaktır
  </Accordion>

  <Accordion title="Kernelin yeniden derlenmesi">
    ```bash theme={"system"}
    bitbake -c clean virtual/kernel
    bitbake virtual/kernel
    ```

    Yukarıdaki komutlar başarıyla tamamlandıysa `<sdk-dizini>/build/t3-gem-o1/deploy-ti/images`
    dizininde Image dosyası oluşacaktır.
  </Accordion>
</AccordionGroup>

### Kaynak Kodlarında Değişiklik Yapılması

Metin editörünüzde `<sdk-dizini>/build/tmp-musl/work-shared/t3-gem-o1/kernel-source`
klasörünü açınız. İstediğiniz kısımları değiştirdikten sonra aşağıdaki komutlarla kerneli derleyiniz. Yaptığınız
değişiklikleri kaybetmemek adına [T3 Gemstone Linux reposu](https://github.com/t3gemstone/linux) için kendi
forkunuzu oluşturup oraya gönderebilirsiniz.

```bash theme={"system"}
bitbake virtual/kernel
```

Derleme bittikten sonra `<sdk-dizini>/build/t3-gem-o1/deploy-ti/images` dizininde oluşan dosyaları
SD kartta `/boot` dizinine kopyalayınız. Bir problemi çözdüyseniz veya yeni bir özellik eklediyseniz
topluluğun da faydalanabilmesi için [T3 Gemstone Linux reposuna](https://github.com/t3gemstone/linux)
pull request oluşturabilirsiniz.
