Sådan bygger du Android Kernel på Windows 10

Appual's har et par gode guider til Android-udvikling, såsom Sådan oprettes en tilpasset ROM fra Android Open Source Project - men disse guider er normalt rettet mod et rent Linux build-miljø.

I denne vejledning viser vi dig, hvordan du bygger en Android-kerne på Windows 10 - ja, vi bruger stadig et Linux build-miljø, men det vil være et Linux-undersystem i Windows 10. Så hvis du er en Windows 10 bruger, der er interesseret i at udvikle til Android, skal du følge vores guide omhyggeligt.

I denne vejledning lærer vi specifikt, hvordan man bygger en kerne til ARM- og MediaTek-enheder, tilføjer funktioner og en grundlæggende oversigt over brugen af ​​Git.

Krav

  • Windows 10 x64 (med Fall Creators opdatering)

Opsætning af Linux-miljøet

  1. I Windows 10 skal du gå til Indstillinger> Opdatering og sikkerhed> For udviklere> aktiver udviklermode.
  2. Gå nu til Kontrolpanel> Programmer> Tænd eller sluk Windows-funktioner> aktiver Windows Subsystem til Linux.
  3. Genstart din pc.
  4. Start Linux-undersystemet, og lad det gå gennem downloadprocessen. Indstil en adgangskode, og tab ikke den.
  5. Gå nu til Windows app store, og download Ubuntu.
  6. Start Ubuntu på Windows 10-skrivebordet, og det vil anmode om et brugernavn og adgangskode.
  7. I Ubuntu skal du starte den oprindelige terminal og skrive følgende kommando: apt-get-opdatering
  8. Dette fortsætter med at opdatere alle repos for apps og afhængigheder.
  9. Næste i terminaltypen: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. For at kontrollere, om alle afhængigheder var korrekt installeret, skal du skrive 'gcc' i terminalen (ingen anførselstegn).
  11. Hvis “gcc” allerede er installeret, skal du se “gcc: dødelig fejl: ingen inputfil”
  12. Nu kan du indtaste 'make' i terminalen. Hvis “make” allerede er installeret, skal du se “make: *** intet mål specificeret og ingen makefile fundet. hold op."
  13. Næste type 'git', og hvis "git" allerede er installeret, skal du se en masse basale git-kommandoer.
  14. Nu har vi brug for nogle værktøjskæder (der er flere typer, herunder GCC, Linaro og en håndfuld brugerdefinerede). Nogle enheder kan kræve forskellige værktøjskæder, for eksempel vil ikke alle enhedskerner starte eller kompilere med GCC.

For ARM-enheder

Vi bruger GCC 4.7 til dette.

  1. Åbn Linux-terminalen, og skriv: mkdir-kerne
  2. Skriv nu: cd-kerne
  3. (det behøver ikke at være 'kerne', dette er for enkelheds skyld, du kan navngive det, hvad du vil.)
  4. Skriv nu: git klon //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

For ARM 64-enheder

Du har brug for en 64-bit kernelkompiler til ARM 64-enheder, f.eks. Aarch64.

Henter kildefilerne til din enhed

Dette er en vanskelig del, da du har brug for at finde en GitHub-repo, der er vært for din kernekilde. Du bliver selvfølgelig nødt til at søge efter det, sandsynligvis findes det på XDA-fora.

Her er et eksempel på kernekilde Git.

På øverste venstre side skal du se “Filial: Komplet af xxxx”.

Der er forskellige versioner af en kerne / projekt, som regel adskilt af "Testing", "Beta", "Final Release" osv.

Kernemapperne er typisk som følger:

  • / arch / arm / configs : Denne indeholder forskellige konfigurationsfiler til enheden, såsom guvernører osv.
  • / output / arch / arm / boot / : Det er her, zimagen gemmes.
  • build.sh : Et script, der forenkler byggeprocessen.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Dette er typisk et værktøjskæde placeret i kernekilden, hvilket gør det lettere at finde.

Du bliver nødt til at downloade din kernekilde.

Åbn Linux-terminalen, og sørg for, at du er i den kerne-mappe, du tidligere har oprettet (cd-kerne).

Indtast derefter terminal: "git klon" URL til githubkernen "-b" filialens navn "

For eksempel: “git klon //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW”

Bygning af kernen

For at gøre det lettere kan du navigere til lokationen i filudforskeren. Det skal være / home / user ID / kernel (eller hvad du end kaldte kerne-mappen).

Du skal se to mapper inde i værktøjskæden og kernekilden. Gå ind i kildekildemappen.

For ARM-enheder

Skriv følgende kommandoer i en terminal:

 #! / bin / bash eksport ARCH = arm eksport CROSS_COMPILE = mkdir output make -C $ (pwd) O = output "navn på defconfig og variant om nødvendigt" make -j4 -C $ (pwd) O = output 

Her er en oversigt over, hvad disse kommandoer gør for at gøre dette lettere i fremtiden.

  • #! / bin / bash: Fortæller, at scriptet skal køre i shell-kommando
  • eksport ARCH = arm: Definition af hvilken kernearkitekturtype det er (for eksempel arm64 osv.)
  • eksport CROSS_COMPILE = : Find hvor værktøjskæden befinder sig. Det skal matche den nøjagtige sti, og strejfen i sidste ende er virkelig obligatorisk.
  • mkdir output: Dette opretter et bibliotek til at gemme den kompilerede zimage
  • make -C $ (pwd) O = output : Definition af defconfig til styring af kernekompilering.
  • make -j4 -C $ (pwd) O = output : Når byggeprocessen begynder, fortæller -j # det, hvor hurtigt man skal prøve at samle. Du indstiller typisk dette nummer i henhold til din CPU. At indstille -j32 på en budget-CPU for eksempel ville sandsynligvis forårsage massiv ustabilitet.
  • cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Dette er til at flytte billede til en anden sti.

Et andet eksempel:

 #! / bin / bash eksport ARCH = armeksport 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 / arm / boot / z 

For ARM 64-enheder

 #! / bin / bash export ARCH = arm64 eksport CROSS_COMPILE = "sti til din værktøjskæde" (det skal ende med noget som "nameofarch-iets-") mkdir output make -C $ (pwd) O = output "navn på defconfig og variant om nødvendigt "make -j4 -C $ (pwd) O = output 

For Mediatek (MTK) enheder

 #! / bin / bash export CROSS_COMPILE = "sti til dit værktøjskæde" (det skal ende med noget som "nameofarch-noget-") eksport ARCH = arm ARCH_MTK_PLATFORM = lave "navn på defconfig og variant om nødvendigt" make -j4 

Når du har afsluttet de nødvendige trin til din kernearkitektur, kan du indtaste terminalen: sudo bash build.sh

Derefter indtaster du dit brugeradgangskode, og kompileringsprocessen begynder.

Det kan tage et stykke tid, men typisk ikke meget længe, ​​at kompilere en kerne er ikke som at samle en hel Android ROM. Dette er virkelig CPU-afhængig - for eksempel bør en AMD Phenom X4 3, 4 GHz med 8 GB RAM tage ca. 10 minutter at kompilere fra start til slut.

Når det er færdigt, skal det underrette dig med en meddelelse som "zimage er klar".

ARM- og ARM64-enheder

Gå til “/ Output / arch / arm / boot /” for at finde din zimage.

Mediatek enheder

Gå til “/ arch / arm / boot /” for at finde din zimage.

Ikke alle kerneopbygninger resulterer i en Zimage-fil, den kan undertiden bygges som andre billedformater.

Vigtigt: Hvis du skal samle igen, anbefales det, at du indtaster kommandoer, gør rene og gør mrproper, inden du begynder kompileringsprocessen igen.

At lave kernen boot

Der er to muligheder, du kan vælge.

Du kan enten bruge anykernel-metoden (som defineret af XDA-bruger @ osm0sis i denne XDA-tråd). Du skal læse hele tutorial, men et resumé af trinnene er som følger:

  1. Placer zImage i roden (dtb og / eller dtbo skal også gå her for enheder, der kræver brugerdefinerede enheder, hver vil falde tilbage til originalen, hvis ikke inkluderet)
  2. Placer eventuelle nødvendige ramdiskfiler i / ramdisk og moduler i / moduler (med den fulde sti som / moduler / system / lib / moduler)
  3. Placer eventuelle nødvendige patch-filer (generelt delvise filer, der følger med kommandoer) i / patch
  4. Rediger anykernel.sh for at tilføje din kernels navn, boot-partitionsplacering, tilladelser til inkluderede ramdisk-filer og bruge metoder til alle nødvendige ramdisk-ændringer (eventuelt også placere banner- og / eller versionfiler i roden for at få disse vist under flash)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x. giv README.md * pladsholder`

Den anden metode, du har til rådighed, er at pakke op boot.img fra den samme ROM (såsom CM, TouchWiz, EMUI osv.) Og den samme Android-version. Derefter bytter du Zimage. Igen, dette er en rigtig kompliceret proces, og du skal læse den nøjagtige tutorial, men et resumé af trinnene er:

  1. Unzip.
  2. Brug enten kommandolinjen “pakke ud”, eller simpelthen træk og slip billedet. Dette vil opdele billedet og pakke ramdisken ud i en undermappe.
  3. Ændre ramdisken, som du vil.
  4. Repackimg batch-scriptet kræver ingen input og rekombinerer blot den tidligere delte zImage med den nyligt pakket modificerede ramdisk ved hjælp af alle de originale billedoplysninger (som også blev delt og gemt).
  5. Oprydning batch script nulstiller mappen til dens oprindelige tilstand, fjerner split_img + ramdisk-mapper og eventuelle nye pakket ramdisk- eller billedfiler.

Inden du blinker din kerne, skal du oprette en sikkerhedskopi af dit lager boot.img og derefter blinke din kerne for at se, om det giver dit Android-system mulighed for at starte.

Tilføjelse af funktioner til din kerne

Tilføjelse af funktioner til din kerne er en god måde at krydre det på. Der er mange ting, du kan finjustere, såsom CPU-regulatorer, IO-planlægere, overklokning af GPU, lydforbedringer osv.

Et eksempel på tilføjelse af en guvernør er her (denne guvernør kaldes Intellimm).

Vi kan se i de første 2 tekstbokse, at i “arch / arm / configs /” “msm8974_sec_defconfig” og “cm_msm8974_sec_defconfig” er blevet ændret.

Mellem linjerne 140 og 141 i denne filer er denne tekst tilføjet: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”

(Denne linje er beregnet til at aktivere Intellimm, når du kompilerer din kerne)

Samme teknik gælder for de andre tekstbokse (hvad der er tilføjet og slettet og dets placering)

Afhængigt af de funktioner, du tilføjer, kan flere eller færre filer ændres, tilføjes eller slettes.

Så for at opsummere det, en forpligtelse, så lad os se alle de ændringer, der er foretaget, og alt andet!

Generelle tip og tricks

Sådan ændres kernenavn og version:

Den enkle metode:

Rediger denne linje i din defconfig-fil:

 "CONFIG_LOCALVERSION =" - "efter - i din defconfig 

Eksempel: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

De avancerede metoder:

Naviger til Makefile i rodmappen til din kernekilde.

Tilføj disse linjer:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

Ændr IKKE linjerne Version, PatchLevel, Sublevel eller Extraversion.

Alternativ metode:

Gå til scripts / mkcompile_h og tilføj disse linjer:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Løsning af PATH-problemer:

Hvis du støder på fejlen "Er din vej korrekt?", Prøv dette i Linux-terminalen:

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

Adgang til dine Ubuntu-mapper fra Windows 10

Din vej til Ubuntu skal typisk være:

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

Men du bør ikke redigere filer direkte fra Windows, da dette typisk vil ødelægge tilladelserne på dem - du bliver derefter nødt til at nulstille tilladelserne fra Linux-terminalen.

Interessante Artikler