Wie man MediaTek Android Kernel von der Quelle aufbaut
Viele Android-Nutzer haben Spaß daran, angepasste Kernel zu installieren, die eine Reihe von Verbesserungen bei der Optimierung von Leistung und Akkulaufzeit bieten. Aber wenn Sie keinen Kernel finden, der Ihnen gefällt, oder keiner ist für Ihr Gerät verfügbar, müssen Sie manchmal nur Ihren eigenen erstellen. In diesem Leitfaden wird erläutert, wie Sie einen Kernel für Mediatek-Geräte aus der Quelle erstellen.
Bitte beachten Sie, dass dieses Handbuch nicht für Neulinge gedacht ist. Es richtet sich an Personen, die sich mit der Anpassung von Android-ROMs, der Arbeit mit Linux-Terminals und einfach nur mit ein bisschen Wissen darüber auskennen, was wir tun.
Bedarf:
- Ein Linux-Betriebssystem
- Einige grundlegende C-Kenntnisse und wie man mit Makefiles arbeitet
- Android NDK
Um zu beginnen, müssen Sie die folgenden Pakete für Linux herunterladen:
- Python
- GNU machen
- JDK
- Git
sudo apt-get install git gnupg flex bison gperf build-essential zip locken libc6-dev libncurses5-dev: i386 x11proto-kern-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-essential 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 libghz-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
Gehen Sie nun zu etc / udev / rules.d / 51-android.rules:
# adb Protokoll über Leidenschaft (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {IDProdukt} == 4e12", MODE = 0600 ", OWNER =
# Fastboot-Protokoll über Leidenschaft (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 0bb4 ", ATTR {IDProdukt} == 0fff, MODE = 0600", OWNER =
# adb-Protokoll auf crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {IDProdukt} == 4e22", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProdukt} == 4e20", MODE = 0600 ", OWNER =
# adb Protokoll auf Stachelrochen / Wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 22b8 ", ATTR {idProdukt} == 70a9", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf Stachelrochen / Wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {IDProdukt} == 708c, MODE = 0600", OWNER =
# adb Protokoll auf Maguro / Toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 04e8 ", ATTR {IDProdukt} == 6860", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf Maguro / Toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {IDProdukt} == 4e30", MODE = 0600 ", OWNER =
# adb Protokoll auf Panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {IDProdukt} == d101", MODE = 0600 ", OWNER =
# adb-Protokoll auf Panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {IDProdukt} == d002", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf Panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {IDProdukt} == d022", MODE = 0600 ", OWNER =
# usbboot-Protokoll auf Panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {IDProdukt} == d00f, MODE = 0600", OWNER =
# usbboot-Protokoll auf Panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {IDProdukt} == d010", MODE = 0600 ", OWNER =
# adb Protokoll auf Grouper / Tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProdukt} == 4e42", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf Grouper / Tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProdukt} == 4e40", MODE = 0600 ", OWNER =
# adb Protokoll auf Manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProdukt} == 4ee2", MODE = 0600 ", OWNER =
# Fastboot-Protokoll auf Manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProdukt} == 4ee0", MODE = 0600 ", OWNER =
Und in bash.rc:
Exportieren Sie USE_CCACHE = 1
Jetzt endlich:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Jetzt können wir die Build-Umgebung einrichten. Geben Sie im Terminal Folgendes ein:
Export TARGET_BUILD_VARIANT = Benutzer TARGET_PRODUCT = Gerätename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Hier sind, was diese Befehle tun werden:
BUILD_VARIANT: gibt an, wofür der Kernel erstellt wird.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: teilt Linux mit, welche gerätespezifischen Dateien verwendet werden sollen.
MTK_ROOT_CUSTOM: gibt das Verzeichnis des Mediatek / Custom-Ordners an. Denken Sie daran, dass sich dieses Verzeichnis im gleichen Verzeichnis wie die Kernel-Quelle befindet.
PATH: Setzt Ihre ausführbaren Toolchain-Dateien auf Ihren Pfad.
CROSS_COMPILE: Ein Cross-Compiler ist ein Compiler, der in der Lage ist, ausführbaren Code für eine andere Plattform als die, auf der der Compiler läuft, zu erstellen. Die Toolchain erleichtert diese Funktion
ARCH = arm, ARM ist eine Familie von Befehlssatzarchitekturen für Computerprozessoren, die auf einer RISC-Architektur (RISC = Reduced Instruction Set Computing) basiert, die von der britischen Firma ARM Holdings entwickelt wurde. ARM wird auch in Android verwendet.
Wenn wir "export ARCH = arm" in das Terminal eingeben, sagen wir im Grunde, dass wir Linux für die ARM-Architektur erstellen.
Jetzt können wir mit der Konfiguration des Kernels beginnen. Sie müssen sehr vorsichtig sein, weil der Kernel im Grunde der Controller für Ihr Telefon ist. Also folge einfach vorsichtig.
Sie finden die Basiskonfiguration wahrscheinlich in der Datei kernel_source / mediatek / config / devicename / autoconfig / kconfig /.
Wir können diese Basiskonfiguration verwenden und sie mit anderen Anforderungen erstellen, z. B. SELinux-Berechtigungen aktiviert oder deaktiviert. Sie könnten immer nur eine Basiskonfiguration von Grund auf neu erstellen, aber ich kann es wirklich nicht empfehlen.
Also lass uns in das Linux-Terminal tippen:
CD kernel_source
cp mediatek / config / Gerätename / autoconfig / kconfig / Plattform .config
Machen Sie menuconfig
Dadurch wird eine grafische Oberfläche erstellt, mit der Sie dem Kernel Funktionen hinzufügen können. Sie können beispielsweise den E / A-Ablaufplan, CPU-Regler, GPU-Frequenz usw. anpassen.
Sobald Sie Ihre gewünschten Einstellungen optimiert haben, können Sie den Kernel kompilieren. Also tippe in das Linux-Terminal:
mache zImage
Und es sollte etwas zurückgeben wie:
Bogen / Arm / Boot / zImage bereit
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken