Slik bygger du en tilpasset Android Kernel

Hvis du noen gang har lurt på hvordan du bygger en Android-kjernen, er denne veiledningen for deg. Å bygge din egen kjerne kan være en givende opplevelse, da det gir deg større kontroll over din Android-enhet, fra CPU, RAM, GPU til selv batteriet.

Dette er en veldig praktisk prosess som involverer mange kompilere og konsollkommandoer, men hvis du er kjent med Linux (eller bra i følgende retninger), bør det ikke være noe problem.

Vær oppmerksom på at denne veiledningen gjelder for ikke-Mediatek-enheter. Appual's har en kjernekompilerende guide spesifikk alliert for Mediatek-baserte Android-enheter her: Hvordan bygge Mediatek Android Kernel fra Source

Andre Appuals artikler av interesse inkluderer:

  • Slik bygger du tilpasset ROM fra Android Open Source Project | Pt. 2
  • Hvordan manuelt tema Android System UI

Hvis du bygger en tilpasset kjernen, trenger du bare å klone kjernen fra Git med kommandoer som følger med nedenfor. Men hvis du samler en lagerkjerne, må du vite hvor du skal få den opprinnelige kjernen fra kilde (for alle slags grunner).

Originale kjernekilder for ulike merker:

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

For å laste ned kjernen, bruk enten en git klone eller last ned tarball filen og trekk den ut.

Her er kommandoen git:

git klon -b

-ELLER-

tar -xvf

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

Dette bør klone kjernen / msm-repoen i en fiskemannmappe, og automatisk sjekke android-msm-angler-3.10-nougat-mr2.

Nå, fordi de fleste Android-enheter er ARM-baserte, må vi bruke en kompilator som vil målrette ARM-enheter - dette betyr at en verts / innfødt kompilator ikke fungerer, med mindre du samler på en annen ARM-enhet. Du har noen muligheter her. Du kan enten kompilere en selv hvis du vet hvordan du bruker noe som Crosstool-NG. Alternativt kan du laste ned en forhåndsbygget kompilator - som Google gir for Arm 32-bit og Arm64.

Før du laster ned en forhåndsbygget kompilator, må du vite den nøyaktige arkitekturen til enheten din, så bruk en app som CPU-Z for å bestemme den.

En annen populær verktøylinje ville være UberTC - men for alle kjerner høyere enn 4, 9, må du lappe dem, og å samle med Googles verktøykjerne er først beste praksis.

I hvert fall, når du har bestemt deg for verktøykjeden, må du klone den.
git klon

Nå peker Makefile til kompilatoren din, kjører den fra verktøylinjemappen .

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

Eksempel:

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

Fortell nå Makefile din enhetarkitektur.

  • eksport ARCH = && eksport SUBARCH =

Eksempel:

  • eksport ARCH = arm64 && eksport SUBARCH = arm64

Finn riktig defconfig ved å navigere til arch // configs-mappen i kjernekilden (f.eks. Arch / arm64 / configs).

Deretter finner du utviklerens riktig konfigurasjonsfil for kjernen du bygger. Det bør typisk være i form av _defconfig eller _defconfig. Defconfig vil instruere kompilatoren hvilke alternativer som skal inkluderes i kjernen.

Generiske Qualcomm Configs kan også bli funnet, dette vil vanligvis være noe som helst (msm-perf_defconfig, msmcortex-perf_defconfig).

Bygg kjernen

Kode:

gjør rent
gjør mrproper
gjøre
gjør -j $ (nproc -all)

Når disse kommandoene lykkes, bør du ha: en Image, Image-dtb, Image.gz eller Image.gz-dtb-fil på slutten.

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Hvis disse kommandoene mislyktes, må du kanskje spesifisere utdatakatalogen når du lager en ny CAF-basert kjerne, slik:

mkdir -p ut
gjør O = ut ren
gjør O = ut mrproper
gjør O = ut
lag O = ut -j $ (nproc -all)

Hvis det fortsatt ikke vil fungere, er noe ødelagt - kontroller overskriftene dine eller hent det opp med kjerneutviklerne.

Hvis kjernen ble kompilert, må du nå blinke den. Det er to forskjellige måter å gjøre dette på - du kan pakke ut og pakke om bootimagen ved hjelp av enten Android Image Kitchen eller AnyKernel2.

Det kan også være noen nyanser basert på bestemte enheter - du må spørre enhetsutviklerne om hjelp hvis dette er tilfelle.

Blinker kjernen i Android Image Kitchen

Last ned Android Image Kjøkken

Trekk ut Android-enhetens oppstartsbilde fra det nyeste tilgjengelige bildet (enten lager eller tilpasset ROM).

Pak nå ut bildet ved hjelp av denne koden:
unpackimg.sh .img

Deretter finner du zImage-filen, og erstatter den med ditt kompilerte kjernebilde - endre navn på det som var i oppstartsbildet.

Kjør nå denne koden for å pakke om bildet:
repackimg.sh

Nå kan du blinke det nye oppstartsbildet ved hjelp av hurtigbåt, TWRP, etc.

Blinker kjernen i AnyKernel2

Last ned den nyeste AnyKernel2

Bruk denne oppdateringen for å skylle ut alle demofilene.
wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff
patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff
rm addb6ea860aab14f0ef684f6956d17418f95f29a.diff

Legg nå kjernebildet ditt i roten av filen, og åpne anykernel.sh for å endre disse verdiene:

  • streng : kjernenavnet ditt
  • navn # : Oppgi alle enhetens kodenavn (fra /system/build.prop: ro.product.device, ro.build.product)
  • blokkere : Oppstartsbildeets sti i fstab. FSTAB kan åpnes fra roten til enheten din, og det vil se slik ut: https://android.googlesource.com/devr/fstab.angler

Den første kolonnen er verdien du vil sette blokk til.

Nå pakker du kjerne igjen, og blinker den i AnyKernel2:
zip -r9 kernel.zip * -x README.md kernel.zip

Vær advart om at mange kjerne fra CAF inkluderer et Python-skript som vil utløse -Werror, som i utgangspunktet fører til at byggingen din kaster feil på det minste av tingene. Så for høyere GCC-versjoner (som inkluderer flere advarsler), må du vanligvis gjøre endringer 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 =

Ved å bruke en høyere GCC toolchain (5.x, 6.x, 7.x eller 8.x) vil du kreve å koble GCC wrapper scriptet som ovenfor og bruke en samlet GCC header fil (velg følgende hvis du har en inkludere /linux/compiler-gcc#.h-filen):

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

Selv om du får mange advarsler, er de ikke nødvendige for å fikse (vanligvis).

Din kjernen er bygget og klar til å gå!

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Facebook Twitter Google Plus Pinterest