Kako sestaviti Android Kernel v operacijskem sistemu Windows 10

Appual's ima nekaj odličnih vodnikov za razvoj Android, na primer Kako sestaviti ROM po meri iz odprtokodnega projekta Android - vendar so ti vodiči običajno usmerjeni v čisto okolje za gradnjo Linuxa.

V tem priročniku vam bomo pokazali, kako sestaviti Androidovo jedro v sistemu Windows 10 - ja, še vedno bomo uporabljali okolje za gradnjo Linuxa, vendar bo to podsistem Linux v sistemu Windows 10. Torej, če ste Windows 10 uporabnika, ki ga zanima razvoj za Android, natančno upoštevajte naš vodnik.

V tem priročniku se bomo posebej naučili, kako sestaviti jedro za naprave ARM in MediaTek, dodati funkcije in osnovni pregled uporabe Gita.

Zahteve

  • Windows 10 x64 (s posodobitvijo Fall Creator-ja)

Nastavitev okolja Linux

  1. V sistemu Windows 10 odprite Nastavitve> Posodobitev in varnost> Za razvijalce> omogočite način razvijalcev.
  2. Zdaj pojdite na nadzorno ploščo> Programi> Vklop ali izklop funkcij sistema Windows> omogočite podsistem Windows za Linux.
  3. Znova zaženite računalnik.
  4. Zaženite podsistem Linux in mu omogočite postopek prenosa. Nastavite geslo in ga ne izgubite.
  5. Zdaj pojdite v trgovino z aplikacijami Windows in prenesite Ubuntu.
  6. Zaženite Ubuntu na namizju Windows 10 in zahteval bo uporabniško ime in geslo.
  7. V Ubuntu zaženite izvorni terminal in vnesite ta ukaz: apt-get update
  8. S tem boste posodobili vse repozicije za aplikacije in odvisnosti.
  9. Naslednje v vrsti terminala: sudo apt-get install -y vgradite ključni jedrni paket libncurses5-dev bzip2
  10. Če želite preveriti, ali so bile vse odvisnosti pravilno nameščene, v terminal vnesite 'gcc' (brez navednic).
  11. Če je »gcc« že nameščen, bi morali videti »gcc: fatal error: no input file«
  12. Zdaj lahko v terminalu vtipkate 'make'. Če je »make« že nameščen, bi morali videti »make: *** ni določen cilj in ni najden makefile. nehaj. "
  13. Naslednji tip je git, in če je že nameščen git, boste morali videti kopico osnovnih git ukazov.
  14. Zdaj potrebujemo nekaj orodij (obstaja več vrst, vključno z GCC, Linaro in peščico po meri). Nekatere naprave morda zahtevajo različne verige orodij, na primer ne bodo vsa jedra naprav zagnana ali sestavljena z GCC.

Za naprave ARM

Za to bomo uporabili GCC 4.7.

  1. Odprite terminal Linux in vnesite: mkdir jedro
  2. Zdaj vnesite: cd jedro
  3. (ni nujno, da je to 'jedro', to je zaradi poenostavitve, lahko ga poimenujete karkoli želite.)
  4. Zdaj vnesite: git klon //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Za naprave ARM 64

Za naprave ARM 64 potrebujete 64-bitni prevajalnik jeder, na primer aarch64.

Pridobivanje izvornih datotek za vašo napravo

To je težaven del, saj morate poiskati repo GitHub, ki gosti vaš izvor jedra. Seveda ga boste morali iskati, najverjetneje ga lahko najdete na forumih XDA.

Tu je primer vira jedra Git.

Na zgornji levi strani morate videti "Podružnica: Dopolnjeno s xxxx".

Obstajajo različne različice jedra / projekta, ki jih običajno ločimo s »Testiranje«, »Beta«, »Končna izdaja« itd.

Mape jedra so običajno naslednje:

  • / arch / arm / configs : Vsebuje različne konfiguracijske datoteke za napravo, kot so regulatorji itd.
  • / izhod / lok / roka / škorenj / : Tu se shrani zimage.
  • build.sh : skript, ki poenostavi postopek gradnje.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Običajno je to orodna veriga, nameščena v izvoru jedra, zato jo je lažje najti.

Naložiti boste morali izvor jedra.

Odprite terminal Linux in se prepričajte, da ste v mapi jedra, ki ste jo predhodno ustvarili (cd jedro).

Nato vnesite terminal: "git clone" URL github jedra "-b" ime veje "

Na primer: "git klon //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW"

Gradnja jedra

Če želite olajšati, se lahko pomaknete do mesta v raziskovalec datotek. To mora biti / home / user ID / jedro (ali karkoli že ste imenovali mapo jedra).

Znotraj orodij in vira jedra bi morali videti dve mapi. Pojdite v izvorno mapo jedra.

Za naprave ARM

V terminal vnesite naslednje ukaze:

 #! / bin / bash izvoz ARCH = izvoz izvoz CROSS_COMPILE = mkdir izhod make -C $ (pwd) O = izhod "ime defconfig in variante, če je potrebno" make -j4 -C $ (pwd) O = output 

Tu je pregled tega, kaj ti ukazi počnejo, da bi to olajšali v prihodnosti.

  • #! / bin / bash: Pove, da se skript izvaja v ukazu lupine
  • izvozi ARCH = arm: Določite, kateri tip jedrske arhitekture je (na primer arm64 itd)
  • export CROSS_COMPILE = : Poiščite, kje je orodje. Ustrezati mora natančno pot in črtica na koncu je res obvezna.
  • mkdir izhod: To ustvari imenik za shranjevanje sestavljenega zimage
  • make -C $ (pwd) O = izhod : Določitev defconfig za vodenje sestavljanja jedra.
  • make -j4 -C $ (pwd) O = izhod : Ko se postopek gradnje začne, -j # pove, kako hitro je treba poskusiti in prevesti. Običajno to številko nastavite glede na vaš CPU. Na primer nastavitev na -j32 na proračunskem CPU bi verjetno povzročila veliko nestabilnost.
  • cp izhod / lok / arm / škorenj / Image $ (pwd) / arch / arm / boot / zImage : To je za premikanje slike na drugo pot.

Še en primer:

 #! / bin / bash izvoz ARCH = izvoz orožja CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir izhod make -C $ (pwd) O = izhod msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig sELINUX_DEFCONFIG = selinux_defconfig Znamka -j4 -C $ (pwd) O = izhod ss izhod / arch / naslonjalo / čevelj / Slika $ (PWD) / arch / naslonjalo / čevelj / zImage 

Za naprave ARM 64

 #! / bin / bash export ARCH = arm64 izvoz CROSS_COMPILE = "pot do vaše orodjarne" (končati se mora z nekaj, kot je "nameofarch-something-") mkdir output make -C $ (pwd) O = output "ime defconfig in varianta, če je potrebno "make -j4 -C $ (pwd) O = izhod 

Za Mediatek (MTK) naprave

 #! / bin / bash export CROSS_COMPILE = "pot do vaše orodjarne" (končati se mora z nečim, kot je "nameofarch-something-") ARCH = arm ARCH_MTK_PLATFORM = make "ime defconfig in varianta, če je potrebno" make -j4 

Ko zaključite korake, potrebne za vašo arhitekturo jedra, lahko vtipkate v terminal: sudo bash build.sh

Nato boste vnesli svoje uporabniško geslo in postopek sestavljanja se bo začel.

Lahko traja nekaj časa, vendar običajno ne zelo dolgo, sestavljanje jedra ni tako, kot bi sestavljali celoten ROM ROM. To je resnično odvisno od procesorja - na primer, AMD Phenom X4 3, 4 GHz z 8 GB RAM-a bi od začetka do konca potreboval približno 10 minut.

Ko se konča, vas mora obvestiti s sporočilom, kot je „zimage je pripravljen“.

Naprave ARM in ARM64

Pojdite na “/ Izhod / lok / roka / škorenj /”, da poiščete zimage.

Naprave Mediatek

Pojdite na “/ arch / arm / boot /” in poiščite svojo zimage.

Ne bodo vse gradnje jedra povzročile datoteko Zimage, včasih jo je mogoče sestaviti kot druge oblike slik.

Pomembno: Če boste znova sestavljali, priporočamo, da vnesete ukaze, da očistite in naredite mrproper, preden začnete postopek kompilacije znova.

Izdelava škorenjškega zagona

Izbirate lahko dve možnosti.

Uporabite lahko metodo anykernel (kot je definirano v uporabniku XDA @ osm0sis v tej XDA niti). Prebrati morate celotno vadnico, povzetek korakov pa je naslednji:

  1. Postavite zImage v koren (dtb in / ali dtbo bi moral iti tudi tukaj za naprave, ki zahtevajo prilagojene, vsaka pa bo v izvirniku, če ni na voljo)
  2. Vse zahtevane datoteke ramdisk postavite v / ramdisk in module v / module (s celotno potjo, kot so / module / system / lib / module)
  3. V datoteko / obliž namestite vse potrebne datoteke popravkov (običajno delne datoteke, ki gredo z ukazi)
  4. Spremenite anykernel.sh, da dodate ime vašega jedra, lokacijo zagonske particije, dovoljenja za vključene datoteke ramdisk in uporabite metode za vse potrebne spremembe ramdiska (po izbiri lahko v koren postavite tudi datoteke s pasicami in / ali različicami, da se te prikažejo med bliskavico)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * rezerviralec mesta`

Druga metoda, ki vam je na voljo, je razpakiranje boot.img z istega ROM-a (na primer CM, TouchWiz, EMUI itd.) In iste različice Android. Nato bi zamenjal Zimage. Spet je to resnično zapleten postopek in natančno bi morali prebrati vadbo, povzetek korakov pa je:

  1. Razklenite.
  2. Uporabite ukazno vrstico »razpakiraj« ali preprosto povlecite sliko. To bo razdeli sliko in razpakiralo ramdisk v podimenik.
  3. Spremenite ramdisk, kot želite.
  4. Paketni skript repackimg ne zahteva nobenega vnosa in preprosto rekombinira predhodno razdeljeno zImage z novo zapakiranim spremenjenim ramdiskom z uporabo vseh izvirnih podatkov o sliki (ki so bili prav tako razdeljeni in shranjeni).
  5. Skriptni paket za čiščenje ponastavi mapo v prvotno stanje in odstrani imenike split_img + ramdisk ter vse nove pakirane datoteke ramdisk ali slike.

Preden stresete svoje jedro, ustvarite varnostno kopijo zalog boot.img in nato utripajte svoje jedro, da preverite, ali omogoča zagon vašega sistema Android.

Dodajanje funkcij v vaše jedro

Dodajanje funkcij v jedro je odličen način, da ga popestrite. Obstaja veliko stvari, ki jih lahko prilagodite, kot so krmilniki procesorja, razporedniki IO, overclocking GPU-ja, izboljšave zvoka itd.

Primer za dodajanje guvernerja je tukaj (ta guverner je kodno imenovan Intellimm).

V prvih dveh besedilnih poljih lahko vidimo, da sta bila v "arch / arm / configs" "msm8974_sec_defconfig" in "cm_msm8974_sec_defconfig" spremenjena.

Med vrsticami 140 in 141 teh datotek je bilo dodano to besedilo: "CONFIG_CPU_FREQ_GOV_INTELLIMM = y"

(Ta vrstica omogoča omogočanje Intellimm-a, ko sestavljate svoje jedro)

Ista tehnika velja za ostala besedilna polja (kaj je bilo dodano in izbrisano in to je lokacija)

Glede na funkcije, ki jih dodate, lahko več ali manj datotek spremenite, dodate ali izbrišete.

Če povzamem, zaveza, si oglejte vse izvedene spremembe in vse ostalo!

Splošni nasveti in triki

Kako spremeniti ime in različico jedra:

Preprosta metoda:

Uredite to vrstico v datoteki defconfig:

 "CONFIG_LOCALVERSION =" - "po - v vaši defconfig 

Primer: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Napredne metode:

Pomaknite se do datoteke Makefile v korenski mapi vira jedra.

Dodajte te vrstice:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

NE spreminjajte vrstic Version, PatchLevel, Sublevel ali Extraversion.

Alternativna metoda:

Pojdite na skripte / mkcompile_h in dodajte te vrstice:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Reševanje težav PATH:

Če naletite na napako »Ali je vaša pot pravilna?«, Poskusite to v terminalu Linux:

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

Dostop do map Ubuntu iz sistema Windows 10

Vaša pot do Ubuntuja bi morala biti običajno:

C: \ Uporabniki "NAME" \ AppData \ Local \ Paketi \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Toda datotek ne bi smeli urejati neposredno iz sistema Windows, ker bodo ti navadno prekinili dovoljenja na njih - potem boste morali ponastaviti dovoljenja znotraj Linux terminala.

Zanimivi Članki