Özel bir Android çekirdeği nasıl oluşturulur

Android çekirdeğinin nasıl oluşturulacağını merak ettiyseniz, bu rehber tam size göre. Kendi çekirdeğinizi oluşturmak, CPU, RAM, GPU ve hatta bataryaya kadar Android cihazınız üzerinde daha fazla kontrol sağlayacağınız için ödüllendirici bir deneyim olabilir.

Bu, çok fazla derleme ve konsol komutlarını içeren çok pratik bir işlemdir, ancak Linux'la (veya aşağıdaki yönlerde iyi) aşina olursanız sorun olmamalıdır.

Lütfen bu kılavuzun Mediatek olmayan cihazlar için olduğunu unutmayın. Appual's, Mediatek tabanlı Android cihazlar için bir çekirdek derleme rehberi özelliğine sahiptir: Mediatek Android Çekirdeği Kaynaktan Nasıl Oluşturulur

Diğer Appual'ın ilgi alanları şunlardır:

  • Android Açık Kaynak Projesi'nden Özel ROM Nasıl Yapılır | Pt. 2
  • Android Sistem Kullanıcı Arayüzü Nasıl El İle Kullanılır

Özel bir çekirdek oluşturuyorsanız, yalnızca kerneli Git'i aşağıdaki komutlarla klonlamanız gerekir. Ancak bir stok çekirdeği derliyorsanız, orijinal çekirdeği nereden kaynaklandıracağınızı bilmeniz gerekir (her türlü sebepten dolayı).

Çeşitli Markalar İçin Orijinal Çekirdek Kaynakları:

  • Google
  • LG
  • Samsung
  • HTC
  • OnePlus
  • Motorola
  • Sony

Çekirdeği indirmek için ya bir git klonunu kullanın ya da tarball dosyasını indirin ve ayıklayın.

İşte git komutu:

git klonu -b

-VEYA-

tar -xvf

Örnek olarak, bu en son Nexus 6P Nougat 3.10 çekirdeğini Google'dan almak için bir komut olacaktır:
git klonu -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angler

Bu çekirdek / msm repo bir fener klasörüne klon ve android-msm-angler-3.10-nougat-mr2 otomatik olarak kontrol edilmelidir.

Artık çoğu Android cihaz ARM tabanlı olduğundan, ARM cihazlarını hedefleyen bir derleyici kullanmamız gerekecek - bu, başka bir ARM cihazında bir derleme yapmıyorsanız, bir ana bilgisayar / yerel derleyicinin çalışmadığı anlamına gelir. Burada birkaç seçeneğiniz var. Crosstool-NG gibi bir şeyi nasıl kullanacağınızı biliyorsanız bir tane kendiniz derleyebilirsiniz. Alternatif olarak, önceden oluşturulmuş bir derleyici indirebilirsiniz - Google'ın Arm 32 bit ve Arm64 için sağladığı gibi.

Önceden oluşturulmuş bir derleyiciyi indirmeden önce, cihazınızın tam mimarisini bilmeniz gerekir, bu yüzden belirlemek için CPU-Z gibi bir uygulamayı kullanın.

Bir diğer popüler araç zinciri UberTC olurdu - ancak 4.9'dan daha yüksek herhangi bir çekirdek için onları yatırma ve Google'ın toolchain ile derleme en iyi uygulamadır.

Her durumda, takım zincirine karar verdikten sonra, klonlamanız gerekir.
git klonu

Şimdi Makefile'ı derleyicinize yönlendirin, araç zinciri klasörünün içinden çalıştırın .

  • dışa aktar CROSS_COMPILE = $ (pwd) / bin / -

Örnek:

  • dışa aktarma CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-

Şimdi Makefile'ye cihazınızın mimarisini söyleyin.

  • ihracat ARCH = && ihracat SUBARCH =

Örnek:

  • ihracat ARCH = arm64 && ihracat SUBARCH = arm64

Çekirdek kaynağındaki arch // configs klasörüne (örn. Arch / arm64 / configs) gidip uygun defconfig dosyanızı bulun.

Ardından, geliştiricinizin oluşturduğunuz çekirdek için uygun yapılandırma dosyasını bulun. Genellikle _defconfig veya _defconfig biçiminde olmalıdır. Defconfig, derleyiciye çekirdeğe hangi seçeneklerin ekleneceğini bildirir.

Genel Qualcomm yapılandırmaları da bulunabilir, bunlar genellikle (msm-perf_defconfig, msmcortex-perf_defconfig) gibi bir şey olacaktır.

Çekirdeği Oluşturmak

Kod:

temiz yapmak
mrproper yapmak
Yapmak
-j $ yapmak (nproc –all)

Bu komutlar başarılı olduğunda, aşağıdakilere sahip olmalısınız: Sonunda bir Resim, Resim-dtb, Image.gz veya Image.gz-dtb dosyası.

PRO TIP: Sorun bilgisayarınız veya dizüstü bilgisayar / dizüstü bilgisayar ile yapılmışsa, depoları tarayabilen ve bozuk ve eksik dosyaları değiştirebilen Reimage Plus Yazılımı'nı kullanmayı denemeniz gerekir. Bu, çoğu durumda, sorunun sistem bozulmasından kaynaklandığı yerlerde çalışır. Reimage Plus'ı tıklayarak buraya tıklayarak indirebilirsiniz.

Bu komutlar başarısız olursa, yeni CAF tabanlı bir çekirdek oluştururken çıkış dizinini belirtmeniz gerekebilir, bunun gibi:

mkdir -p çıkışı
O = temizle temizle
O = out mrproper yapmak
O = çıkışını yap
O = out -j $ yap (nproc –all)

Eğer hala çalışmak istemiyorsa, bir şey bozulur - üstbilgilerinizi kontrol edin veya çekirdek geliştiricileriyle getirin.

Çekirdek başarıyla derlenmişse, şimdi onu yanıp sönmeniz gerekir. Bunu yapmanın iki farklı yolu vardır: Android Image Kitchen veya AnyKernel2 kullanarak bootimage paketini açıp yeniden paketleyebilirsiniz.

Belirli cihazlara bağlı olarak bazı nüanslar da olabilir. Bu durumda, cihaz geliştiricilerinden yardım istemeniz gerekir.

Android Image Kitchen'da Çekirdeği Yanıp Sönüyor

Android Image Kitchen'ı indirin

Android cihazınızın önyükleme görüntüsünü mevcut en yeni görüntüden (ister stok veya özel ROM) alın.

Şimdi bu kodu kullanarak resmi açınız:
unpackimg.sh .img

Sonra zImage dosyasını bulun ve derlenmiş çekirdek resminizle değiştirin - önyükleme görüntüsünde olana yeniden adlandırın.

Şimdi resmi kopyalamak için bu kodu çalıştırın:
repackimg.sh

Artık yeni açılış resmini fastboot, TWRP vb. Kullanarak açabilirsiniz.

AnyKernel2'de Çekirdeğin Yanıp Sönmesi

En son AnyKernel2 indir

Tüm demo dosyalarını temizlemek için bu yamayu uygulayın.
wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff
patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff
rm addb6ea860aab14f0ef684f6956d17418f95f29a.diff

Şimdi çekirdek görüntüsünü dosyanın köküne yerleştirin ve bu değerleri değiştirmek için anykernel.sh dosyasını açın:

  • dize : çekirdek adınız
  • name # : Cihazınızın tüm kod adreslerini listeleyin (/system/build.prop: ro.product.device, ro.build.product)
  • blok : Önyükleme görüntüsünüzün fstab'inizdeki yolu. Fstab cihazınızın kökünden açılabilir ve böyle bir şeye benzeyecektir: https://android.googlesource.com/devr/fstab.angler

İlk sütun, engellemeyi ayarlamak istediğiniz değerdir.

Şimdi çekirdeği yeniden sıkıştırın ve AnyKernel2'de yanıp sönün:
zip -r9 kernel.zip * -x README.md kernel.zip

CAF'ın birçok çekirdeğinin, temelde yapınızın en küçük şeylerde hataları atmasına neden olan -Werror'u tetikleyecek bir Python betiği içerdiği konusunda uyarın. Bu yüzden daha yüksek GCC sürümleri için (daha fazla uyarı içerir), tipik olarak Makefile'de değişiklikler yapmanız gerekir:

diff --git a/Makefile b/Makefile
index 1aaa760f255f..bfccd5594630 100644
--- a/Makefile
+++ b/Makefile
@@ -326, 7 +326, 7 @@ include $(srctree)/scripts/Kbuild.include
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
-REAL_CC = $(CROSS_COMPILE)gcc
+CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
@@ -340, 10 +340, 6 @@ DEPMOD = /sbin/depmod
PERL = perl
CHECK = sparse

-# Use the wrapper for the compiler. This wrapper scans for new
-# warnings and causes the build to stop upon encountering them.
-CC = $(srctree)/scripts/gcc-wrapper.py $(REAL_CC)
-
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
-Wbitwise -Wno-return-void $(CF)
CFLAGS_MODULE =

Daha yüksek bir GCC araç zinciri kullanmak (5.x, 6.x, 7.x veya 8.x), yukarıdaki gibi GCC sarmalayıcı komut dosyasını nuke olarak eklemenizi ve birleştirilmiş bir GCC üstbilgi dosyasını kullanmanızı gerektirir. /linux/compiler-gcc#.h dosya):

3.4 / 3.10: https://git.kernel.org/pub/scm/linux9bb8868d562a8a
3.18: https://git.kernel.org/pub/scm/linux9f67d656b1ec2f

Çok fazla uyarı alsanız bile, düzeltmeniz gerekmez (genellikle).

Çekirdeğiniz yerleşik ve hazırdır!

PRO TIP: Sorun bilgisayarınız veya dizüstü bilgisayar / dizüstü bilgisayar ile yapılmışsa, depoları tarayabilen ve bozuk ve eksik dosyaları değiştirebilen Reimage Plus Yazılımı'nı kullanmayı denemeniz gerekir. Bu, çoğu durumda, sorunun sistem bozulmasından kaynaklandığı yerlerde çalışır. Reimage Plus'ı tıklayarak buraya tıklayarak indirebilirsiniz.

Facebook Twitter Google Plus Pinterest