Kako izgraditi Android kernel na sustavu Windows 10

How Build Android Kernel Windows 10

Appual’s ima nekoliko sjajnih vodiča o razvoju Androida, kao što su Kako izraditi prilagođeni ROM iz Android Open Source projekta - ali ovi su vodiči obično usmjereni ka čistom Linuxovom okruženju za izgradnju.



U ovom vodiču pokazat ćemo vam kako izgraditi Android jezgru na sustavu Windows 10 - da, i dalje ćemo koristiti Linux okruženje za izgradnju, 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 izraditi jezgru za ARM i MediaTek uređaje, dodajući značajke i osnovni pregled korištenja Gita.

Zahtjevi

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

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čka ploča> Programi> Uključivanje ili isključivanje značajki sustava Windows> omogući Windows podsustav za Linux.
  3. Ponovo pokrenite računalo.
  4. Pokrenite Linux podsustav i dopustite mu da prođe kroz postupak preuzimanja. Postavite lozinku i ne gubite je.
  5. Sada idite u trgovinu aplikacija za Windows i preuzmite Ubuntu.
  6. Pokrenite Ubuntu na radnoj površini sustava Windows 10 i tražit će korisničko ime i lozinku.
  7. U Ubuntuu pokrenite izvorni terminal i upišite sljedeću naredbu: apt-get update
  8. Ovo će nastaviti s ažuriranjem svih repoa za aplikacije i ovisnosti.
  9. Sljedeće u tipu terminala: sudo apt-get install -y build-bitni kernel-paket libncurses5-dev bzip2
  10. Da biste provjerili jesu li sve ovisnosti ispravno instalirane, u terminal upišite 'gcc' (bez navodnika).
  11. Ako je 'gcc' već instaliran, trebali biste vidjeti 'gcc: fatalna pogreška: nema ulazne datoteke'
  12. Sada u terminal možete upisati 'make'. Ako je 'make' već instaliran, trebali biste vidjeti 'make: *** nije naveden cilj i nije pronađena make datoteka. Stop.'
  13. Sljedeći tip 'git', a ako je 'git' već instaliran, trebali biste vidjeti hrpu osnovnih git naredbi.
  14. Sada su nam potrebni neki lanci alata (postoji nekoliko vrsta, uključujući GCC, Linaro i pregršt prilagođenih). Neki uređaji mogu zahtijevati različite alate, na primjer, neće se sva jezgra uređaja pokrenuti ili kompajlirati s GCC-om.

Za ARM uređaje

Za to ćemo koristiti GCC 4.7.



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

Za ARM 64 uređaje

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

Dohvaćanje izvornih datoteka za vaš uređaj

Ovo je lukav dio, jer morate pronaći GitHub repo koji je domaćin vašem izvoru jezgre. Morat ćete ga potražiti, najvjerojatnije ga možete pronaći na XDA forumima.

Ovdje je primjer izvor jezgre Git .



Na gornjoj lijevoj strani trebali biste vidjeti „Podružnica: dovršeno xxxx“.

Postoje različite verzije jezgre / projekta, obično odvojene „Testiranjem“, „Beta“, „Konačnim izdanjem“ itd.

Mape jezgre su obično sljedeće:

  • / arch / arm / configs : Sadrži razne konfiguracijske datoteke za uređaj, poput guvernera itd.
  • / output / arch / arm / boot / : Ovdje će se pohraniti zimage.
  • graditi.sh : Skripta koja će pojednostaviti postupak gradnje.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Ovo je obično alatni lanac smješten u izvoru jezgre, što ga čini lakšim za pronalaženje.

Trebat ćete preuzeti izvor jezgre.

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

Zatim upišite terminal: 'git clone' URL github jezgre '-b' ime grane '

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

Izgradnja jezgre

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

Trebali biste vidjeti dvije mape iznutra, za lanac alata i izvor jezgre. Uđite u izvornu mapu kernela.

Za ARM uređaje

U terminal unesite sljedeće naredbe:

#! / bin / bash export ARCH = arm izvoz CROSS_COMPILE = mkdir output make -C $ (pwd) O = output 'naziv defconfig-a i varijanta po potrebi' make -j4 -C $ (pwd) O = output

Evo pregleda što ove naredbe čine kako bi to olakšale u budućnosti.

  • #! / bin / bash: Kaže skripti da se izvodi u naredbi ljuske
  • izvoz ARCH = arm: Definiranje o kojem se tipu arhitekture jezgre radi (na primjer arm64 itd.)
  • izvoz CROSS_COMPILE = : Pronađite mjesto gdje je alatni lanac. Mora odgovarati točnoj putanji, a crtica je na kraju zaista obavezna.
  • mkdir izlaz: Ovo stvara direktorij za spremanje sastavljene zimage
  • make -C $ (pwd) O = izlaz : Definiranje defconfig-a za vođenje kompilacije jezgre.
  • make -j4 -C $ (pwd) O = izlaz : Kad započne proces gradnje, -j # mu govori koliko brzo treba pokušati i sastaviti. Obično taj broj postavljate prema CPU-u. Postavljanje na -j32 na proračunskom CPU-u, na primjer, vjerojatno bi uzrokovalo veliku nestabilnost.
  • cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Ovo je za pomicanje slike na drugi put.

Još jedan primjer:

#! / bin / bash export ARCH = arm izvoz CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir output make -C $ (pwd) O = izlaz msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfig make -j4 -C $ (pwd) O = arm cp output / arch / p / boot / z / boot / z / boot / z / boot / z / boot / z

Za ARM 64 uređaje

#! / bin / bash export ARCH = arm64 export CROSS_COMPILE = 'put do vašeg lanca alata' (mora završiti nečim poput 'nameofarch-something-') mkdir output make -C $ (pwd) O = output 'ime defconfig-a i varijanta po potrebi 'make -j4 -C $ (pwd) O = izlaz

Za uređaje Mediatek (MTK)

#! / bin / bash export CROSS_COMPILE = 'put do vašeg lanca alata' (mora završiti nečim poput 'nameofarch-something-') export ARCH = arm ARCH_MTK_PLATFORM = make 'ime defconfig-a i varijanta po potrebi' make -j4

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

Zatim ćete unijeti svoju korisničku lozinku i započet će postupak sastavljanja.

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

Kad završi, trebao bi vas obavijestiti porukom poput 'zimage je spreman'.

ARM i ARM64 uređaji

Idite na “/ Output / arch / arm / boot /” da biste pronašli zimage.

Uređaji Mediatek

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

Neće sve gradnje jezgre rezultirati Zimage datotekom, ponekad se može graditi i kao drugi formati slika.

Važno: Ako ćete ponovno kompajlirati, preporučuje se da prije ponovnog započinjanja procesa kompajliranja unesete naredbe make clean i make mrproper.

Izrada kernel dizanja

Dvije su opcije koje možete odabrati.

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

  1. Postavite zImage u korijen (dtb i / ili dtbo također trebaju ići ovdje za uređaje koji zahtijevaju prilagođene, svaki će se vratiti na izvorni ako nije uključen)
  2. Postavite sve potrebne ramdisk datoteke u / ramdisk i module u / modules (s punim putem poput / modules / system / lib / modules)
  3. Stavite sve potrebne datoteke zakrpe (obično djelomične datoteke koje idu s naredbama) u / zakrpu
  4. Izmijenite anykernel.sh da biste dodali naziv jezgre, mjesto particije za pokretanje, dozvole za uključene datoteke ramdisk-a i upotrijebite metode za sve potrebne izmjene ramdiska (po želji, također stavite natpisne datoteke i / ili verzije u korijen da se prikazuju tijekom bljeska)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * rezervirano mjesto`

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

  1. Otvoriti rajsfešlus.
  2. Ili upotrijebite naredbenu liniju 'unpackimg' ili jednostavno povucite i ispustite sliku. Ovo će podijeliti sliku i otpakirati ramdisk u poddirektorij.
  3. Promijenite ramdisk kako želite.
  4. Skupna skripta repackimg ne zahtijeva unos i jednostavno kombinira prethodno podijeljeni zImage s novopakiranim modificiranim ramdisk-om koristeći sve izvorne podatke o slici (koji su također podijeljeni i spremljeni).
  5. Skupna skripta za čišćenje vraća mapu u početno stanje uklanjanjem direktorija split_img + ramdisk i svih novih zapakiranih ramdisk datoteka ili slika.

Prije nego što fleširate kernel, trebali biste stvoriti sigurnosnu kopiju zalihe boot.img, a zatim flešurirati kernel kako biste vidjeli dopušta li vašem Android sustavu pokretanje.

Dodavanje značajki u vašu jezgru

Dodavanje značajki jezgri sjajan je način da je začinite. Postoji mnogo stvari koje možete podesiti, poput CPU regulatora, IO planera, overclockinga GPU-a, audio poboljšanja itd.

Primjer za dodavanje guvernera je ovdje (ovaj guverner nosi kodno ime Intellimm).

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

Između redaka 140 i 141 ove datoteke dodan je ovaj tekst: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”
(Ovaj je redak za omogućavanje Intellimma kad kompajlirate kernel)

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

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

Dakle, da rezimiramo, Obvezi neka vidimo sve promjene koje su napravljene i sve ostalo!

Opći savjeti i trikovi

Kako promijeniti naziv i verziju jezgre:

Jednostavna metoda:

Uredite ovaj redak u svojoj datoteci defconfig:

'CONFIG_LOCALVERSION =' - 'nakon - u vašem defconfig-u

Primjer: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Napredne metode:

Dođite do datoteke Makefile u korijenskoj mapi vašeg izvora jezgre.

Dodajte ove retke:

CONFIG_LOCALVERSION = 'nameofyourkernel' LOCALVERSION = 'versionofyourkernel'

NEMOJTE mijenjati redove Verzija, Razina zakrpe, Podrazina ili Ekstraverzija.

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 točan?', Pokušajte ovo u Linux terminalu:

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

Pristup mapama Ubuntu iz sustava Windows 10

Vaš put do Ubuntu-a obično bi trebao biti:

C: Korisnici 'IME' AppData Local Packages CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc LocalState rootfs home

Ali ne biste trebali uređivati ​​datoteke izravno iz Windowsa, jer će to obično prekinuti dozvole na njima - tada ćete trebati resetirati dozvole unutar Linux terminala.

Oznake android Razvoj prozori 10 6 minuta čitanja