So erstellen Sie einen benutzerdefinierten Android-Kernel

Wenn Sie sich jemals gefragt haben, wie Sie einen Android-Kernel erstellen können, ist dieses Handbuch genau das Richtige für Sie. Der Aufbau eines eigenen Kernels kann eine lohnende Erfahrung sein, da es Ihnen mehr Kontrolle über Ihr Android-Gerät bietet, von der CPU, dem RAM, der GPU bis hin zur Batterie.

Dies ist ein sehr praktischer Prozess, der eine Menge Kompilierungs- und Konsolenbefehle beinhaltet, aber wenn Sie mit Linux vertraut sind (oder gut in den folgenden Anweisungen), sollte es kein Problem sein.

Bitte beachten Sie, dass diese Anleitung für Nicht-Mediatek-Geräte gilt. Appuals hat eine Guide-spezifische Anleitung für den Umgang mit Mediatek-basierten Android-Geräten: Hier erfahren Sie, wie Sie Mediatek Android Kernel von Source erstellen

Zu den weiteren interessanten Artikeln von Appual gehören:

  • So erstellen Sie benutzerdefinierte ROM von Android Open Source Project | Pt. 2
  • Wie man die Android-System-Benutzeroberfläche manuell gestaltet

Wenn Sie einen benutzerdefinierten Kernel erstellen, müssen Sie den Kernel nur mit den unten angegebenen Befehlen von Git klonen. Aber wenn Sie einen Aktien- Kernel kompilieren, müssen Sie wissen, woher Sie den ursprünglichen Kernel aus der Quelle beziehen können (aus allen möglichen Gründen).

Original Kernel Quellen für verschiedene Marken:

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

Um den Kernel herunterzuladen, verwenden Sie entweder einen Git-Clone oder laden Sie die Tarball-Datei herunter und extrahieren Sie sie.

Hier ist der Git-Befehl:

Git Klon -b

-ODER-

tar -xvf

Als Beispiel wäre dies der Befehl, den neuesten Nexus 6P Nougat 3.10 Kernel von Google zu holen:
git Klon -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angler

Dies sollte den Kernel / Msm Repo in einen Angler-Ordner klonen und automatisch den android-msm-angler-3.10-nougat-mr2 auschecken.

Da die meisten Android-Geräte ARM-basiert sind, müssen wir einen Compiler verwenden, der auf ARM-Geräte abzielt. Das bedeutet, dass ein Host / nativer Compiler nicht funktioniert, es sei denn, Sie kompilieren auf einem anderen ARM-Gerät. Sie haben hier einige Möglichkeiten. Sie können entweder selbst eine kompilieren, wenn Sie wissen, wie etwas mit Crosstool-NG. Alternativ können Sie einen vorkompilierten Compiler herunterladen, wie ihn Google für Arm 32-bit und Arm64 anbietet.

Bevor Sie einen vorkompilierten Compiler herunterladen, müssen Sie die genaue Architektur Ihres Geräts kennen. Verwenden Sie daher eine App wie CPU-Z, um diese zu ermitteln.

Eine andere beliebte Toolchain wäre UberTC - aber für alle Kernel über 4.9 müssen Sie sie patchen, und die beste Methode ist die Kompilierung mit Googles Toolchain.

Sobald Sie sich für die Toolchain entschieden haben, müssen Sie diese klonen.
Git Klon

Zeigen Sie nun das Makefile auf Ihren Compiler und führen Sie es aus dem Toolchain-Ordner aus .

  • Export CROSS_COMPILE = $ (pwd) / bin / -

Beispiel:

  • export CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-

Jetzt teilen Sie dem Makefile Ihre Gerätearchitektur mit.

  • export ARCH = && export SUBARCH =

Beispiel:

  • exportiere ARCH = arm64 && exportiere SUBARCH = arm64

Suchen Sie das richtige defconfig, indem Sie zum Ordner arch // configs in der Kernel-Quelle navigieren (z. B. arch / arm64 / configs).

Als nächstes suchen Sie die richtige Konfigurationsdatei des Entwicklers für den Kernel, den Sie gerade erstellen. Es sollte normalerweise in Form von _defconfig oder _defconfig sein. Das defconfig weist den Compiler an, welche Optionen in den Kernel aufgenommen werden sollen.

Generische Qualcomm-Konfigurationen können ebenfalls gefunden werden, diese sind normalerweise etwas (msm-perf_defconfig, msmcortex-perf_defconfig).

Den Kernel bauen

Code:

mach sauber
mach es gut
machen
make -j $ (nproc -all)

Wenn diese Befehle erfolgreich sind, sollten Sie: eine Image-, Image-dtb-, Image.gz- oder Image.gz-dtb-Datei am Ende haben.

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

Wenn diese Befehle fehlgeschlagen sind, müssen Sie möglicherweise beim Erstellen eines neuen CAF-basierten Kernels das Ausgabeverzeichnis angeben:

mkdir -p aus
mache O = sauber
mache O = out mrproper
mache O = aus
mache O = aus -j $ (nproc -all)

Wenn es immer noch nicht funktionieren will, ist etwas kaputt - überprüfe deine Header oder bring es mit den Kernel-Entwicklern auf.

Wenn der Kernel erfolgreich kompiliert wurde, müssen Sie ihn nun flashen. Dazu gibt es zwei Möglichkeiten: Sie können das Boot-Image mit Android Image Kitchen oder AnyKernel2 entpacken und neu verpacken.

Es kann auch einige Nuancen geben, die auf bestimmten Geräten basieren. Wenn dies der Fall ist, müssen Sie Ihre Geräteentwickler um Unterstützung bitten.

Flashen des Kernels in Android Image Kitchen

Laden Sie die Android Image Küche herunter

Extrahieren Sie das Boot-Image Ihres Android-Geräts aus dem neuesten verfügbaren Bild (unabhängig davon, ob es sich um ein Standard-ROM oder ein benutzerdefiniertes ROM handelt).

Entpacken Sie nun das Bild mit diesem Code:
entpackenimg.sh .img

Suchen Sie als Nächstes die zImage-Datei und ersetzen Sie sie durch Ihr kompiliertes Kernel-Image. Benennen Sie es in das Boot-Image um.

Führen Sie nun diesen Code aus, um das Image neu zu packen:
repackimg.sh

Jetzt können Sie das neue Boot-Image mit Fastboot, TWRP usw. flashen.

Blinkt den Kernel in AnyKernel2

Laden Sie das neueste AnyKernel2 herunter

Wenden Sie diesen Patch an, um alle Demo-Dateien zu löschen.
wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff
patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff
rm addb6ea860aab14f0ef684f6956d17418f95f29a.diff

Platzieren Sie nun Ihr Kernel-Image im Stammverzeichnis der Datei und öffnen Sie die Datei anykernel.sh, um diese Werte zu ändern:

  • string : Ihr Kernel-Name
  • name # : Listen Sie alle Codenamen Ihres Geräts auf (aus dem /system/build.prop: ro.product.device, ro.build.product)
  • block : Der Pfad Ihres Boot-Images in Ihrer fstab. Die fstab kann von der Wurzel Ihres Geräts geöffnet werden und es sieht ungefähr so ​​aus: https://android.googlesource.com/devr/fstab.angler

Die erste Spalte ist der Wert, für den Sie einen Block festlegen möchten.

Jetzt den Kernel neu komprimieren und in AnyKernel2 flashen:
zip -r9 kernel.zip * -x README.md kernel.zip

Seien Sie gewarnt, dass viele Kernel von CAF ein Python-Skript enthalten, das -Werror auslöst, was dazu führt, dass Ihr Build Fehler bei den kleinsten Dingen auslöst. Für höhere GCC-Versionen (die mehr Warnungen enthalten) müssen Sie normalerweise Änderungen im Makefile vornehmen:

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 =

Bei Verwendung einer höheren GCC-Toolchain (5.x, 6.x, 7.x oder sogar 8.x) müssen Sie das GCC-Wrapper-Skript wie oben beschrieben nuken und eine vereinheitlichte GCC-Header-Datei verwenden (wählen Sie Folgendes, wenn Sie ein Include haben /linux/compiler-gcc#.h Datei):

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

Selbst wenn Sie viele Warnungen erhalten, müssen sie (normalerweise) nicht repariert werden.

Dein Kernel ist fertig und bereit zu gehen!

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

Facebook Twitter Google Plus Pinterest