So erstellen Sie einen Android-Kernel unter Windows 10

Appual’s bietet einige großartige Anleitungen zur Android-Entwicklung, z. B. Wie man ein benutzerdefiniertes ROM aus einem Android Open Source-Projekt erstellt. Diese Anleitungen sind jedoch normalerweise auf eine reine Linux-Build-Umgebung ausgerichtet.

In diesem Handbuch zeigen wir Ihnen, wie Sie einen Android-Kernel unter Windows 10 erstellen. Ja, wir verwenden weiterhin eine Linux-Build-Umgebung, aber es handelt sich um ein Linux-Subsystem unter Windows 10. Wenn Sie also Windows 10 sind Benutzer, die an der Entwicklung für Android interessiert sind, befolgen unsere Anleitung sorgfältig.

In diesem Handbuch erfahren Sie speziell, wie Sie einen Kernel für ARM- und MediaTek-Geräte erstellen, Funktionen hinzufügen und einen grundlegenden Überblick über die Verwendung von Git erhalten.

Bedarf

  • Windows 10 x64 (mit Fall Creator-Update)

Einrichten der Linux-Umgebung

  1. Gehen Sie unter Windows 10 zu Einstellungen> Update und Sicherheit> Für Entwickler> Entwicklermodus aktivieren.
  2. Gehen Sie nun zu Systemsteuerung> Programme> Windows-Funktionen ein- oder ausschalten> Windows-Subsystem für Linux aktivieren.
  3. Starten Sie Ihren PC neu.
  4. Starten Sie das Linux-Subsystem und lassen Sie es den Download-Prozess durchlaufen. Legen Sie ein Passwort fest und verlieren Sie es nicht.
  5. Gehen Sie jetzt zum Windows App Store und laden Sie Ubuntu herunter.
  6. Starten Sie Ubuntu auf dem Windows 10-Desktop und Sie werden nach einem Benutzernamen und einem Kennwort gefragt.
  7. Starten Sie in Ubuntu das native Terminal und geben Sie den folgenden Befehl ein: apt-get update
  8. Dadurch werden alle Repos für Apps und Abhängigkeiten aktualisiert.
  9. Weiter im Terminaltyp: sudo apt-get install -y build-essential Kernel-Paket libncurses5-dev bzip2
  10. Um zu überprüfen, ob alle Abhängigkeiten korrekt installiert wurden, geben Sie ‘gcc’ in das Terminal ein (keine Anführungszeichen).
  11. Wenn “gcc” bereits installiert ist, sollte “gcc: schwerwiegender Fehler: keine Eingabedatei” angezeigt werden.
  12. Jetzt können Sie im Terminal ‘make’ eingeben. Wenn “make” bereits installiert ist, sollte “make: *** kein Ziel angegeben und kein Makefile gefunden” angezeigt werden. halt.”
  13. Geben Sie als Nächstes ‘git’ ein. Wenn “git” bereits installiert ist, sollten einige grundlegende git-Befehle angezeigt werden.
  14. Jetzt brauchen wir einige Toolchains (es gibt verschiedene Typen, einschließlich GCC, Linaro und eine Handvoll benutzerdefinierter). Einige Geräte erfordern möglicherweise andere Toolchains. Beispielsweise werden nicht alle Gerätekerne mit GCC gestartet oder kompiliert.

Für ARM-Geräte

Wir werden dafür GCC 4.7 verwenden.

  1. Öffnen Sie das Linux-Terminal und geben Sie Folgendes ein: mkdir kernel
  2. Geben Sie nun Folgendes ein: cd kernel
  3. (Es muss nicht unbedingt ‘Kernel’ sein, dies ist der Einfachheit halber, Sie können es benennen, was Sie wollen.)
  4. Geben Sie nun Folgendes ein: git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Für ARM 64-Geräte

Sie benötigen einen 64-Bit-Kernel-Compiler für ARM 64-Geräte, z. B. aarch64.

Abrufen der Quelldateien für Ihr Gerät

Dies ist ein schwieriger Teil, da Sie ein GitHub-Repo finden müssen, das Ihre Kernelquelle hostet. Sie müssen natürlich danach suchen, höchstwahrscheinlich finden Sie es in XDA-Foren.

Hier ist ein Beispiel Kernelquelle Git.

Oben links sollte “Branch: Completed by xxxx” angezeigt werden.

Es gibt verschiedene Versionen eines Kernels / Projekts, die normalerweise durch “Testen”, “Beta”, “Endgültige Version” usw. getrennt sind.

Die Kernel-Ordner lauten normalerweise wie folgt:

  • / arch / arm / configs: Diese enthält verschiedene Konfigurationsdateien für das Gerät, z. B. Governors usw.
  • / output / arch / arm / boot /: Hier wird das Zimage gespeichert.
  • build.sh: Ein Skript, das den Erstellungsprozess vereinfacht.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2: Dies ist normalerweise eine Toolchain, die in der Kernelquelle platziert wird, um das Auffinden zu erleichtern.

Sie müssen Ihre Kernelquelle herunterladen.

Öffnen Sie das Linux-Terminal und stellen Sie sicher, dass Sie sich in dem zuvor erstellten Kernel-Ordner befinden (CD-Kernel).

Geben Sie dann das Terminal ein: “git clone” URL des Github-Kernels “-b” Name des Zweigs ”

Zum Beispiel: „Git-Klon https://github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW ”

Kernel erstellen

Zur Vereinfachung können Sie zum Speicherort im Datei-Explorer navigieren. Es sollte / home / user ID / kernel sein (oder wie auch immer Sie den Kernel-Ordner benannt haben).

Sie sollten zwei Ordner für die Toolchain und die Kernelquelle sehen. Gehen Sie in den Kernel-Quellordner.

Für ARM-Geräte

Geben Sie in einem Terminal die folgenden Befehle ein:

#!/bin/bash

export ARCH=arm
export CROSS_COMPILE=

mkdir output

make -C $(pwd) O=output "name of defconfig and variant if needed"
make -j4 -C $(pwd) O=output

Hier finden Sie eine Übersicht über die Funktionsweise dieser Befehle, um dies in Zukunft zu vereinfachen.

  • #! / bin / bash: Weist das Skript an, im Shell-Befehl ausgeführt zu werden
  • export ARCH = arm: Definieren, um welchen Kernel-Architekturtyp es sich handelt (z. B. arm64 usw.)
  • export CROSS_COMPILE = : Suchen Sie, wo sich die Toolchain befindet. Es muss mit dem genauen Pfad übereinstimmen, und der Bindestrich am Ende ist wirklich obligatorisch.
  • mkdir Ausgabe: Dadurch wird ein Verzeichnis zum Speichern des kompilierten Zimage erstellt
  • make -C $ (pwd) O = Ausgabe : Definieren von defconfig zur Steuerung der Kernel-Kompilierung.
  • make -j4 -C $ (pwd) O = Ausgabe: Wenn der Erstellungsprozess beginnt, gibt -j # an, wie schnell versucht werden soll, zu kompilieren. Normalerweise stellen Sie diese Nummer entsprechend Ihrer CPU ein. Das Einstellen von -j32 auf einer Budget-CPU würde beispielsweise wahrscheinlich zu einer massiven Instabilität führen.
  • cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage: Dies dient zum Verschieben von Bildern auf einen zweiten Pfad.

Ein anderes Beispiel:

#!/bin/bash

export ARCH=arm
export CROSS_COMPILE=$(pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-

mkdir output

make -C $(pwd) O=output msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG=selinux_defconfig
make -j4 -C $(pwd) O=output

cp output/arch/arm/boot/Image $(pwd)/arch/arm/boot/zImage

Für ARM 64-Geräte

#!/bin/bash

export ARCH=arm64
export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-")

mkdir output

make -C $(pwd) O=output "name of defconfig and variant if needed" 
make -j4 -C $(pwd) O=output

Für Mediatek (MTK) Geräte

#!/bin/bash

export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-")

export ARCH=arm ARCH_MTK_PLATFORM=

make "name of defconfig and variant if needed"

make -j4

Wenn Sie die für Ihre Kernelarchitektur erforderlichen Schritte ausgeführt haben, können Sie das Terminal eingeben: sudo bash build.sh

Anschließend geben Sie Ihr Benutzerkennwort ein und der Kompilierungsvorgang beginnt.

Es kann eine Weile dauern, ist aber normalerweise nicht sehr lang. Das Kompilieren eines Kernels entspricht nicht dem Kompilieren eines gesamten Android-ROM. Dies ist wirklich CPU-abhängig – zum Beispiel sollte ein AMD Phenom X4 3,4 GHz mit 8 GB RAM etwa 10 Minuten dauern, um von Anfang bis Ende zu kompilieren.

Wenn es fertig ist, sollte es Sie mit einer Meldung wie “zimage is ready” benachrichtigen.

ARM- und ARM64-Geräte

Gehen Sie zu “/ Output / arch / arm / boot /”, um Ihr Zimage zu finden.

Mediatek-Geräte

Gehen Sie zu “/ arch / arm / boot /”, um Ihr Bild zu finden.

Nicht alle Kernel-Builds führen zu einer Zimage-Datei. Sie kann manchmal auch als andere Bildformate erstellt werden.

Wichtig: Wenn Sie erneut kompilieren möchten, wird empfohlen, die Befehle make clean und make mrproper einzugeben, bevor Sie den Kompilierungsprozess erneut starten.

Kernel booten

Sie können zwischen zwei Optionen wählen.

Sie können entweder die anykernel-Methode verwenden (wie vom XDA-Benutzer @ osm0sis in definiert) dieser XDA-Thread). Sie sollten das gesamte Tutorial lesen, aber eine Zusammenfassung der Schritte lautet wie folgt:

  1. Platzieren Sie zImage im Stammverzeichnis (dtb und / oder dtbo sollten auch für Geräte verwendet werden, für die benutzerdefinierte Geräte erforderlich sind. Jedes Gerät greift auf das Original zurück, wenn es nicht enthalten ist.)
  2. Platzieren Sie alle erforderlichen Ramdisk-Dateien in / ramdisk und Module in / modules (mit dem vollständigen Pfad wie / modules / system / lib / modules).
  3. Platzieren Sie alle erforderlichen Patch-Dateien (im Allgemeinen Teildateien, die zu Befehlen gehören) in / patch
  4. Ändern Sie die Datei anykernel.sh, um den Namen Ihres Kernels, den Speicherort der Bootpartition, die Berechtigungen für enthaltene Ramdisk-Dateien und Methoden für erforderliche Ramdisk-Änderungen hinzuzufügen (optional können Sie auch Banner- und / oder Versionsdateien im Stammverzeichnis platzieren, damit diese während des Flash-Vorgangs angezeigt werden).
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

Die andere verfügbare Methode ist das Entpacken der Datei boot.img aus demselben ROM (z. B. CM, TouchWiz, EMUI usw.) und derselben Android-Version. Sie würden dann das Zimage tauschen. Auch dies ist ein wirklich komplizierter Prozess und Sie sollten das lesen genaues Tutorial, aber eine Zusammenfassung der Schritte ist:

  1. Entpacken.
  2. Verwenden Sie entweder die Befehlszeile “unpackimg ” oder ziehen Sie das Bild einfach per Drag & Drop. Dadurch wird das Image aufgeteilt und die Ramdisk in ein Unterverzeichnis entpackt.
  3. Ändern Sie die Ramdisk nach Ihren Wünschen.
  4. Das Repackimg-Batch-Skript erfordert keine Eingabe und kombiniert einfach das zuvor geteilte zImage mit der neu gepackten modifizierten Ramdisk unter Verwendung aller ursprünglichen Bildinformationen (die ebenfalls geteilt und gespeichert wurden) neu.
  5. Das Bereinigungs-Batch-Skript setzt den Ordner auf seinen Ausgangszustand zurück und entfernt die Verzeichnisse split_img + ramdisk und alle neuen gepackten Ramdisk- oder Image-Dateien.

Bevor Sie Ihren Kernel flashen, sollten Sie eine Sicherungskopie Ihrer Standard-Datei boot.img erstellen und dann Ihren Kernel flashen, um festzustellen, ob Ihr Android-System damit booten kann.

Hinzufügen von Funktionen zu Ihrem Kernel

Das Hinzufügen von Funktionen zu Ihrem Kernel ist eine großartige Möglichkeit, ihn aufzupeppen. Es gibt eine Menge Dinge, die Sie optimieren können, wie z. B. CPU-Regler, E / A-Scheduler, Übertakten der GPU, Audioverbesserungen usw.

Ein Beispiel für das Hinzufügen eines Governors ist Hier (Dieser Gouverneur trägt den Codenamen Intellimm).

In den ersten beiden Textfeldern sehen wir, dass in “arch / arm / configs /” “msm8974_sec_defconfig” und “cm_msm8974_sec_defconfig” geändert wurden.

Zwischen den Zeilen 140 und 141 dieser Dateien wurde folgender Text hinzugefügt: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”
(Diese Zeile dient zum Aktivieren von Intellimm beim Kompilieren Ihres Kernels.)

Die gleiche Technik gilt für die anderen Textfelder (was hinzugefügt und gelöscht wurde und wo es sich befindet)

Abhängig von den Funktionen, die Sie hinzufügen, können mehr oder weniger Dateien geändert, hinzugefügt oder gelöscht werden.

Zusammenfassend lässt sich sagen, dass Sie mit einem Commit alle vorgenommenen Änderungen und alles andere sehen können!

Allgemeine Tipps und Tricks

So ändern Sie den Namen und die Version des Kernels:

Die einfache Methode:

Bearbeiten Sie diese Zeile in Ihrer defconfig-Datei:

"CONFIG_LOCALVERSION="-" after - in your defconfig

Beispiel: CONFIG_LOCALVERSION = “- XenomTW-3.2.6”

Die fortgeschrittenen Methoden:

Navigieren Sie zum Makefile im Stammordner Ihrer Kernelquelle.

Fügen Sie diese Zeilen hinzu:

CONFIG_LOCALVERSION="nameofyourkernel"
LOCALVERSION="versionofyourkernel"

Ändern Sie NICHT die Zeilen Version, PatchLevel, Sublevel oder Extraversion.

Alternative Methode:

Gehen Sie zu scripts / mkcompile_h und fügen Sie die folgenden Zeilen hinzu:

LINUX_COMPILE_BY="nameofyourchoice"
LINUX_COMPILE_HOST="nameofyourchoice"

PATH-Probleme lösen:

Wenn der Fehler “Ist Ihr Pfad korrekt?” Stößt, versuchen Sie dies im Linux-Terminal:

"export PATH="pathtotoolchainlocation"/bin:$PATH"

Zugriff auf Ihre Ubuntu-Ordner über Windows 10

Ihr Weg zu Ubuntu sollte normalerweise sein:

C: Benutzer ”NAME” AppData Local Packages CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc LocalState rootfs home

Sie sollten Dateien jedoch nicht direkt unter Windows bearbeiten, da dies normalerweise die Berechtigungen für sie verletzt. Sie müssten dann die Berechtigungen innerhalb des Linux-Terminals zurücksetzen.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *