Development Android Geliştirici Rehberim - Defconfig | DTB Çekme Kılavuzu

Zenlty

Firmware Team Leader at OMIX Mobile Technology
VIP Üye
Katılım
23 Haz 2018
Mesajlar
1,118
Tepkime puanı
5,737
Puanları
113
Yaş
22
Konum
Beşiktaş , İstanbul , Türkiye
Çevrimdışı
SPSOvudC3j2p0_jxUr_jchnIFUzGxwfpQ8taqLpaEqd5XFU56Hxz8GhOhpM3iaTFXgRa8HxJnW--h4Abb5u46woJJInFPUBOxxeFsanrWMS2RDsYGswn-DEqzKfFjzmEKt5ZjpVo


Defconfig - DTB Çekme İşlemleri

29.04.2021



Eğitmen : Azat Barış MIZRAKLI

Gereksinimler
  1. Linux İşletim Sistemi ( Ubuntu 16.04 veya Mint önerilir)
  2. Android Image Kitchen
  3. Split Appended Dtb
  4. Ikconfig
  5. Boot Image veya zImage (Kernel)
  6. Android Debug Bridge (ADB) Aracı
  7. Gerektiği takdirde Windows İşletim Sistemi (7 üzeri önerilir)
  8. Gerektiği takdirde emmcdl , QSaharaServer , fh_loader
  9. Gerektiği takdirde MediaTek Smart Phone Flash Tool (1824 üzeri önerilir)
  10. Linux için Git
Not : Boot dosyası için yaptığımız bütün işlemleri recovery dosyası içinde yapabilirsiniz. Buradaki boot dosyasındaki işimizin amacı içerisinden kerneli elde etmektir. Kernel hem boot hem de recovery’de bulunabilir.

Not : Linux işletim sisteminde ‘$’ ile başlayan kodlar terminal ekranına yazılacaktır.

Not : Windows İşletim sisteminde ‘$’ ile başlayan kodları gerekli yerlerde açıklamalı olarak belirteceğim.

Boot Dosyasını Elde Etme
  1. Bu aşamada birçok yol mevcuttur. Cihazınızda root var ise android debug bridge ile yedek alabilirsiniz. Bunun için uygulama marketinde çeşitli yedekleme araçları mevcut.
  2. Buna alternatif olarak android debug bridge ile yedek alabilirsiniz.
Android Debug Bridge ile Boot Partition Bulma ve Yedek Alma (ROOT)
Kullandığınız işletim sistemine göre adb aracını indirin.

Cihazınızın USB Hata Ayıklama modunu açıp ; Linux kullanıyorsanız dosya aktarım modu, Windows kullanıyorsanız Yalnızca Şarj modunda Orijinal USB Kablosu ile bağlayın.

Ardından cihazın recovery partitionuna ulaşmamız gerekiyor ki yedek alma imkanını elde edelim. Öncelikle gerekli izinleri alalım.

Android, Linux tabanlı çekirdek kullanmış olduğundan linux komutlarımızı kullanabileceğiz. Gerekli izinleri almak için öncelikle adb aracını açalım.

Bütün işlemleri yaparken cihazımızın ekranın açık olarak takip edelim.

Not : Windows işletim sistemi kullanan kullanıcılar $ ile başlayan kodları Minimal ADB & FastBoot aracına yazacaktır. $ clear komutu yerine cls komutunu kullanın (ADB Windows Version)


$ adb devices

8zN0_jaAZWQZaF5PQ3ftrSY03tXTL3fHqREDx-Fss6vXDFVEcdB6T5-Ye1QDXSJkRY3jljeViLDIXtB_yd70oUUarhV1jaVg4PAe2YoHri7g1sk2VxoLudZSK1hwiAr8zLqZ5wYC


Komutu verelim. Size karşılık olarak wcnsde tanımlı olan seri numarası ile şu komuta benzer çıktı verecektir.

$ serino device



cf_lDrACcHMBE652oi2DVa8WqiU3UKLMW8K39yaLnnsA5d6q924GNqJ_86npiELUZWTm1z19Uj5LlXt4Y9jON6oqRs_fanB5t9z_yn3hCXo2iJmVNkTjQ6ngQQdlgc_x3Wn8R_B-



Devices komutunu gördükten sonra

$ adb shell

$ su

yg9uKStPGllbYaHGKmfRjo--ZXNmD4TkofNBgPzsh980iKVSLicy2ctjUzF0EQwxqODQ8JYLwW0nHnaIRB_GmbtaAcKCbbnLgNIE-Z9n30S_jkDJHIXXt19xBPoI_tuP2B0bRHfk


Yazarak linux komutlarını kullanabileceğimiz altyapıya erişim sağlayalım. Ve root iznini cihazda onaylayalım.

$ ls

$ cd dev

$ ls

Çıkan çıktıya göre devam edin. Genelde partitionlar /dev/block/bootdevice/by-name/partitionadi şeklinde olur bu yüzden devam edelim.

Enb1TlxPyNg022WMMwyPF6_qQ8ywS4GSbLP7GJKBok3KYTO8c9v9QJPQgPSoPbCzLHsPbEO01AEo1D7BwAVQcLmsFVvzQj4_Ez_NxtERzKdZbCSK6obyytDprnI_k3x2z65BHUIF


Bootdevice gördük devam ediyoruz.

$ cd bootdevice

$ ls

5Gv9LH51AEsyviDYRZwvAHJyYgRtv5YRdswAsHMtxDv43DnvWO4-hGUQYmCdpM-IBiCjJm6zvZSpsqTLA8EPnY6uZifWRVMnmhwXCJQOcjK7OWSg-rj8DIe7IdTpt2jDiVjK7E3L


Buradaki asıl partition isimleri mmcblk0p ile başlar ancak isimlerini göremediğimiz için devam edelim.

‘By-num’ ile ‘By-name’ arasında kaldıysanız kesinlikle by-name seçin. Sebebi ise isimlerinin içerisinde yazmasıdır.

$ clear

Ekranı temizledik.

$ cd by-name

$ ls

YmvfjahAMIp8GfT_kR1NUwwfE01qBmBUH5EGjdjW4fDMVjxTUwVGLUYxWU_Ur_PVZeNlDLCCxBw-XzBaDnAJJWN47lwmsS7_5kUE8Ey7wvMlQclNSYTBcDLvedA8MRGZ9wdEx5ac


Partitionların hepsini listeledik. Bizim istediğimiz boot dosyası. Kernel recovery dosyasında da bulunabilir ikisinden birisini seçin. Şimdi izlediğiniz yolu not alın. Eğer unuttuysanız linux size yardımcı olacaktır.

S0x6k6eGNepcku0bPT__DGkLipRyTfWf1eYYbYy_x0hWK4VXwOqM9jNcIvtkeIp3E8ui-UYNWUU4cX6gcCXPIPI7educsu9P9d3zX9f_20qNetkT0iFT6FE4eYvbcjhWdYQcKoK7


/dev/block/bootdevice/by-name

Yolunu izledik. Şimdi istediğimiz partitiona göre yol alırsak :

/dev/block/bootdevice/by-name/boot

Bu partition yolunu not alınız.

Not : Eğer cihazınız Android 8 veya üzeri ise Treble A/B desteği olma ihtimali vardır. Bu durumda sizin partition listenizde boot yerine ‘boot_a’ ‘boot_b’ partitionları görebilirsiniz. Siz bu durumda ikisinden birisini yedek alabilirsiniz.

/dev/block/bootdevice/by-name/boot_a

Bu partition yolunu not alınız.

Linux işletim sistemi ve altyapılarında partition/bölüm yedeklerini almak için kullandığımız komut ‘dd’ komutudur. Bu komutu kullanarak ilgili partitionun yedeğini alacağınız.


Partition Yolundan Yedek Alma
$ clear

Komutu ile ekranı temizleyelim.

$ dd if=/partitionyolu of=/sdcard/boot.img

Komutu ile yedek alacağız aşağıdaki komuta benzer olacaktır.

$ dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img

hQ7w5ExQ6jfCEz8esTkPS7yOO7Eyjtsu5x3Rd445jZiH4TtHFqOfuPl9pRgV7qYT_tV1JW-3xKpoAY1ZmFjcjf8U8zct4dE5dnq-hCyAADBV7Gsv4kN1UZvcv-jIZVWcM8H3GAk6


Şimdi aldığınız yedek cihazınızın dahili hafızasında boot.img adıyla bulunacaktır. Kontrol edecek olursak ;


Boyuttan tasarruf etmek için kodun yanına bs=4096 komutunu ekleyebilirsiniz.

Kodunuz şuna benzer olacaktır.

$ dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img bs=4096


b4ahSFgoIeESaz6-90nzpucGAsg4r9uDyggzOvEjBg1G8E8Y0gUnH8icERWo49cWAP5bv7IQmpeAzcuEAHasmDFcMGpvFzgp79lva1SbtQb4Ge8tYx97zxqyN4rDE2YZ-yjF2243


Başlangıçta bilgisayardan bağladığınız zaman dahili depolamada göremeyebilirsiniz. Dosya yöneticisi uygulaması ile manuel olarak telefon üzerinden kontrol edin bulunuyorsa cihazı yeniden başlatarak veya isim değiştirerek görünmesini sağlamanız mümkün.


İşlem tamamlandı ise Ayrıştırma bölümüne geçebilirsiniz.


TWRP Recovery ile Boot Dosyası Elde Etme

Eğer cihazınızda TWRP Recovery bulunuyorsa Backup > Boot yolu ile yedek alabilirsiniz.

Aldığınız yedek TWRP>Backup>Serino>Tarihliklasör>Boot.ext4 olacaktır.

Boot.ext4 adını boot.img olarak değiştirin.

İşlem tamamlandı ise Ayrıştırma bölümüne geçebilirsiniz.


EMMCDL ile Boot Dosyası Elde Etme (Qualcomm SnapDragon)
EMMCDL kullanmak için Windows işletim sistemine sahip olmalısınız.

EMMCDL aracını githubdan indirelim.

EMMCDL kullanmak için programmer(firehose) sahip olmalısınız ve bu cihaza özel olur.

Firehose dosyasını emmcdl klasörüne atalım ardından cihazı edl moda alalım

Shift tuşuna basarak sağ tık yaparak CMD ekranını açalım.

Emmcdl -p COMx -f firehose.mbn -d boot -o boot.img

Yazarak yedeği alabilirsiniz.

COMx EDL modda olan cihazın port adıdır. Aygıt yöneticisinden görebilirsiniz. (COM3) gibi.


SP Flash Tool ile Boot Dosyası Elde Etme (MediaTek)
MediaTek işlemcili cihazınız varsa SP FLash Tool kullanabilirsiniz.

Linux ve Windows alternative bulunuyor.

Cihazı kapatıp program ve driverleri kurduktan sonra SP Flash Tool’u açalım

İşlemcinize göre scatter dosyasını seçip ReadBack menüsüne girelim.

Ardından ADD butonuna basalım ve start - end hex değerlerini scatter dosyası içinden bakarak yazalım. Ardından ReadBack tuşuna basalım ve cihazı bağlayalım.

İşlem tamamlandı ise Ayrıştırma bölümüne geçebilirsiniz.
 
Ayrıştırma

Ayrıştırma için öncelikle bir klasör açalım. Ardından Android Image Kitchen indirelim.
Mobile - Linux - Windows alternative bulunuyor.
Bu anlatımda Linux kullanacağım.
Aşağıdaki linklerden aracı indirelim ardından elde ettiğimiz boot.img dosyasını içine atalım.
Windows kullanıcıları unpackimg.bat dosyasına çift tıklayarak ayrıştırılabilir.
Linux kullanıcıları ise :
Boot.img dosyasını kopyaladıktan sonra aşağıdaki kodu verdikten sonra ayrıştırılabilirler.
$ sudo ./unpackimg.sh
67PC9Rc0uQ5djRlvxTJq0yeLyHzjUqUjpXX9f2daMHXerIccyMRQY1LWf3eTgfgaS2eSuxwNOQwbISG5XzKyCW_IYGIwMZ9CQZMuKdCjPoy9DX-BzsgPiTu4FFXQK4PfEOHwp1pQ

I-9F7hCxmusnqPrxGxYXE_L7rhIU2dwcWUtTs3rwBmswHggDz5veZpD8Ly-_uFQJ_lrtfltVnnwbZur9rZfdgoTS9nFJY5dFCa3Bc_zwHRmURtlVhSkmMuubar9808X1C7VtQE47


Bundan sonrasında Linux , Windows fark etmeksizin kerneli elde etmek için split_img klasörüne girelim.
LBZfhEKCSVE9gq0XI7wHzPSoiRt-6QVGYIYavTDRrGQcP5c8T326w1LegKksxTbS7EF0IlLuQeFUQm9Sx63GuGhW5DusqaHZozXo_H93khY58e2pmb2QmH-eAhMHFoePV_4DVG0n

Görüldüğü gibi zImage diğer adıyla kernel dosyasını elde ettik.
İşlem tamamlandı ise DTB Ayıklamaya geçelim.
Bundan sonrasında sadece Linux kullanmak zorundasınız !

DTB Ayıklama
Bunun için yeni bir klasör açalım. Adını dtb koyalım. $ cd dtb/
Komutu ile klasör içine girip aşağıdaki komutu vererek gerekli araçları indirelim.
$ git clone https://github.com/dianlujitao/split-appended-dtb
Araçların indirilmesinin tamamlanmasını bekleyelim.
Ardından terminali izinleri ayarlayalım.
$ sudo chmod a+x split-appended-dtb
Varsa Linux kullanıcı şifrenizi girdikten sonra devam edelim.
Aldığımız kernel dosyasının adını değiştirip zImage koyalım ve klasörün içine atalım.
$ ./split-appended-dtb zImage
Komutunu vererek DTB Ayrıştırmasını yapalım
9JSIKL-9PUoGpbILI_bXxJFpPgoyYap458sQPPNzag8NsGJ8iW13pQFX8kVTdAotkcDw0t2HaOylctC3Xsp6MiUafhCLYNXds-WOc0yDqCQxV-7kBJsAWCdzhUmxEGUeSR9DmGGp

İşlem tamamlandıysa defconfig ayıklamaya geçelim.

DEFCONFIG Ayıklama
Bunun için gerekli aracın indirilmesini sağlayalım.
Aynı klasör içinde terminalden aşağıdaki kodu yazalım.
$ wget https://github.com/torvalds/linux/raw/master/scripts/extract-ikconfig
$ chmod a+x extract-ikconfig
Yazarak izinleri alalım.
$ ./extract-ikconfig zImage > defconfig
Yazarak defconfig’i elde edelim.

7kLrjoPGeSYcymAhlxcamV7PZ7IsMxdmGYrptli1o4g7gUFwjmio99UnZK6m3GH57PqWaKqiVnNNnM2itkcDNfK6LS-I5lfkjIX8ZtSgy8DODyWNLs1mvFXfLZzzWJKLCJ48YvAc

Am4s6AWudU8NsrqlpkYonyDunj_3ag7cI6ssE4m7cXeQb8t0oWhSNmw9NIAk0a3K3i_5Gy8DCYcM-t5CnSi3PywYcimW6zBHQYCmZJYUDRVLyaPyALS8mXpR7O6HCnW33NEpPH2i

Boot Image elde etme , Ayrıştırma , DTB ve DEFCONFIG ayıklama bu şekildedir.
 
 

Ekli dosyalar

  • Defconfig - DTB Çekme Kılavuzu.zip
    1.8 MB · Görüntüleme: 7
Dtb dts nedir hocam yani dtb yi dts ye çevirmek ne anlama geliyor
 
Geri
Üst Alt