Kod:
mkdir android cd android mkdir kernel
İ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
HTC HTCdev - HTC Kernel Source Code and Binaries
Samsung Samsung Opensource Release Center
Google Binaries for Nexus Devices - Android — Google Developers
LG OpenSource Code Distribution
Sony Xperia™ open source archives - Developer World
Motorola Motorola Home - Motorola USA
Lenovo Home - Lenovo Support (US)
Huawei JoeyJiao/android-huawei-kernel-common · GitHub
ZTE ZTE Corporation
Acer Developer Center
Asus Garmin-Asus - Connect. Communicate. Navigate.
Meizu SourceForge.net: meizu-firmware - Project Web Hosting - Open Source Software
İ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. [Diff] AndroidGovernorPatch - Pastebin.com
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
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.
Alttaki satırı ekleyin.
Kod:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS) += cpufreq_smartass.o
Alttaki kodları içine ekleyin.
[C] Smartass Kernel Govenor - Pastebin.com
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)
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
İsterseniz kernelin kendi içindeki defconfig dosyasınıda kullanabilirsiniz veya cihazınızın defconfig adıyla internette arama yapabilirsiniz. Bunuda yine aynı 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 kod cihazımızın anakart koduna uygun yapılandırma dosyasını yükler. Her cihazın bir anakart serisi (Qualcomm Snapdragon 400, Qualcomm Snapdragon 810, Qualcomm Snapdragon 620 gibi) ve her serinin pek çok versiyonu olabilir. Mesela Qualcomm Snapdragon 400 çipsetinin alttaki linktede görebileceğiniz gibi pek çok versiyonu vardır.
Qualcomm Snapdragon 400
İlk kodda cihazınızın anakartının versiyon koduyla adlandırılan defconfig dosyasını arch/arm/configs dizininde bulup adını kopyalayıp make komutunun yanına yazmalısınız. Bu yazdığınız kodla cihazınızın anakartına uygun ayar dosyasını yüklemiş oldunuz. İ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 msm8626_defconfig make menuconfig make -j4
Tekrar Derleme
Burda tekrar config dosyasını yüklemeye gerek yok.
Kod:
make clean make oldconfig make -j4
Kernel Modüllerini Derleme
Kod:
make modules
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
Kod:
mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --cmdline no_console_suspend=1-console=null --base 12c00000 --output boot-new.img
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
Üçü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
ilk derlemede make -j4 dedikten sonra
YanıtlaSil" CHK include/linux/version.h
CHK include/generated/utsrelease.h
CC scripts/mod/empty.o
make[1]: 'include/generated/mach-types.h' is up to date.
CC kernel/bounds.s
arm-eabi-gcc: No such file or directory
Is your PATH set correctly?
scripts/Makefile.build:307: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 2
scripts/Makefile.build:443: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
Makefile:512: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Bitmemiş işler için bekliyor....
arm-eabi-gcc: No such file or directory
Is your PATH set correctly?
/home/enesutku07/android/kernel/falcon_4.4.4_kernel/./Kbuild:35: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 2
Makefile:814: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
" diyor ne yapmam kazım. d802 android kk kernel yapıyorum.