Kako izraditi Android Kernel na Windows 10

Appual's ima nekoliko sjajnih vodiča za razvoj Androida, kao što je Način stvaranja prilagođenog ROM-a iz Android Open Source Projekta - ali ti su vodiči obično usmjereni prema čistom okruženju za izgradnju Linuxa.

U ovom ćemo vam vodiču pokazati kako graditi Android kernel na Windows 10 - da, i dalje ćemo koristiti okruženje za izgradnju Linuxa, ali to će biti Linux podsustav u sustavu Windows 10. Dakle, ako ste Windows 10 korisnik zainteresiran za razvoj za Android, pažljivo slijedite naš vodič.

U ovom ćemo vodiču posebno naučiti kako izgraditi kernel za ARM i MediaTek uređaje, dodavati značajke i osnovni pregled upotrebe Gita.

zahtjevi

  • Windows 10 x64 (s ažuriranjem Fall Creator-a)

Postavljanje Linux okruženja

  1. U sustavu Windows 10 idite na Postavke> Ažuriranje i sigurnost> Za programere> omogućite način za programere.
  2. Sada idite na upravljačku ploču> Programi> Uključite ili isključite značajke sustava Windows> omogućite Windows podsustav za Linux.
  3. Ponovo pokrenite svoje računalo.
  4. Pokrenite Linux podsustav i omogućite mu da prođe kroz proces preuzimanja. Postavite lozinku i ne gubite je.
  5. Sada idite u Windows aplikaciju i preuzmite Ubuntu.
  6. Pokrenite Ubuntu na radnoj površini sustava Windows 10 i zatražit će korisničko ime i lozinku.
  7. U Ubuntu pokrenite izvorni terminal i upišite sljedeću naredbu: apt-get update
  8. To će postupak ažuriranja svih repozicija za aplikacije i ovisnosti.
  9. Sljedeće u vrsti terminala: sudo apt-get install -y gradi-bitan kernel-paket libncurses5-dev bzip2
  10. Kako biste provjerili jesu li sve ovisnosti ispravno instalirane, u terminal unesite 'gcc' (bez navodnika).
  11. Ako je "gcc" već instaliran, trebali biste vidjeti "gcc: fatal error: no input file"
  12. Sada možete upisati 'make' u terminal. Ako je "make" već instaliran, trebali biste vidjeti "make: *** nije naveden cilj i nije pronađen makefile. Stop."
  13. Sljedeći tip je git, a ako je „git“ već instaliran, trebali biste vidjeti gomilu osnovnih git naredbi.
  14. Sada su nam potrebne neke alatne lance (postoji nekoliko vrsta, uključujući GCC, Linaro i nekoliko vlastitih). Neki će uređaji možda zahtijevati različite lance alata, na primjer, neće se sve jezgre uređaja dignuti ili sastaviti s GCC-om.

Za ARM uređaje

Za to ćemo koristiti GCC 4.7.

  1. Otvorite Linux terminal i utipkajte: mkdir kernel
  2. Sada upišite: cd kernel
  3. (ne mora biti 'kernel', ovo je radi jednostavnosti, možete ga imenovati kako god želite.)
  4. Sad upišite: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Za uređaje ARM 64

Trebate 64-bitni kompajler jezgre za ARM 64 uređaje, na primjer, aarch64.

Dobivanje izvornih datoteka za vaš uređaj

Ovo je škakljiv dio jer trebate pronaći GitHub repo koji ugošćuje vaš izvor kernela. Trebat ćete ga naravno potražiti, najvjerojatnije ga možete pronaći na XDA forumima.

Ovdje je primjer izvor kernela Git.

Na gornjoj lijevoj strani trebali biste vidjeti "Podružnica: Dovršena xxxx".

Postoje različite verzije jezgre / projekta, obično razdvojene "Testiranje", "Beta", "Konačno izdanje" itd.

Mape kernela su obično sljedeće:

  • / arch / arm / configs : sadrži razne konfiguracijske datoteke za uređaj, kao što su guverneri, itd.
  • / izlaz / luk / ruka / boot / : Ovdje će se pohraniti zimage.
  • build.sh : Skripta koja će pojednostaviti proces izgradnje.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Ovo je tipično alatni lanac smješten u izvoru kernela, pa ga je lakše pronaći.

Trebat ćete preuzeti svoj izvor kernel.

Otvorite Linux terminal i provjerite jeste li u mapi kernel koju ste prethodno kreirali (cd kernel).

Zatim upišite terminal: "git clone" URL github kernel "-b" naziv grane "

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

Izgradnja jezgre

Da biste ga olakšali, možete se pomaknuti do mjesta u programu za pregledavanje datoteka. To bi trebao biti / home / user ID / kernel (ili kako god ste nazvali mapu kernel).

Trebali biste vidjeti dvije mape, za alatnu mrežu i izvor kernel. Uđite u izvornu mapu kernela.

Za ARM uređaje

U terminal upišite sljedeće naredbe:

 #! / bin / bash izvoz ARCH = izvoz izvoza CROSS_COMPILE = mkdir izlaz make -C $ (pwd) O = izlaz "naziv defconfig-a i varijante po potrebi" make -j4 -C $ (pwd) O = izlaz 

Ovdje je pregled onoga što ove naredbe čine, da biste to olakšali u budućnosti.

  • #! / bin / bash: Kaže da se skripta pokreće u naredbi shell
  • export ARCH = arm: definiranje tipa arhitekture kernela (na primjer arm64 itd.)
  • export CROSS_COMPILE = : Pronađite mjesto alata. Mora odgovarati točnom putu, a crtica na kraju je doista obvezna.
  • mkdir izlaz: Ovo stvara direktorij za spremanje sastavljene slike
  • make -C $ (pwd) O = izlaz : Definiranje defconfig-a za vođenje sastavljanja jezgre.
  • make -j4 -C $ (pwd) O = izlaz : Kad započne proces izgradnje, -j # govori kako brzo pokušati i sastaviti. Taj broj obično postavljate prema vašem CPU-u. Na primjer, postavljanje na -j32 na proračunskom CPU-u vjerojatno bi izazvalo veliku nestabilnost.
  • cp izlaz / luk / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Ovo je za pomicanje slike na drugi put.

Još jedan primjer:

 #! / bin / bash izvoz ARCH = izvoz izvoz CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-mkdir izlaz make -C $ (zap) O = izlazna msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfig čine -j4 -C $ (zap) O = izlaz cp izlaz / luk / ruka / boot / slika $ (zap) / luk / ruka / boot / zImage 

Za uređaje ARM 64

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "put do vaše alatne mreže" (mora završiti nečim poput "nameofarch-something-") mkdir output make -C $ (pwd) O = output "ime defconfig i varijanta ako je potrebno "make -j4 -C $ (pwd) O = izlaz 

Za Mediatek (MTK) uređaje

 #! / bin / bash export CROSS_COMPILE = "put do vaše alatne mreže" (mora završiti nečim poput "nameofarch-something-") export ARCH = arm ARCH_MTK_PLATFORM = make "ime defconfig-a i varijante po potrebi" make -j4 

Kada dovršite korake potrebne za vašu arhitekturu kernela, možete upisati terminal: sudo bash build.sh

Tada ćete unijeti svoju korisničku lozinku i započet će se proces sastavljanja.

Može potrajati neko vrijeme, ali obično nije jako dugo, sastavljanje kernela nije poput sastavljanja čitavog Android ROM-a. To stvarno ovisi o CPU-u - na primjer, AMD Phenom X4 3, 4GHz s 8 GB RAM-a trebalo bi oko 10 minuta da se sastavi od početka do kraja.

Kada završi, trebao bi vas obavijestiti porukom poput "zimage je spreman".

ARM i ARM64 uređaji

Idite na "/ izlaz / luk / ruku / boot /" da biste pronašli zimage.

Uređaji Mediatek

Idite na "/ arch / arm / boot /" da biste pronašli zimage.

Neće sve izrade kernela rezultirati u Zimage datoteci, ona se ponekad može graditi kao drugi formati slika.

Važno: Ako ponovo sastavljate, preporučuje se da unesete naredbe očistite i učinite mrproper prije nego što ponovo započnete postupak kompilacije.

Izrada Kernel boot-a

Postoje dvije mogućnosti za vas.

Možete koristiti bilo koju metodu anykernel (kako je definirano u XDA korisniku @ osm0sis u ovom XDA niti). Trebali biste pročitati cijeli vodič, ali sažetak koraka je sljedeći:

  1. Postavite zImage u korijen (dtb i / ili dtbo bi također trebali otići ovdje za uređaje koji zahtijevaju prilagođene, svaki će se vratiti na izvornik ako nije uključen)
  2. Stavite sve potrebne ramdisk datoteke u / ramdisk i module u / module (s potpunim putem kao što su / module / system / lib / module)
  3. Stavite sve potrebne datoteke zakrpa (uglavnom djelomične datoteke koje idu s naredbama) u / patch
  4. Izmijenite anykernel.sh da biste dodali ime vašeg kernela, lokaciju particije za pokretanje, dozvole za uključene datoteke ramdisk i koristili metode za sve potrebne izmjene ramdiska (po želji, također stavite datoteke s natpisima i / ili inačicama u korijen kako bi se te prikazivale tijekom bljeska)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

Druga dostupna metoda je raspakiranje boot.img s istog ROM-a (kao što su CM, TouchWiz, EMUI itd.) I iste verzije Androida. Tada biste zamijenili Zimage. Opet, ovo je stvarno kompliciran proces i trebali biste pročitati točan vodič, ali sažetak koraka je:

  1. Otvoriti rajsfešlus.
  2. Koristite naredbeni redak "raspakiraj" ili jednostavno povucite i ispustite sliku. Ovo će podijeliti sliku i raspakirati ramdisk u poddirektoriju.
  3. Promijenite ramdisk koliko želite.
  4. Sklop skripte repackimg ne zahtijeva unos i jednostavno rekombinira prethodno podijeljeni zImage s novopakiranim izmijenjenim ramdiskom koristeći sve izvorne podatke o slici (koji su također bili podijeljeni i spremljeni).
  5. Skripcijski paket za uklanjanje resetira mapu u prvobitno stanje, uklanjajući split_img + ramdisk direktorijume i sve nove upakirane ramdisk ili slikovne datoteke.

Prije nego što flešujete svoje kernelo, trebali biste stvoriti sigurnosnu kopiju vašeg dionica boot.img, a zatim je izbrisati kako bi omogućio pokretanje vašeg Android sustava.

Dodavanje značajki u vašu kernel

Dodavanje značajki u kernel izvrstan je način da ga začinite. Postoji mnogo stvari koje možete prilagoditi, kao što su upravljači procesora, IO raspoređivači, overclocking GPU-a, poboljšanja zvuka itd.

Primjer za dodavanje guvernera je ovdje (ovaj guverner je nazvan Intellimm).

U prva 2 tekstna okvira možemo vidjeti da su u "arch / arm / configs" "msm8974_sec_defconfig" i "cm_msm8974_sec_defconfig" izmijenjeni.

Između redaka 140 i 141 ove datoteke dodan je ovaj tekst: "CONFIG_CPU_FREQ_GOV_INTELLIMM = y"

(Ova linija služi za omogućavanje Intellimm-a kada sastavljate svoje jezgre)

Ista se tehnika odnosi i na ostale tekstualne okvire (ono što je dodano i izbrisano, a to je lokacija)

Ovisno o značajkama koje dodate, više ili manje datoteka može se mijenjati, dodavati ili brisati.

Dakle, ukratko, jedna obaveza, da vidimo sve učinjene promjene i sve ostalo!

Opći savjeti i trikovi

Kako promijeniti ime i verziju kernela:

Jednostavna metoda:

Uredite ovaj redak u datoteci defconfig:

 "CONFIG_LOCALVERSION =" - "nakon - u vašoj defconfig 

Primjer: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Napredne metode:

Pomaknite se na Makefile u korijenskoj mapi vašeg izvora kernela.

Dodajte ove retke:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

NEMOJTE mijenjati linije Version, PatchLevel, Sublevel ili Extraversion.

Alternativna metoda:

Idite na skripte / mkcompile_h i dodajte ove retke:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Rješavanje problema PATH:

Ako naiđete na pogrešku "Je li vaš put ispravan?", Pokušajte ovo na Linux terminalu:

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

Pristup mapama Ubuntu iz sustava Windows 10

Put do Ubuntua obično bi trebao biti:

C: \ Korisnici "NAME" \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

No ne biste trebali uređivati ​​datoteke izravno iz sustava Windows, jer će ti obično prekinuti dopuštenja na njima - tada ćete trebati resetirati unutar Linux terminala.

Zanimljivi Članci