[MAGP] Kaynak Koddan Kernel Derleme

Sponsorlu Bağlantılar

HakanSeven12

HakanSeven12

Üye
    Konu Sahibi
[MAGP] Kaynak Koddan Kernel Derleme
Artık konularıma kendi bloğumdan devam edeceğim. Bloğa alttaki resime tıklayarak ulaşabilirsiniz.



Hazırlıklar


[MAGP] [Anlatım] Kaynak Koddan Rom Derleme

Bu konudaki "Hazırlıklar" bölümünün yapılmış olması lazım :)

Bir teminal açın.

Kod:
mkdir android
cd android
mkdir kernel

Kaynak Kodlar ve Araçlar

İlk önce derleme ve boot.img araçlarını indirelim.

Kod:
cd android/kernel
git clone git://github.com/DooMLoRD/android_prebuilt_toolchains.git toolchains
git clone git://github.com/sakindia123/boot-image-tools.git bootimagetools

Çeşitli markaların kendi sitelerinde paylaştığı kodları kullanabilirsiniz veya XDA gibi sitelerdeki geliştiricilerin verdiği kernel kodlarınıda kullanabilirsiniz. Aşağıdaki linklerden kendi cihazınızın kernel kodlarını indirin.

HTC
Samsung
Google
LG
Sony
Motorola
Lenovo
Huawei
ZTE
Acer
Asus
Meizu

İndirdiğiniz dosyayı zipten çıkarın ve dosyaları android/kernel dizinine açacağınız bir klasöre atın. Mesela ben "android/kernel/cihazadı_androidversiyon_kernel" şeklinde oluşturuyorum.
örnek: android/kernel/falcon_4.4.4_kernel

Düzenlemeler (Bu kısım isteğe bağlı)

Overclock/Undervolt

Bu terimler işlemci hızı arttırma ve voltaj ayarı yarı yapma anlamını taşır. Bu noktada küçük bir problemimiz var. Ben size bu işlemleri anlatamam çünkü her çipset(Tegra, QualComm, MTK vb.) için bu anlatım farklı olcaktır. Bu yüzden bunu kendiniz araştırıp yapmalısınız.

Yama Uygulama

İstediğiniz bir yamayı indirin. Bu örenekte ben bunu kullanacağım.
Dosyayı "kernelPatch" adıyla kaydedip android/kernel dizinine atın.

Sonra kernel kaynak kodunuzun bulunduğu dizine gidin. Bu örnekte android/kernel/falcon_4.4.4_kernel dizinine gireceğiz. İkinci komut ise bizim yamamızı kaynak koda uygulayacak.

Kod:
cd android/kernel/falcon_4.4.4_kernel
patch -p1 < ../kernelPatch

Governer Ekleme

Bu örnekte Smartass governerının eklenişini göstereceğim.
drivers/cpufreq/Kconfig dizinini açın.
Alttaki satırları diğer governerların arasına ekleyin.

Kod:
config CPU_FREQ_DEFAULT_GOV_SMARTASS
            bool "smartass"
            select CPU_FREQ_GOV_SMARTASS
            select CPU_FREQ_GOV_PERFORMANCE
            help
              Use the CPUFreq governor 'smartass' as default.

Kod:
config CPU_FREQ_GOV_SMARTASS
           tristate "'smartass' cpufreq governor"
           depends on CPU_FREQ
           help
             smartass' - a "smart" optimized governor!
             If in doubt, say N.

"drivers/cpufreq/Makefile" dizinini açın.
Alttaki satırı ekleyin.

Kod:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS)     += cpufreq_smartass.o

drivers/cpufreq/ dizinine cpufreq_smartass.c adında bir belge oluşturun.
Alttaki kodları içine ekleyin.

include/linux/cpufreq.h dosyasını açın.
Cpufreq Default başlığının altına şu kodu ekleyin.

Kod:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS)
extern struct cpufreq_governor cpufreq_gov_smartass;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass)

Bir Governor ekledik. Diğer ekleyeceğiniz governorlar içinde bu yolu kullanın.

Yapılandırma Dosyası Ekleme (Bu kısım isteğe bağlı)

Başka Kernelden Yapılandırma Dosyası Alma

Bu işlem cihazınızda çalıştığını bildiğiniz bir kernelin yapılandırma(config) dosyasını kerdi kernelinize aktararak işinizin kolaylaşmasını sağlar. Her kernel /proc/config.gz metodunu desteklemez. Birden fazla kernelle denemek zorunda kalabilirsiniz. Eğer bu adımlarla yapamazsanız ikinci başlıktaki anlatımı kullanın.

Sizin derleyeceğiniz kernele benzer bir kerneli cihazınıza kurup bilgisayara bağlayın.
Bir terminal açın ve şu kodları girin.

İlk kod sizi derlenecek kernelin ana dizinine götürecek.İlk adımlardan hatırlayacağınız gibi ben dizinimi android/kernel/falcon_4.4.4_kernel seklinde oluşturdum. İkinci kod bağlı cihazdan config.gz dosyasını çıkaracak. Üçüncü kod config.gz içindeki config dosyasını çıkaracak. Son kod ile config dosyasını arch/arm/configs/cihazyapılandırmaadı_defconfig dosyasının içine yazacağız. benim cihazın yapılandırma adı falcon olduğu için ben arch/arm/configs/falcon_defconfig dizinine taşıdım. Yapılandırma adı cihazkodadı_vb şeklindedir. Bilmiyorsanız arch/arm/configs/ içindeki orjinal defconfig dosyasının adına bakın.

Kod:
cd android/kernel/falcon_4.4.4_kernel
adb pull /proc/config.gz
gunzip config.gz
mv config arch/arm/configs/falcon_defconfig

Üretici Yapılandırma Dosyası Kullanma

İsterseniz kernelin kendi içindeki defconfig dosyasınıda kullanabilirsiniz veya cihazınızın defconfig adıyla internette arama yapabilirsiniz. Bunuda yine dizine atın.

Derleme

Hazırlık (Bu adımı her derlemede yapmalısınız.)

ilk kodla kernel ana dizinine gidin. İkinci ve üçüncü kodla derleme mimarisini(arm) ve derleme aracını(Linaro) belirtin.

Kod:
cd android/kernel/falcon_4.4.4_kernel
export ARCH=arm
export CROSS_COMPILE=~/android/kernel/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi-

İlk Derleme

İlk kod hazırladığınız yapılandırma dosyasını yükler. Kodu kendi cihazınıza göre yazmanız gerektiğini söylememe gerek yok. İkinci kod kerneli yapılandırmak için birinci adımda yüklediğiniz yapılandırma dosyasını kullanıp bir menü açar. Son komut ise derlemeyi başlatır. make -j4 komutundaki 4 rakamın işlemin yapılma hızıdır. bilgisayarınızın çekidek sayısını yazmanız en iyi sonucu verir.

Kod:
make facon_defconfig
make menuconfig
make -j4

Tekrar Derleme

Kod:
make clean
make oldconfig
make -j4

Kernel Modüllerini Derleme

Kod:
make modules

Sonuç

Derlemenin bitmesini bekleyin.

Derleme Başarılı Değilse

Google amcayla mutluluklar :)

Derleme Başarılıysa

Kerneli derlemiş oldunuz. Bu kerneli cihazınızda kullanmak için ".ko" uzantılı kernel modüllerine ve zImage dosyasına ihtiyacınız var. Bu dosyaların yerlerini derleme sırasında görebilir veya alttaki kodlarla buları başka bir dizine taşıyabilirsiniz. Terminal açın ve ilk komutla kernel ana dizinine gidin. ikinci komutla cihazadı_androidversiyon_kernel_output şeklinde bir dosya oluşturulacak. Ben kendi cihazıma göre yazdım kodu. Üçüncü kodla zImage dosyasını output içine koplayalanacak. Son kodla .ko uzantılı modüllerin tamamı output klasörüne kopyalanacak.

Kod:
cd android/kernel/falcon_4.4.4_kernel
mkdir ../falcon_4.4.4_kernel_output
cp arch/arm/boot/zImage ../falcon_4.4.4_kernel_output/zImage
find . -name "*.ko" -exec cp {} ../falcon_4.4.4_kernel_output \;

Final
1. Yol

Google'da aratarak kendi cihazınıza uygun bir kernel.zip bulun ve içindeki zImage dosyasını ve modülleri sizinkiyle değiştirip recovery ile flaşlayın.

2. Yol

Şimdi bu zımage dosyasıyla ne işe yarayacak diyebilirsiniz. Şöyle açıklayayım zImage + ramdisk = boot.img yani bir ramdisk çıkaracağız bunu zImage ile birleştirip boot.img yapacağız. zImage dosyasını ve modülleri çıkardığımıza göre şimdi bir boot.img dosyasından ramdisk çıkarmamız gerekiyor. Unutmayın hangi romun boot.img dosyasındaki ramdiski kullanırsanız kerneliniz o romla uyumlu olacaktır. Mesela cm10.1 ramdiskiyle yapılan bir kerneli cm11 için kullanamazsınız. Şİmdi bir romdan boot.img dosyasını alıp android/kernel/falcon_4.4.4_kernel/falcon_4.4.4_kernel_output dizinine attım.(Siz kendi dizininize kopyalayacaksınız.)

Kod:
cd android/kernel/falcon_4.4.4_kernel/falcon_4.4.4_kernel_output
export PATH=${PATH}:android/kernel/bootimagetools/folder/tools
unpackbootimg -i boot.img

Terminali kapatmayın. Son komutla boot.img dosyasından pek çok dosya çıktı.Bize lazım olanlar zImage, modüller ve boot.img-ramdisk.gz dosyaları. Dosya dizinine gidin ve bu dosyalar harici diğer boot.img dosyalarını silin. Şimdi terminale dönün ve şu kodu girin.

Kod:
mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --cmdline no_console_suspend=1-console=null --base 12c00000 --output boot-new.img

İşlemler bitti. Bizim kernelimiz boot-new.img adıyla oluşturuldu.

Yükleme

Cihazınızı fastboot moda alın (Her cihaz için farklı) ve bilgisayara bağlayın. Aşağıdaki komutla boot-new.img dosyasını cihazınıza yükleyin.

Kod:
fastboot flash boot boot-new.img

Şimdi cihazı açmadan recovery moda girip mount system yapın tekrar bilgisayara bağlayın.

Üçüncü kodla modüller cihaza taşınacak ve son kodlada cihaz yeniden başlatılacak.
Kod:
adb remount
cd android/kernel/falcon_4.4.4_kernel/falcon_4.4.4_kernel_output
adb push '*ko' system/lib/modules
adb reboot
 
Son düzenleme:
  • Beğen
Tepkiler: want to, YaşlıTaşCocuk54, CV-Aurora ve 2 diğerleri


HakanSeven12

HakanSeven12

Üye
    Konu Sahibi
Konu güncellendi
 

enesutku07

Üye
make -j4 dedikten sonra
 

dogukankamci

Üye
Defconfig'i nasıl bulabilirim kendi chazıma göre ?
 

blr123

Üye
bakacam


LG-D855 cihazımdan Tapatalk kullanılarak gönderildi
 


Üst Alt