Cara Membangun MediaTek Android Kernal dari Sumber
Banyak pengguna Android senang menginstal kernel yang disesuaikan, yang dapat menawarkan berbagai kinerja dan peningkatan daya baterai yang menyempurnakan tweak. Tetapi jika Anda tidak dapat menemukan kernel yang Anda sukai, atau tidak ada yang tersedia untuk perangkat Anda, kadang-kadang Anda hanya perlu membangun sendiri. Panduan ini akan fokus pada cara membangun kernel dari sumber untuk perangkat Mediatek.
Harap diperingatkan bahwa panduan ini bukan untuk pemula, ini ditujukan untuk orang-orang dengan pemahaman tentang menyesuaikan ROM Android, bekerja di terminal Linux, dan hanya sedikit pengetahuan tentang apa yang sedang kami lakukan.
Persyaratan:
- Sistem operasi Linux
- Beberapa pengetahuan dasar C dan cara bekerja dengan Makefile
- Android NDK
Untuk memulai, Anda perlu mengunduh paket-paket berikut untuk Linux:
- Python
- GNU Make
- JDK
- Git
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev: i386 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flex bison gperf build-esensial zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 lib32z-dev libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2. 8-dev python gcc g ++ cpp gcc-4.8 g ++ - 4.8 && sudo ln -s / usr / lib / i386-linux-gnu / mesa / li bGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Sekarang, masuk ke etc / udev / rules.d / 51-android.rules:
# Adb protocol on passion (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e12 ″, MODE = 0600 ″, OWNER =
# protokol fastboot pada passion (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 0bb4 ″, ATTR {idProduct} == 0fff, MODE = 0600 ″, OWNER =
# protokol adb pada crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e22 ″, MODE = 0600 ″, OWNER =
# protokol fastboot pada crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e20 ″, MODE = 0600 ″, OWNER =
Protokol # adb pada stingray / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 22b8 ″, ATTR {idProduct} == 70a9 ″, MODE = 0600 ″, OWNER =
# protokol fastboot pada stingray / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 708c, MODE = 0600 ″, OWNER =
# protokol adb di maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 04e8 ″, ATTR {idProduct} == 6860 ″, MODE = 0600 ″, OWNER =
# protokol fastboot di maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e30 ″, MODE = 0600 ″, OWNER =
# Adb protocol on panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ″, ATTR {idProduct} == d101 ″, MODE = 0600 ″, OWNER =
# Adb protocol on panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == d002 ″, MODE = 0600 ″, OWNER =
# protokol fastboot pada panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ″, ATTR {idProduct} == d022 ″, MODE = 0600 ″, OWNER =
Protokol # usbboot pada panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ″, ATTR {idProduct} == d00f, MODE = 0600 ″, OWNER =
Protokol # usbboot pada panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ″, ATTR {idProduct} == d010 ″, MODE = 0600 ″, OWNER =
# Adb protocol on grouper / tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e42 ″, MODE = 0600 ″, OWNER =
# protokol fastboot pada ikan kerapu / ikan nila (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4e40 ″, MODE = 0600 ″, OWNER =
# Adb protocol on manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4ee2 ″, MODE = 0600 ″, OWNER =
# protokol fastboot di manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ″, ATTR {idProduct} == 4ee0 ″, MODE = 0600 ″, OWNER =
Dan di bash.rc:
ekspor USE_CCACHE = 1
Sekarang akhirnya:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Jadi sekarang kami siap untuk menyiapkan lingkungan pembangunan. Di terminal, ketik:
ekspor TARGET_BUILD_VARIANT = pengguna TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Inilah yang akan dilakukan oleh perintah-perintah ini:
BUILD_VARIANT: menentukan apa yang akan dibangun untuk kernel.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: memberi tahu Linux tentang file khusus perangkat mana yang digunakan.
MTK_ROOT_CUSTOM: menentukan direktori folder mediatek / kustom. ingatlah bahwa mide ini berada di direktori yang sama dengan sumber kernel juga.
PATH: membuat toolchain Anda dapat dieksekusi ke jalur Anda.
CROSS_COMPILE: Compiler silang adalah kompiler yang mampu membuat kode yang dapat dijalankan untuk platform selain dari yang dijalankan kompilator. Toolchain memfasilitasi fungsi ini
ARCH = arm, ARM adalah keluarga arsitektur set instruksi untuk prosesor komputer berdasarkan arsitektur instruksi set komputasi (RISC) yang dikembangkan oleh perusahaan Inggris ARM Holdings. ARM juga digunakan di Android.
Jadi ketika kita mengetik 'ekspor ARCH = lengan' ke terminal, pada dasarnya kami memberi tahu Linux bahwa kami sedang membangun untuk arsitektur ARM.
Jadi sekarang kami siap untuk mulai mengkonfigurasi kernel. Anda harus sangat berhati-hati, karena kernel pada dasarnya adalah pengontrol untuk telepon Anda. Jadi ikuti saja dengan hati-hati.
Anda kemungkinan besar akan menemukan konfigurasi dasar di kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Kita dapat menggunakan konfigurasi dasar ini dan membangunnya dengan persyaratan yang berbeda, misalnya izin SELinux diaktifkan atau dinonaktifkan. Anda selalu bisa hanya membangun konfigurasi dasar dari awal, tetapi saya benar-benar tidak merekomendasikannya.
Jadi sekarang mari kita ketik ke dalam terminal Linux:
cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
buatlah menuconfig
Ini akan membuat antarmuka grafis yang memungkinkan Anda untuk menambahkan fitur ke kernel. Misalnya, Anda dapat menyesuaikan Jadwal I / O, Gubernur CPU, Frekuensi GPU, dll.
Setelah Anda mengubah pengaturan yang Anda inginkan, Anda siap untuk mengkompilasi kernel. Jadi ketikkan ke terminal Linux:
buat zImage
Dan seharusnya mengembalikan sesuatu seperti:
lengkungan / lengan / boot / zGambar Siap
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