Logo no.nowadaytechnol.com

Hvordan Lage En Tilpasset Android-kjerne

Innholdsfortegnelse:

Hvordan Lage En Tilpasset Android-kjerne
Hvordan Lage En Tilpasset Android-kjerne

Video: Hvordan Lage En Tilpasset Android-kjerne

Video: Hvordan Lage En Tilpasset Android-kjerne
Video: Hvordan lage en fillekurv - norsk tutorial 2024, Mars
Anonim

Hvis du noen gang har lurt på "hvordan du bygger en Android-kjerne", er denne guiden noe for deg. Å bygge din egen kjerne kan være en givende opplevelse, da det vil gi deg større grad av kontroll over Android-enheten din, fra CPU, RAM, GPU til og med batteriet.

Dette er veldig praktisk prosess som involverer mye kompilering og konsollkommandoer, men hvis du er kjent med Linux (eller er flink til å følge instruksjonene), bør det ikke være noe problem.

Vær oppmerksom på at denne veiledningen er for enheter som ikke er fra Mediatek. Appual’s har kjernekompileringsveiledning spesifikk alliert for Mediatek-baserte Android-enheter her: Slik bygger du Mediatek Android Kernel fra kilde

Andre Appuals artikler av interesse inkluderer:

  • Hvordan lage tilpasset ROM fra Android Open Source Project Pt. 2
  • Hvordan manuelt tema Android System UI

Hvis du bygger tilpasset kjernen, trenger du bare å klone kjernen fra Git med kommandoene gitt nedenfor. Men hvis du kompilerer aksjekjerne, må du vite hvor du kan få den opprinnelige kjernen fra kilden (av alle slags grunner).

Opprinnelige kjernekilder for forskjellige merker:

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

For å laste ned kjernen, bruk enten git clone eller last ned tarballfilen og pakk den ut.

Her er git-kommandoen:

git klon -b

-ELLER-

tjære -xvf

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

Dette skal klone kjernen / msm repo i en sportsfiskermappe, og automatisk kasse android-msm-angler-3.10-nougat-mr2.

Nå fordi de fleste Android-enheter er ARM-baserte, må vi bruke kompilator som er målrettet mot ARM-enheter - dette betyr at verts- / native-kompilator ikke fungerer, med mindre du kompilerer på en annen ARM-enhet. Du har få alternativer her. Du kan enten lage en selv hvis du vet hvordan du bruker noe som Crosstool-NG. Alternativt kan du laste ned forhåndsbygd kompilator - som den Google gir for Arm 32-bit og Arm64.

Før du laster ned forhåndsbygd 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øykjede vil være UberTC - men for alle kjerner som er høyere enn 4,9, må du lappe dem, og det er best praksis å kompilere med Googles verktøykjede først.

Når du har bestemt deg for verktøykjeden, må du i alle fall klone den. git klo

Rett nå Makefile til kompilatoren din, kjører den fra verktøykjedemappen.

eksporter CROSS_COMPILE = $ (pwd) / bin / -

Eksempel:

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

Fortell nå Makefile enhetens arkitektur.

eksporter ARCH = && export SUBARCH =

Eksempel:

eksporter ARCH = arm64 && export SUBARCH = arm64

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

Finn deretter utviklerens riktige konfigurasjonsfil for kjernen du bygger. Det skal vanligvis være i form av _defconfig eller _defconfig. Defconfig vil instruere kompilatoren hvilke alternativer som skal inkluderes i kjernen.

Generiske Qualcomm-konfigurasjoner kan også bli funnet, disse vil vanligvis være noe sånt som (msm-perf_defconfig, msmcortex-perf_defconfig).

Å bygge kjernen

Kode:

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

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

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 = ute rent gjør O = ut mrproper lag O = ute lag O = ut -j $ (nproc –all

Hvis det fortsatt ikke vil fungere, er noe ødelagt - sjekk overskriftene dine eller ta det opp med kerneutviklerne.

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

Det kan også være noen nyanser basert på spesifikke enheter - du må be enhetsutviklerne om hjelp hvis dette er tilfelle.

Blinker kjernen i Android Image Kitchen

Last ned Android Image Kitchen

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

Pakk ut bildet med denne koden: pakke ut.sh.im

Finn deretter zImage-filen, og erstatt den med det kompilerte kjernebildet - endre navn på det som var i oppstartsbildet.

Kjør nå denne koden for å pakke inn bildet på nytt: repackimg.s

Nå kan du blinke det nye oppstartsbildet ved hjelp av fastboot, 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.dif

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

  • streng: ditt kjernenavn
  • Navn#: Liste opp alle enhetens kodenavn (fra /system/build.prop: ro.product.device, ro.build.product)
  • blokkere: Oppstartsbildets vei i fstab. Fstab kan åpnes fra roten til enheten din, og den vil se ut slik:

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

Nå zipper du kjernen på nytt, og blinker den i AnyKernel2: zip -r9 kernel.zip * -x README.md kernel.zi

Vær advart om at mange kjerner fra CAF inkluderer Python-skript som vil utløse –Werror, som i utgangspunktet får bygningen til å kaste feil på det minste. Så for høyere GCC-versjoner (som inkluderer flere advarsler), må du vanligvis gjøre endringer i Makefile:

diff --git a / Makefile b / Makefile indeks 1aaa760f255f..bfccd5594630 100644 --- a / Makefile +++ b / Makefile @@ -326,7 +326,7 @@ inkluderer $ (srctree) /scripts/Kbuild.include AS = $ (CROSS_COMPILE) som 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 = sparsom

- # Bruk innpakningen til kompilatoren. Denne innpakningen skanner etter ny - # advarsler og får bygningen til å stoppe når de møter dem. -CC = $ (srctree) /scripts/gcc-wrapper.py $ (REAL_CC) - CHECKFLAGS: = -D_linux_ -Dlinux -D_STDC_ -Dunix -D_unix_ / -Wbitwise -No-return-void $ (CF) CFLAGS_MODULE =

Hvis du bruker høyere GCC-verktøykjede (5.x, 6.x, 7.x eller til og med 8.x), vil du kreve GCC-wrapper-skriptet som ovenfor og bruke enhetlig GCC-topptekstfil (velg følgende hvis du har en include / linux /compiler-gcc#.h fil):

3.4 / 3.10: 3.18

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

Kjernen din er bygget og klar til bruk!

Anbefalt: