Cara Membuat Kernel Android Kustom
Jika Anda pernah bertanya-tanya bagaimana cara membangun kernel Android, panduan ini cocok untuk Anda. Membangun kernel Anda sendiri dapat menjadi pengalaman yang bermanfaat karena akan memberi Anda tingkat kontrol yang lebih besar terhadap perangkat Android Anda, mulai dari CPU, RAM, GPU hingga baterai.
Ini adalah proses yang sangat langsung yang melibatkan banyak perintah kompilasi dan konsol, tetapi jika Anda terbiasa dengan Linux (atau bagus dalam mengikuti arah), seharusnya tidak menjadi masalah.
Harap dicatat panduan ini untuk perangkat non-Mediatek. Appual's memiliki panduan kompilasi kernel yang khusus untuk perangkat Android berbasis Mediatek di sini: Cara Membuat Kernel Android Mediatek dari Sumber
Artikel-artikel lain yang menarik dari Appual termasuk:
- Cara Membuat ROM Khusus dari Proyek Open Source Android | Pt. 2
- Cara Manual Tema Sistem Android UI
Jika Anda membuat kernel khusus, Anda hanya perlu mengkloning kernel dari Git dengan perintah yang diberikan di bawah ini. Tetapi jika Anda mengkompilasi kernel stok, Anda perlu tahu di mana untuk mendapatkan kernel asli dari sumber (untuk segala macam alasan).
Sumber Kernel Asli untuk Berbagai Merek:
- LG
- Samsung
- HTC
- Satu ditambah
- Motorola
- Sony
Untuk mengunduh kernel, gunakan git clone atau unduh file tarball dan ekstrak.
Di sini adalah perintah git:
git clone -b
-ATAU-
tar -xvf
Sebagai contoh, ini adalah perintah untuk mengambil kernel Nexus 6P Nougat 3.10 terbaru dari Google:
git clone -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angler
Ini harus mengkloning kernel / msm repo ke folder pemancing, dan secara otomatis checkout android-msm-angler-3.10-nougat-mr2.
Sekarang karena sebagian besar perangkat Android berbasis ARM, kita perlu menggunakan kompilator yang akan menargetkan perangkat ARM - ini berarti kompiler host / asli tidak akan berfungsi, kecuali Anda mengompilasi pada perangkat ARM lain. Anda memiliki beberapa opsi di sini. Anda dapat menyusunnya sendiri jika Anda tahu caranya, menggunakan sesuatu seperti Crosstool-NG. Sebagai alternatif, Anda dapat mengunduh compiler prebuilt - seperti yang disediakan oleh Google untuk Arm 32-bit dan Arm64.
Sebelum mengunduh compiler prebuilt, Anda perlu mengetahui arsitektur perangkat Anda yang tepat, jadi gunakan aplikasi seperti CPU-Z untuk menentukannya.
Satu toolchain populer lainnya adalah UberTC - tetapi untuk kernel yang lebih tinggi dari 4, 9, Anda harus menambalnya, dan menyusun dengan toolchain Google adalah praktik terbaik.
Bagaimanapun, setelah Anda memutuskan pada toolchain, Anda perlu mengkloningnya.
git clone
Sekarang arahkan Makefile ke compiler Anda, jalankan dari dalam folder toolchain .
- ekspor CROSS_COMPILE = $ (pwd) / bin / -
Contoh:
- ekspor CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-
Sekarang beri tahu Makefile arsitektur perangkat Anda.
- ekspor ARCH = && ekspor SUBARCH =
Contoh:
- ekspor ARCH = arm64 && ekspor SUBARCH = arm64
Cari defconfig yang tepat dengan menavigasi ke folder arch // configs di dalam sumber kernel (misal arch / arm64 / configs).
Selanjutnya cari file konfigurasi yang tepat untuk kernel yang sedang Anda bangun. Biasanya harus dalam bentuk _defconfig atau _defconfig. Defconfig akan menginstruksikan kepada kompilator opsi apa yang harus dimasukkan ke dalam kernel.
Konfigurasi Qualcomm umum juga dapat ditemukan, ini biasanya akan menjadi sesuatu seperti (msm-perf_defconfig, msmcortex-perf_defconfig).
Membangun Kernel
Kode:
bersihkan
membuat mrproper
membuat
make -j $ (nproc –semua)
Ketika perintah-perintah itu berhasil, Anda harus memiliki file Image, Image-dtb, Image.gz, atau Image.gz-dtb di bagian akhir.
TIP PRO: Jika masalahnya ada pada komputer Anda atau laptop / notebook, Anda harus mencoba menggunakan Perangkat Lunak Reimage Plus yang dapat memindai repositori dan mengganti file yang rusak dan hilang. Ini berfungsi dalam banyak kasus, di mana masalah ini berasal karena sistem yang rusak. Anda dapat mengunduh Reimage Plus dengan Mengklik di SiniJika perintah tersebut gagal, Anda mungkin perlu menentukan direktori output saat membuat kernel berbasis CAF baru, seperti ini:
mkdir -p keluar
membuat O = keluar bersih
buat O = keluar mrproper
buat O = keluar
buat O = keluar -j $ (nproc –semua)
Jika masih tidak mau bekerja, ada yang rusak - periksa header Anda atau bawalah dengan pengembang kernel.
Jika kernel berhasil dikompilasi, Anda sekarang perlu mem-flash-nya. Ada dua cara berbeda untuk melakukan hal ini - Anda dapat membongkar dan mengemas kembali bootimage menggunakan Android Image Kitchen atau AnyKernel2.
Mungkin juga ada beberapa nuansa berdasarkan perangkat tertentu - Anda harus meminta pengembang perangkat Anda untuk meminta bantuan jika ini masalahnya.
Berkedip Kernel di Dapur Gambar Android
Unduh Dapur Gambar Android
Ekstrak gambar boot perangkat Android Anda dari gambar terbaru yang tersedia (apakah stok atau ROM khusus).
Sekarang buka kemasan gambar menggunakan kode ini:
unpackimg.sh .img
Selanjutnya cari file zImage, dan ganti dengan gambar kernel yang dikompilasi - ubah namanya menjadi apa yang ada di image boot.
Sekarang jalankan kode ini untuk mengemas ulang gambar:
repackimg.sh
Sekarang Anda dapat mem-flash image boot yang baru menggunakan fastboot, TWRP, dll.
Menjalankan Flashing Kernel di AnyKernel2
Unduh AnyKernel2 terbaru
Terapkan patch ini untuk membersihkan semua file demo.
wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff
patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff
rm addb6ea860aab14f0ef684f6956d17418f95f29a.diff
Sekarang tempatkan imej kernel Anda di root file, dan buka sembarang file.s untuk mengubah nilai-nilai ini:
- string : nama kernel Anda
- name # : Daftar semua nama kode perangkat Anda (dari /system/build.prop: ro.product.device, ro.build.product)
- blok : Jalur gambar boot Anda di fstab Anda. The fstab dapat dibuka dari root perangkat Anda dan akan terlihat seperti ini: https://android.googlesource.com/devr/fstab.angler
Kolom pertama adalah nilai yang ingin Anda atur blok.
Sekarang zip ulang kernel, dan pasang di AnyKernel2:
zip -r9 kernel.zip * -x README.md kernel.zip
Berhati-hatilah bahwa banyak kernel dari CAF termasuk skrip Python yang akan memicu –Merror, yang pada dasarnya menyebabkan build Anda melakukan kesalahan pada hal-hal terkecil. Jadi untuk versi GCC yang lebih tinggi (yang mencakup lebih banyak peringatan), Anda biasanya perlu melakukan perubahan pada Makefile:
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 =
Menggunakan toolchain GCC yang lebih tinggi (5.x, 6.x, 7.x atau bahkan 8.x) akan mengharuskan Anda untuk mencabut skrip wrapper GCC seperti di atas dan menggunakan file header GCC terpadu (pilih yang berikut ini jika Anda memiliki file /linux/compiler-gcc#.h):
3.4 / 3.10: https://git.kernel.org/pub/scm/linux9bb8868d562a8a
3.18: https://git.kernel.org/pub/scm/linux9f67d656b1ec2f
Bahkan jika Anda mendapatkan banyak peringatan, mereka tidak perlu diperbaiki (biasanya).
Kernel Anda dibuat dan siap digunakan!
TIP PRO: Jika masalahnya ada pada komputer Anda atau laptop / notebook, Anda harus mencoba menggunakan Perangkat Lunak Reimage Plus yang dapat memindai repositori dan mengganti file yang rusak dan hilang. Ini berfungsi dalam banyak kasus, di mana masalah ini berasal karena sistem yang rusak. Anda dapat mengunduh Reimage Plus dengan Mengklik di Sini