HakanSeven12
Üye
[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.
Kaynak Kodlar ve Araçlar
İlk önce derleme ve boot.img araçlarını indirelim.
Ç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.
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.
"drivers/cpufreq/Makefile" dizinini açın.
Alttaki satırı ekleyin.
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.
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.
Ü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.
İ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.
Tekrar Derleme
Kernel Modüllerini Derleme
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.
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.)
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.
İş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.
Ş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.
Linkleri görüntülemek için kayıt olmalısınız
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
Linkleri görüntülemek için kayıt olmalısınız
Samsung
Linkleri görüntülemek için kayıt olmalısınız
Linkleri görüntülemek için kayıt olmalısınız
LG
Linkleri görüntülemek için kayıt olmalısınız
Sony
Linkleri görüntülemek için kayıt olmalısınız
Motorola
Linkleri görüntülemek için kayıt olmalısınız
Lenovo
Linkleri görüntülemek için kayıt olmalısınız
Huawei
Linkleri görüntülemek için kayıt olmalısınız
ZTE
Linkleri görüntülemek için kayıt olmalısınız
Acer
Linkleri görüntülemek için kayıt olmalısınız
Asus
Linkleri görüntülemek için kayıt olmalısınız
Meizu
Linkleri görüntülemek için kayıt olmalısınız
İ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.
Linkleri görüntülemek için kayıt olmalısınız
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.
Linkleri görüntülemek için kayıt olmalısınız
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: