Bilgi Exynos Kernel Derleme Kılavuzu

  • Konbuyu başlatan cıyanogen
  • Başlangıç tarihi
C

cıyanogen

Çevrimdışı
kg1FHv.png


Bu işlemden doğabilecek sorunlardan şahsım ve GSM Turkey Forum sorumlu tutulamaz.


kcIDz1.png

Bu kılavuz ile kaynak kodlarına sahip olduğunuz Exynos kerneli derleyebileceksiniz.

Kaynak kodlarını Samsung Open Source Release Center sayfasından ya da çeşitli geliştiricilerin Git hesaplarından elde edebilirsiniz.

Ricam eğer bu kılavuzdan en ufak bir yardım aldıysanız sadece konunuzun teşekkürler kısmında benim ve @mbtt hocamın da ismi geçsin.


kg16Dy.png
Gizli İçerik
Derleme
- Toolchain Kurulumu
Android Git Sunucusundan yahut Codesourcery gibi kaynaklardan indirebilirsiniz. Ben Android Git sunucusundan Github hesabıma aktardığım aşağıdaki toolchaini kullanıyorum:
* ciyanogen/android_prebuilts_gcc_linux-x86_arm_arm-eabi-4.8
Unutmayın kerneliniz daha önce hangi toolchain derlenmişse muhakkak o sürümü tercih edin. Başka sürümü seçmeniz kernelin derlenmemesine ya da derlense bile açılmamasına sebep olabilir. Sürümü öğrenmek için Terminal emülatörüne aşağıdaki kodu yazabilirsiniz:
Kod:
cat /proc/version

Alacağınız çıktı şuna benzer bir şey olacaktır:
Kod:
Linux version 3.10.9-hirqiz (ciyanogen1893@EcemOkulaGel) (gcc version 4.8 (GCC) ) #1 SMP PREEMPT Sat May 25 18:19:30 +03 2019

Buradaki (gcc version 4.8 (GCC) ) kısmı size bu kernelin GCC 4.8 ile derlendiğini gösterir. Siz de kendi kernelinizin çıktısına bakarak toolchain sürümünüzü öğrenebilirsiniz.

- Kernel Kaynağını Çıkarma :
Kernel adında bir klasöre kernel kaynağınızı çıkarın. Elinizde kernel kaynağınız yoksa opensource.samsung.com ya da çeşitli geliştiricilerin github hesaplarından elde edebilirsiniz.

- Derlemeye Hazırlanma :
Toolchain kaynağınızı ~/ dizininde toolchain isimli bir klasör açıp onun içine yerleştirin. Daha sonra:
$ export CROSS_COMPILE=/home/KULLANICIADINIZ/toolchain/bin/arm-eabi- (Kendi kullandığım toolchaine göre örnek verdim siz başka toolchain kullandıysanız kendinize göre düzenleyin.)
$ export JOBS=# (# işaretinin manası (bilgisayar çekirdek sayınız X 2) demektir. Örneğin 4 çekirdekli bir sisteme sahipseniz 8 yazacaksınız.)
$ export ARCH=arm -> (32 bit bir kernel derlediğimizi sisteme tanıtmak için bu komutu veririz. Cihazınız 64 bit ise arm yerine arm64 yazın.)

- Derleme Faslı :
$ cd kernel

$ make j1xlte_02_defconfig (Buraya siz kendi defconfiginizi gireceksiniz. Defconfiginizin ismini arch/arm/configs dizininde bulabilirsiniz.)

$ rm -rf .git -> Eğer commit geçmişi ile çalışmayacaksanız .git klasörünü silin aksi takdirde kernel sürümünde -dirty diye yazı çıkacaktır. Bence kötü görünüme sebep oluyor. Commit geçmişiyle çalışıyorsanız yani değişikliklerinizi Github gibi sitelere yüklüyorsanız kesinlikle silmeyin!

$ make -j64 --> Bu komut derlemeyi başlatır. 64 yerine siz üstte "export JOBS=#" kısmında # yerine yazdığınız sayıyı gireceksiniz.

Derleme başlayacak fakat Samsung Opensource kaynakları hatalı olduğundan yığınla hata düzeltmelisiniz. :)

Çıkan Dosyalar :

- Kernel : arch/arm/boot/zImage -> Dizininde olacaktır.

Temizlik İçin :

Aşağıdaki komutu vermeniz yeterli.

$ make clean && make mrproper
Kernel toplanmıştır. Elimize sağlık.
Bazı Defconfig Ayarlamaları
Kernel Local Version Ayarlama
Basit bir işlem. Kernel sürümündeki 3.10.9-XXXXX yazısını ayarlamaya yarar.

Kernel defconfiginizi (arch/arm/configs dizininde) açın.
Kod:
CONFIG_LOCALVERSION=""

Üstteki satırı bulun. Bu satır sizde olmayabilir, el ile ekleyebilirsiniz. Örneğin kernelinizde 3.10.9-SedenAblanınYeri yazması için
Kod:
CONFIG_LOCALVERSION="-SedenAblanınYeri"
olarak ayarlayın. Tırnak içerisini kendinize göre düzenleyin fakat başındaki çizgiyi silmeyin. Localversionda "ı" gibi Türkçe karakterler kullanmak sorun çıkartmıyor bizzat denedim. Hatta dilerseniz WhatsApp Web gibi yerlerden kopyala-yapıştır yaparak emoji bile koyabilirsiniz, yapanlar var.

Samsung MTP Kapatma

Exynos Recovery Port kılavuzunda da aynı işleme yer vermiştim. Buraya da yazayım.

Defconfiginizde (üstte nerede bulacağınızı belirttim) şu satırları arayın
Kod:
CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE=y
CONFIG_USB_ANDROID_SAMSUNG_MTP=y
ve bu satırları
Kod:
# CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE is not set
# CONFIG_USB_ANDROID_SAMSUNG_MTP is not set
bunlarla değişin. Bu TWRP içerisinde MTP sorununu çözer.

Samsung KNOX/TIMA devredışı bırakma

Bu işlem gereksiz Samsung KNOX/TIMA servislerini devredışı bırakır.
Defconfiginizi açın ve şu satırları arayın:

Kod:
CONFIG_TIMA=y
CONFIG_KNOX_KAP=n
CONFIG_KNOX_NCM=y
CONFIG_TIMA_LOG=y
CONFIG_SEC_DEBUG_TIMA_LOG=y
CONFIG_SEC_RESTRICT_ROOTING=y
CONFIG_SEC_RESTRICT_SETUID=y
CONFIG_SEC_RESTRICT_FORK=y
CONFIG_SEC_RESTRICT_ROOTING_LOG=y

Bu satırları şunlarla değişin:
Kod:
# CONFIG_TIMA is not set
# CONFIG_KNOX_NCM is not set
# CONFIG_KNOX_KAP is not set
# CONFIG_TIMA_LOG is not set
# CONFIG_SEC_DEBUG_TIMA_LOG is not set
# CONFIG_SEC_RESTRICT_ROOTING is not set

Bu ayrıca KNOX kaynaklı derleme sorunlarını da çözer.

DM-Verity Kapatma

Defconfiginizi açın ve şu satırları arayın:
Kod:
CONFIG_DM_VERITY=y
Bu satırı şununla değişin
Kod:
# CONFIG_DM_VERITY is not set

Kernelde Çıkan Kullanıcı Adı ve Bilgisayar İsmini Düzenleme
Normal şartlarda Linux üzerinde kernel derlerken mevcut bilgisayarın kullanıcı adını ve bilgisayar adını kernele ekler. Fakat siz kernelde o ismin değil de başka ismin görünmesini istiyorsunuz.
Örneğin kullanıcı adı user, bilgisayar adı computer olan bir bilgisayarda derleme yapıyoruz, kernelde user@computer olarak gözükecek. Fakat kernelde ciyanogen1893@DerUntergang olarak gözükmesi için aşağıdaki kodları kernel derlemesinden önce vermeniz yeterli. Sonucu kerneli cihazınıza yükledikten sonra görebileceksiniz. :)

Kod:
export KBUILD_BUILD_USER="ciyanogen1893"
export KBUILD_BUILD_HOST="DerUntergang"

Tırnak içlerini kendinize göre düzenleyin.

İlerleyen zamanlarda başka ayarlamaları da ekleyeceğim.
 
hocam ben custom rom için kernel derlemek istiyorum ama open.source.samsung da benim telefonun source u yok :/
 
hocam ben custom rom için kernel derlemek istiyorum ama open.source.samsung da benim telefonun source u yok :/
Benim cihazında yoktu mail gönderdim 2 ay içinde kodları samsung open source paylaştılar yalnız üsteki arkadaşın dediği gib samsun kaynak kodları hatalı bu hataları nasıl düzelticez onu çözemedim
 
Geri
Üst Alt