Az Android rendszermag létrehozása a Windows 10 rendszeren

Az Appual'snek néhány nagyszerű útmutatója van az Android fejlesztéséről, például a Hogyan hozzunk létre egyéni ROM-ot az Android nyílt forráskódú projektből - de ezek az útmutatók általában a tiszta Linux építési környezetre irányulnak.

Ebben az útmutatóban megmutatjuk Önnek, hogyan kell felépíteni egy Android rendszermagot a Windows 10 rendszerre - igen, továbbra is Linux beépítési környezetet fogunk használni, de a Windows 10 alatt ez egy Linux alrendszer lesz. Tehát ha Ön Windows 10 az Android fejlesztés iránt érdeklődő felhasználónak, figyelmesen kövesse útmutatónkat.

Ebben az útmutatóban kifejezetten megtanuljuk, hogyan kell felépíteni egy kernelt ARM és MediaTek eszközökhöz, hozzáadunk funkciókat és áttekintést a Git használatáról.

követelmények

  • Windows 10 x64 (az őszi alkotó frissítésével)

A Linux környezet beállítása

  1. Windows 10 rendszeren lépjen a Beállítások> Frissítés és biztonság> Fejlesztők számára> engedélyezze a fejlesztői módot lehetőségre.
  2. Most nyissa meg a Vezérlőpult> Programok> A Windows funkcióinak be- vagy kikapcsolását> engedélyezze a Windows alrendszert Linuxhoz.
  3. Indítsa újra a számítógépet.
  4. Indítsa el a Linux alrendszert, és hagyja, hogy végigmenjen a letöltési folyamat. Állítson be egy jelszót, és ne veszítse el.
  5. Most menjen a Windows alkalmazás-áruházba, és töltse le az Ubuntu alkalmazást.
  6. Indítsa el az Ubuntu szoftvert a Windows 10 asztalon, és felhasználónevet és jelszót kér.
  7. Az Ubuntu alkalmazásban indítsa el a natív terminált és írja be a következő parancsot: apt-get update
  8. Ezzel frissíti az alkalmazások és a függőségek összes replikáját.
  9. Következő a terminál típusában: sudo apt-get install -y build-essential kernel-pack libncurses5-dev bzip2
  10. Annak ellenőrzéséhez, hogy az összes függőség helyesen lett-e telepítve, írja be a „gcc” parancsot a terminálba (idézetek nélkül).
  11. Ha a „gcc” már telepítve van, akkor a következőt kell látnia: „gcc: végzetes hiba: nincs bemeneti fájl”
  12. Most beírhatja a 'make' parancsot a terminálba. Ha a „make” már telepítve van, akkor a „make: ***” feliratot kell látni: nincs megadva cél és nem található a makefile. állj meg."
  13. Következő típusú 'git', és ha az "git" már telepítve van, akkor látnia kell egy csomó alapvető git-parancsot.
  14. Most szükségünk van néhány eszközláncra (számos típus létezik, köztük a GCC, a Linaro és egy maroknyi egyedi). Egyes eszközök esetében szükség lehet különféle eszközláncokra, például az összes eszközmag nem indul el, vagy nem fordul elő a GCC segítségével.

ARM eszközökhöz

Ehhez a GCC 4.7-et fogjuk használni.

  1. Nyissa meg a Linux terminált és írja be: mkdir kernel
  2. Most írja be: cd kernel
  3. (nem kell „kernel” lennie, ez az egyszerűség kedvéért, megnevezheti, amit csak akar.)
  4. Most írja be: git klón //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

ARM 64 eszközökhöz

Szüksége van egy 64 bites kernel fordítóra az ARM 64 eszközökhöz, például az aarch64.

A készülék forrásfájljainak beolvasása

Ez egy trükkös rész, mivel meg kell találnia egy GitHub repo-t, amely a kernelforrást tárolja. Természetesen meg kell keresnie, valószínűleg megtalálható az XDA fórumokon.

Íme egy példa Git-kernelforrásra.

A bal felső sarokban látnia kell: „Branch: Completed by xxxx”.

A kernel / projekt különféle verziói vannak, ezeket általában „tesztelés”, „béta”, „végleges kiadás” stb. Választja el.

A kernel mappák általában a következők:

  • / arch / arm / configs : Ez az eszköz különféle konfigurációs fájljait tartalmazza, például a vezérlőket stb.
  • / output / arch / arm / boot / : Itt tárolják a képeket.
  • build.sh : A szkript, amely egyszerűsíti az építési folyamatot.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Ez általában egy eszközlánc, amelyet a kernelforrásba helyeznek, így megkönnyítve a megtalálását.

Töltse le a kernelforrást.

Nyissa meg a Linux terminált, és ellenőrizze, hogy a korábban létrehozott kernelmappában van-e (cd kernel).

Írja be a terminált: „git clone“ a github kernel URL-je - b „az ág neve”

Példa: “git klón //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW”

A kernel építése

Ennek megkönnyítése érdekében navigálhat a helyre a fájlkezelőben. Ennek a / home / felhasználói azonosítónak / kernelnek kell lennie (vagy bármi, amit a kernel mappának nevezte).

Két mappát látnia kell az eszközlánc és a kernelforrás számára. Menjen be a kernel forrásmappájába.

ARM eszközökhöz

Írja be a terminálba a következő parancsokat:

 #! / bin / bash export ARCH = kar export CROSS_COMPILE = mkdir kimenet make -C $ (pwd) O = output "defconfig neve és szükség esetén változata" make -j4 -C $ (pwd) O = output 

Itt található egy áttekintés ezeknek a parancsoknak a végrehajtásáról a jövőben.

  • #! / bin / bash: A parancsfájl parancsának futtatására utasítja
  • export ARCH = arm: annak meghatározása, hogy melyik kernel-architektúra típusa van (például arm64 stb.)
  • export CROSS_COMPILE = : Keresse meg az eszközláncot. Meg kell egyeznie a pontos útvonallal, és a kötőjel a végén valóban kötelező.
  • mkdir output: Ez létrehoz egy könyvtárat az összeállított zimage mentésére
  • make -C $ (pwd) O = output : Defconfig meghatározása a kernel összeállításának irányításához.
  • make -j4 -C $ (pwd) O = output : Amikor az építési folyamat megkezdődik, a -j # megmondja, hogy milyen gyorsan próbálja meg fordítani. Ezt a számot általában a CPU-nak megfelelően állítja be. Például, ha -j32-re állít egy költségvetési CPU-t, valószínűleg hatalmas instabilitást okozna.
  • cp kimenet / arch / arm / boot / image $ (pwd) / arch / arm / boot / zImage : Ez a kép mozgatására szolgál egy második útvonalra.

Egy másik példa:

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

ARM 64 eszközökhöz

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "az eszközlánc elérési útja" (ennek úgy kell végződnie, mint például "nameofarch-something-") mkdir output make -C $ (pwd) O = output "defconfig neve és szükség esetén variáció "make -j4 -C $ (pwd) O = output 

Mediatek (MTK) eszközökhöz

 #! / bin / bash export CROSS_COMPILE = "az eszközlánc elérési útja" (ennek úgy kell véget érnie, mint például "nameofarch-something-") export ARCH = arm ARCH_MTK_PLATFORM = make "a defconfig neve és változata, ha szükséges" make -j4 

A kernel architektúrájához szükséges lépések elvégzése után beírhatja a terminált: sudo bash build.sh

Ezután beírja felhasználói jelszavát, és elindul a fordítási folyamat.

Eltarthat egy ideig, de általában nem túl sokáig, a kernel összeállítása nem olyan, mint egy teljes Android ROM összeállítása. Ez valóban a CPU-tól függ - például egy AMD Phenom X4 3.4GHz-es 8 GB RAM-mal körülbelül 10 percet kell igénybe vennie a fordítástól az elejétől a végéig.

Amikor befejezi, értesítenie kell Önt egy “zimage ready” üzenettel.

ARM és ARM64 eszközök

Lépjen a „/ Kimenet / arch / arm / boot /” oldalra, hogy megtalálja a képeket.

Mediatek eszközök

Lépjen a „/ arch / arm / boot /” oldalra, hogy megtalálja a képeket.

Nem minden kernelkészítés eredményez Zimage fájlt, néha más képformátumokként is felépíthető.

Fontos: Ha ismét fordítani szeretné, javasoljuk, hogy adja meg a make clean és a mrproper parancsokat, mielőtt újrakezdené a fordítási folyamatot.

A rendszermag indítása

Két lehetőség közül választhat.

Használhatja az anykernel módszert is (amelyet az XDA user @ osm0sis határoz meg ebben az XDA szálban). Olvassa el a teljes bemutatót, de a lépések összefoglalása a következő:

  1. Helyezze a zImage fájlt a gyökérzetbe (a dtb-nek és / vagy a dtbo-nak itt is meg kell jelennie az egyedi eszközöket igénylő eszközöknél, ezek mindegyike visszaáll az eredetire, ha nem tartalmazza)
  2. Helyezze el a szükséges ramdisk fájlokat a / ramdisk fájlba és a modulokat a / modulokba (a teljes elérési úttal, mint például a / modules / system / lib / modules)
  3. Helyezzen el minden szükséges javítófájlt (általában részleges fájlokat, amelyek parancsokkal járnak) a / patch fájlba
  4. Módosítsa az anykernel.sh fájlt, hogy hozzáadja a kernel nevét, a rendszerindítási partíció helyét, a mellékelt ramdisk fájlok engedélyeit, és használjon módszereket a szükséges ramdisk fájlok módosításához (opcionálisan tegyen a banner és / vagy a verzió fájlokat a gyökérre, hogy ezeket villanás közben megjelenítsék).
  5. "zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * helyőrző"

A rendelkezésre álló másik módszer a boot.img kicsomagolása ugyanazon ROM-ról (például CM, TouchWiz, EMUI stb.) És ugyanazon Android verzióról. Ezután cserélnéd a Zimage-t. Ez ismét egy nagyon bonyolult folyamat, ezért el kell olvasnia a pontos útmutatót, de a lépések összefoglalása a következő:

  1. Kicsomagolás.
  2. Vagy használja az „unpackimg” parancssort, vagy egyszerűen húzza a képet. Ez elosztja a képet és kicsomagolja a memórialemezt egy alkönyvtárba.
  3. Változtassa meg a ramdiskot, ahogy tetszik.
  4. A repackimg kötegelt szkript nem igényel bemenetet, és egyszerűen csak a korábban megosztott zImage-et újracsomagolja az újonnan csomagolt módosított ramdisk programmal, az összes eredeti képinformációval (amelyet szintén felosztott és mentett).
  5. A tisztító kötegelt parancsfájl visszaállítja a mappát a kiindulási állapotába, eltávolítva a split_img + ramdisk könyvtárakat és minden új, csomagolt ramdisk- vagy képfájlt.

A kernel villogása előtt készítsen biztonsági másolatot a stock.img állományról, majd villanjon a kernelre, hogy megtudja, lehetővé teszi-e az Android rendszerének indítását.

Funkciók hozzáadása a kernelhez

Funkciók hozzáadása a kernelhez nagyszerű módja annak, hogy fűszerezzék. Sok olyan dolgot meg lehet változtatni, mint például a CPU-vezérlők, az IO ütemezők, a GPU overclockingja, az audio fejlesztések stb.

Itt található egy példa egy kormányzó hozzáadására (ezt a kormányzót Intellimm kódnéven hívják).

Az első 2 szövegmezőben láthatjuk, hogy az „arch / arm / configs /”, „msm8974_sec_defconfig” és „cm_msm8974_sec_defconfig” fájlok módosultak.

A fájlok 140. és 141. sora közé a következő szöveg került: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”

(Ez a sor az Intellimm engedélyezéséhez szolgál, amikor összeállítjuk a kernelt.)

Ugyanez a technika vonatkozik a többi szövegmezőre is (mi lett hozzáadva és törölve, és a hely)

A hozzáadott szolgáltatásoktól függően több vagy kevesebb fájl módosítható, hozzáadható vagy törölhető.

Tehát összefoglalva: a Kötelezettségvállalás tekintse meg az összes elvégzett változást és minden mást!

Általános tippek és trükkök

Hogyan lehet megváltoztatni a kernel nevét és verzióját:

Az egyszerű módszer:

Szerkessze ezt a sort a defconfig fájlban:

 "CONFIG_LOCALVERSION =" - "után - a defconfig-ban 

Példa: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

A fejlett módszerek:

Keresse meg a Makefile fájlt a kernelforrás gyökérmappájában.

Adja hozzá ezeket a sorokat:

 CONFIG_LOCALVERSION = "a munkatársa név" "LOCALVERSION =" a munkatársa verziója " 

NE módosítsa a Version, PatchLevel, Sublevel vagy Extraversion sorokat.

Alternatív módszer:

Ugrás a / script / mkcompile_h fájlhoz, és adja hozzá ezeket a sorokat:

 LINUX_COMPILE_BY = "a választott név" LINUX_COMPILE_HOST = "a választott név" 

PATH problémák megoldása:

Ha a „Helyes az útja?” Hibát tapasztalja, próbálja ki ezt a Linux terminálon:

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

Az Ubuntu mappák elérése a Windows 10 rendszerből

Ubuntuhoz vezető útja általában:

C: \ Felhasználók ”NÉV” \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

A fájlokat azonban nem szabad közvetlenül a Windows-ból szerkesztenie, mivel ez általában megsemmisíti a hozzájuk tartozó engedélyeket - akkor vissza kell állítania az engedélyeket a Linux terminálon belül.

Érdekes Cikkek