Jak vytvořit jádro Android pro Windows 10

Appual's má několik skvělých průvodců o vývoji Androidu, například Jak vytvořit vlastní ROM z projektu Android Open Source Project, ale tito průvodci jsou obvykle zaměřeni na čisté prostředí Linuxu.

V této příručce vám ukážeme, jak vytvořit jádro Android v systému Windows 10 - ano, stále budeme používat prostředí pro vytváření systému Linux, ale bude to podsystém Linux v systému Windows 10. Takže pokud jste systém Windows 10 uživatel, který má zájem o vývoj pro Android, pečlivě sledujte našeho průvodce.

V této příručce se konkrétně naučíme, jak vytvořit jádro pro zařízení ARM a MediaTek, přidávat funkce a základní přehled o používání Git.

Požadavky

  • Windows 10 x64 (s aktualizací Fall Creator)

Nastavení prostředí Linux

  1. V systému Windows 10 přejděte na Nastavení> Aktualizace a zabezpečení> Pro vývojáře> aktivujte režim vývojářů.
  2. Nyní přejděte na Ovládací panely> Programy> Zapnout nebo vypnout funkce systému Windows> povolit Windows subsystém pro Linux.
  3. Restartujte počítač.
  4. Spusťte podsystém Linux a nechte jej projít procesem stahování. Nastavit heslo a neztratit ho.
  5. Nyní přejděte do obchodu s aplikacemi Windows a stáhněte si Ubuntu.
  6. Spusťte Ubuntu na ploše Windows 10 a vyžádá si uživatelské jméno a heslo.
  7. V Ubuntu spusťte nativní terminál a zadejte následující příkaz: apt-get update
  8. To bude pokračovat v aktualizaci všech repozitářů pro aplikace a závislosti.
  9. Další v typu terminálu: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. Chcete-li zkontrolovat, zda byly všechny závislosti správně nainstalovány, zadejte do terminálu „gcc“ (bez uvozovek).
  11. Pokud je již nainstalován „gcc“, mělo by se zobrazit „gcc: fatální chyba: žádný vstupní soubor“
  12. Nyní můžete do terminálu napsat „make“. Pokud je „make“ již nainstalován, mělo by se zobrazit „make: *** nebyl zadán žádný cíl a nebyl nalezen žádný makefile. stop."
  13. Další typ 'git', a pokud už je nainstalován “git”, měli byste vidět spoustu základních příkazů git.
  14. Nyní potřebujeme několik nástrojů (existuje několik typů, včetně GCC, Linaro a hrstky vlastních). Některá zařízení mohou vyžadovat různé nástroje, například ne všechna jádra zařízení se budou spouštět nebo kompilovat s GCC.

Pro ARM zařízení

K tomu použijeme GCC 4.7.

  1. Otevřete terminál Linux a zadejte: mkdir kernel
  2. Nyní zadejte: cd kernel
  3. (nemusí to být 'jádro', to je kvůli jednoduchosti, můžete to pojmenovat, co chcete.)
  4. Nyní zadejte: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Pro zařízení ARM 64

Pro zařízení ARM 64, například aarch64, potřebujete 64bitový kompilátor jádra.

Získání zdrojových souborů pro vaše zařízení

Toto je složitá část, protože musíte najít repozitář GitHub, který hostí váš zdroj jádra. Budete ji samozřejmě muset hledat, s největší pravděpodobností ji najdete na fórech XDA.

Zde je příklad jádra Git.

Vlevo nahoře byste měli vidět „Větev: xxxx“.

Existují různé verze jádra / projektu, obvykle oddělené „Testování“, „Beta“, „Konečné vydání“ atd.

Složky jádra jsou obvykle následující:

  • / arch / arm / configs : Obsahuje různé konfigurační soubory pro zařízení, například guvernéry atd.
  • / output / arch / arm / boot / : Zde budou uloženy zimage.
  • build.sh : Skript, který zjednoduší proces vytváření.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Toto je obvykle sada nástrojů umístěná ve zdroji jádra, což usnadňuje vyhledávání.

Musíte si stáhnout zdroj jádra.

Otevřete terminál Linux a ujistěte se, že jste ve složce jádra, kterou jste dříve vytvořili (cd jádro).

Pak zadejte terminál: „git clone“ URL githubového jádra ”-b„ název větve “

Příklad: „git clone //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW“

Budování jádra

Chcete-li to usnadnit, můžete přejít na místo v Průzkumníku souborů. Mělo by to být / home / user / jádro (nebo cokoli, co jste pojmenovali složku jádra).

Měli byste vidět dvě složky uvnitř, pro toolchain a zdroj jádra. Přejít do zdrojové složky jádra.

Pro ARM zařízení

Do terminálu zadejte následující příkazy:

 #! / bin / bash export ARCH = export exportu CROSS_COMPILE = mkdir output make -C $ (pwd) O = output "jméno defconfig a varianta v případě potřeby" make -j4 -C $ (pwd) O = output 

Zde je přehled toho, co tyto příkazy dělají, aby se to v budoucnu usnadnilo.

  • #! / bin / bash: Řekne skriptu, aby spustil příkaz shellu
  • export ARCH = arm: Definování toho, jaký typ architektury jádra je (například arm64 atd.)
  • export CROSS_COMPILE = : Vyhledejte, kde je toolchain. Musí se shodovat s přesnou cestou a pomlčka na konci je opravdu povinná.
  • mkdir output: Vytvoří adresář pro uložení kompilovaného zimage
  • make -C $ (pwd) O = výstup : Definování defconfig pro vedení kompilace jádra.
  • make -j4 -C $ (pwd) O = výstup : Když začíná proces budování, -j # řekne, jak rychle se pokusit a kompilovat. Obvykle nastavíte toto číslo podle vašeho procesoru. Například nastavení -j32 na rozpočtu CPU by pravděpodobně způsobilo masivní nestabilitu.
  • cp výstup / arch / rameno / boot / obrázek $ (pwd) / arch / rameno / boot / zImage : Toto je pro přesun obrazu na druhou cestu.

Další příklad:

 #! / bin / bash export ARCH = export exportu CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir output make -C $ (pwd) O = výstup msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfig make -j4 -C $ (pwd) O = výstup cp výstup / arch / arm / boot / Image $ / arm / boot / image $ / pa 

Pro zařízení ARM 64

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "cesta k vašemu toolchainu" (musí končit něčím jako "nameofarch-něco-") mkdir output make -C $ (pwd) O = output "name defconfig a v případě potřeby varianta "make -j4 -C $ (pwd) O = výstup 

Pro zařízení Mediatek (MTK)

 #! / bin / bash export CROSS_COMPILE = "cesta k vašemu toolchainu" (musí končit něčím jako "nameofarch-něco-") export ARCH = rameno ARCH_MTK_PLATFORM = make "jméno defconfig a varianty" make -j4 

Po dokončení kroků nezbytných pro vaši architekturu jádra můžete zadat terminál: sudo bash build.sh

Poté zadáte uživatelské heslo a začne proces kompilace.

Může to chvíli trvat, ale obvykle ne příliš dlouho, kompilace jádra není jako kompilace celého systému Android ROM. To je opravdu závislé na procesoru - například kompilace AMD Phenom X4 3, 4 GHz s 8 GB RAM by měla trvat asi 10 minut, než se kompilace od začátku do konce.

Až skončí, měl by vás upozornit zprávou jako „zimage is ready“.

Zařízení ARM a ARM64

Přejděte na “/ Output / arch / arm / boot /” a najděte si zimage.

Zařízení Mediatek

Přejděte na “/ arch / arm / boot /” a najděte si zimage.

Ne všechny kompilace jádra povedou k souboru Zimage, někdy mohou být vytvořeny jako jiné obrazové formáty.

Důležité: Pokud se chystáte kompilovat znovu, doporučujeme před opětovným zahájením kompilace zadat příkazy make clean a make mrproper.

Vytváření jádra

Můžete si vybrat ze dvou možností.

Můžete použít metodu anykernel (definovanou uživatelem XDA @ osm0sis v tomto vláknu XDA). Měli byste si přečíst celý tutoriál, ale shrnutí kroků je následující:

  1. Umístěte zImage do kořenového adresáře (dtb a / nebo dtbo by sem také měli jít pro zařízení, která vyžadují vlastní, každá bude záložní k původnímu, pokud není zahrnuta)
  2. Umístěte všechny požadované soubory ramdisk do / ramdisk a moduly do / modules (s úplnou cestou jako / modules / system / lib / modules)
  3. Umístěte všechny požadované soubory záplat (obvykle částečné soubory, které jdou s příkazy) do / záplaty
  4. Upravte soubor anykernel.sh a přidejte název svého jádra, umístění spouštěcího oddílu, oprávnění pro zahrnutí souborů ramdisk a použijte metody pro všechny požadované úpravy ramdisk (volitelně také vložte do kořenového adresáře soubory bannerů nebo verzí, aby se tyto zobrazovaly během flash)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

Další dostupnou metodou je rozbalení boot.img ze stejné ROM (jako CM, TouchWiz, EMUI atd.) A stejné verze Androidu. Pak byste vyměnili Zimage. Opět je to opravdu komplikovaný proces a měli byste si přečíst přesný návod, ale shrnutí kroků je:

  1. Rozbalte.
  2. Buď použijte příkazový řádek „unpackimg“, nebo jednoduše přetáhněte obrázek. Rozdělí se obrázek a rozbalí se ramdisk do podadresáře.
  3. Změňte ramdisk, jak chcete.
  4. Dávkový skript repackimg nevyžaduje žádný vstup a jednoduše kombinuje dříve rozdělený zImage s nově zabaleným upraveným ramdiskem pomocí všech původních obrazových informací (které byly také rozděleny a uloženy).
  5. Dávkový skript pro vyčištění vynuluje složku do původního stavu a odstraní adresáře split_img + ramdisk a všechny nové zabalené soubory ramdisk nebo obrázky.

Než začnete flashovat jádro, měli byste si vytvořit zálohu vašeho souboru boot.img a poté flashovat jádro, abyste zjistili, zda umožňuje spuštění systému Android.

Přidání funkcí do jádra

Přidání funkcí do jádra je skvělý způsob, jak ho okořenit. Existuje spousta věcí, které můžete vyladit, jako jsou regulátory CPU, plánovače IO, přetaktování GPU, vylepšení zvuku atd.

Příklad přidání guvernéra je zde (tento guvernér se nazývá Intellimm).

V prvních 2 textových polích vidíme, že v „arch / arm / configs /“ „msm8974_sec_defconfig“ a „cm_msm8974_sec_defconfig“ byly změněny.

Mezi řádky 140 a 141 těchto souborů byl přidán tento text: „CONFIG_CPU_FREQ_GOV_INTELLIMM = y“

(Tento řádek slouží k povolení Intellimm při kompilaci jádra)

Stejná technika platí i pro ostatní textová pole (co bylo přidáno a odstraněno a jeho umístění)

V závislosti na přidaných funkcích lze více či méně souborů upravovat, přidávat nebo mazat.

Abych to shrnul, Commit uvidíme všechny provedené změny a všechno ostatní!

Obecné tipy a triky

Jak změnit název a verzi jádra:

Jednoduchá metoda:

Upravte tento řádek v souboru defconfig:

 "CONFIG_LOCALVERSION =" - "poté - ve vašem defconfigu 

Příklad: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Pokročilé metody:

Přejděte na Makefile v kořenové složce zdroje jádra.

Přidejte tyto řádky:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

NEDOVOLUJTE řádky Version, PatchLevel, Sublevel ani Extraversion.

Alternativní metoda:

Přejděte na skripty / mkcompile_h a přidejte tyto řádky:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Řešení problémů PATH:

Pokud narazíte na chybu „Je vaše cesta správná?“, Zkuste to v terminálu Linux:

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

Přístup ke složkám Ubuntu ze systému Windows 10

Cesta k Ubuntu by obvykle měla být:

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

Neměli byste však upravovat soubory přímo ze systému Windows, protože by se tím obvykle porušila oprávnění - pak by bylo nutné obnovit oprávnění z terminálu Linux.

Zajímavé Články