Sådan opbygger du en brugerdefineret Android Kernel

Hvis du nogensinde har spekuleret på, hvordan du opbygger en Android-kerne, er denne vejledning til dig. At opbygge din egen kerne kan være en givende oplevelse, da det giver dig større kontrol over din Android-enhed, fra CPU, RAM, GPU til selv batteriet.

Dette er en meget praktisk proces, der involverer mange kompilere og konsol kommandoer, men hvis du er bekendt med Linux (eller god i følgende retninger), bør det ikke være noget problem.

Bemærk venligst, at denne vejledning gælder for ikke-Mediatek-enheder. Appual's har en kernel-kompilerende vejledende specifik allieret for Mediatek-baserede Android-enheder her: Sådan opbygger du Mediatek Android Kernel fra Source

Andre Appuals artikler af interesse omfatter:

  • Sådan opbygges brugerdefineret ROM fra Android Open Source Project | Pt. 2
  • Sådan manuelt tema Android System UI

Hvis du opbygger en brugerdefineret kerne, skal du bare klone kernen fra Git med kommandoer, der er angivet nedenfor. Men hvis du kompilerer en lagerkernel, skal du vide, hvor du skal hente den oprindelige kerne fra kilden (af alle mulige årsager).

Originale kernekilder til forskellige mærker:

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

For at downloade kernen skal du enten bruge en git klon eller downloade tarball filen og uddrage den.

Her er kommandoen git:

git klon -b

-ELLER-

tjære -xvf

Så som et eksempel, ville dette være kommandoen til at hente den nyeste Nexus 6P Nougat 3.10-kerne fra Google:
git klon -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angler

Dette skal klone kerne / msm repo i en lystfisk mappe, og automatisk checkout android-msm-angler-3.10-nougat-mr2.

Nu, fordi de fleste Android-enheder er ARM-baserede, skal vi bruge en compiler, der skal målrette ARM-enheder - det betyder, at en værts / compiler ikke fungerer, medmindre du samler på en anden ARM-enhed. Du har et par muligheder her. Du kan enten sammensætte en selv, hvis du ved hvordan du bruger noget som Crosstool-NG. Alternativt kan du downloade en forudbygget compiler - sådan som Google giver Arm 32-bit og Arm64.

Før du downloader en forudbygget kompilator, skal du kende den nøjagtige arkitektur på din enhed, så brug en app som CPU-Z til at bestemme den.

Et andet populært værktøjskæde ville være UberTC - men for kerne højere end 4, 9 skal du patchere dem, og det er først og fremmest at kompilere med Googles værktøjskæde.

Under alle omstændigheder skal du klone det, når du har besluttet dig for værktøjskæden.
git klon

Nu peg Makefile til din compiler, kører det fra inde i værktøjslinjemappen .

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

Eksempel:

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

Fortæl nu Makefile din enhedsarkitektur.

  • eksport ARCH = && eksport SUBARCH =

Eksempel:

  • eksport ARCH = arm64 && eksport SUBARCH = arm64

Find din korrekte defconfig ved at navigere til mappen arch // configs i kernekilden (fx arch / arm64 / configs).

Find derefter udviklerens korrekte konfigurationsfil for den kerne, du opbygger. Det skal typisk være i form af _defconfig eller _defconfig. Defconfig vil instruere kompilatoren hvilke muligheder der skal indgå i kernen.

Generiske Qualcomm Configs kan også findes, disse vil normalt være noget som (msm-perf_defconfig, msmcortex-perf_defconfig).

Opbygning af kernen

Kode:

gør rent
gøre mrproper
lave
make -j $ (nproc -all)

Når disse kommandoer lykkes, skal du have: en Image, Image-dtb, Image.gz eller Image.gz-dtb-fil i slutningen.

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Hvis disse kommandoer mislykkedes, skal du muligvis angive outputkatalogen, når du laver en ny CAF-baseret kerne, som denne:

mkdir -p ud
gør O = ud ren
lav O = ud mrproper
lav O = ud
lav O = ud -j $ (nproc -all)

Hvis det stadig ikke vil arbejde, er noget brudt - kontroller dine overskrifter eller hent det op med kernel-udviklerne.

Hvis kernen blev kompileret, skal du nu blinke den. Der er to forskellige måder at gøre dette på - du kan pakke og ompakke bootbilledet ved hjælp af enten Android Image Kitchen eller AnyKernel2.

Der kan også være nogle nuancer baseret på specifikke enheder - du skal spørge din enhedsudvikler om hjælp, hvis det er tilfældet.

Blinker kernen i Android Image Kitchen

Download Android Image Køkken

Uddrag din Android-enheds boot-billede fra det seneste tilgængelige billede (enten lager eller brugerdefineret ROM).

Pak nu billedet ud ved hjælp af denne kode:
unpackimg.sh .img

Find derefter zImage-filen, og erstat den med dit kompilerede kernel image - omdøbe det til det, der var i bootbilledet.

Kør nu denne kode for at ompakke billedet:
repackimg.sh

Nu kan du blinke det nye bootbillede ved hjælp af fastboot, TWRP osv.

Blinker kernen i AnyKernel2

Download den nyeste AnyKernel2

Anvend denne patch for at skylle ud alle demofiler.
wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff
patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff
rm addb6ea860aab14f0ef684f6956d17418f95f29a.diff

Placer nu dit kernebillede i roden af ​​filen, og åbn anykernel.sh for at ændre disse værdier:

  • streng : dit kerne navn
  • navn # : Liste over alle enheds kodeord (fra /system/build.prop: ro.product.device, ro.build.product)
  • blokere : Dit startbillede er sti i din fstab. Fstab'en kan åbnes fra roden på din enhed, og det vil se sådan ud: https://android.googlesource.com/devr/fstab.angler

Den første kolonne er den værdi, du vil angive blok til.

Nu zip zip-koden igen og blinke den i AnyKernel2:
zip -r9 kernel.zip * -x README.md kernel.zip

Vær advaret om, at mange kerner fra CAF inkluderer et Python-script, der vil udløse -Werror, hvilket i grunden får din bygning til at smide fejl på det mindste af ting. Så for højere GCC-versioner (som indeholder flere advarsler), skal du typisk foretage ændringer i 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 =

Brug af en højere GCC værktøjskæde (5.x, 6.x, 7.x eller 8.x) kræver, at du nukke GCC wrapper scriptet som ovenfor og bruge en samlet GCC header fil (vælg følgende hvis du har en inkludere /linux/compiler-gcc#.h fil):

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

Selvom du får mange advarsler, er de ikke nødvendige for at rette (typisk).

Din kerne er bygget og klar til at gå!

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Facebook Twitter Google Plus Pinterest