Logo lt.nowadaytechnol.com

Kaip Sukurti Pasirinktinį „Android“branduolį

Turinys:

Kaip Sukurti Pasirinktinį „Android“branduolį
Kaip Sukurti Pasirinktinį „Android“branduolį

Video: Kaip Sukurti Pasirinktinį „Android“branduolį

Video: Kaip Sukurti Pasirinktinį „Android“branduolį
Video: Sukurkite savo pasirinktinį „Android“ branduolį | varlė 2024, Kovas
Anonim

Jei kada pagalvojote „Kaip sukurti„ Android “branduolį“, šis vadovas skirtas jums. Savo branduolio sukūrimas gali būti naudinga patirtis, nes tai suteiks jums didesnį „Android“įrenginio valdymo laipsnį, pradedant procesoriumi, RAM, GPU ir baigiant akumuliatoriumi.

Tai labai praktinis procesas, apimantis daugybę kompiliavimo ir konsolės komandų, tačiau jei esate susipažinę su „Linux“(arba gerai sekate nurodymus), tai neturėtų būti jokių problemų.

Atkreipkite dėmesį, kad šis vadovas skirtas ne „Mediatek“įrenginiams. „Appual“turi „Mediatek“pagrindu sukurtų „Android“įrenginių, susijusių su branduolio sudarymo vadovu, čia: Kaip sukurti „Mediatek“„Android“branduolį iš šaltinio

Kiti „Appual“įdomūs straipsniai:

  • Kaip sukurti pasirinktinį ROM iš „Android“atvirojo kodo projekto Pt. 2
  • Kaip rankiniu būdu kurti „Android“sistemos vartotojo sąsają

Jei statai paprotys branduolį, jums tereikės klonuoti branduolį iš „Git“su žemiau pateiktomis komandomis. Bet jei kompiliuojate atsargų branduolį, turite žinoti, iš kur gauti pirminį branduolį iš šaltinio (dėl įvairiausių priežasčių).

Originalūs įvairių branduolių branduolių šaltiniai:

  • „Google“
  • LG
  • „Samsung“
  • HTC
  • „OnePlus“
  • „Motorola“
  • „Sony“

Norėdami atsisiųsti branduolį, naudokite „git clone“arba atsisiųskite „tarball“failą ir ištraukite jį.

Štai git komanda:

git klonas -b

–ARBA–

degutas -xvf

Pavyzdžiui, tai būtų komanda paimti naujausią „Google“„Nexus 6P Nougat 3.10“branduolį: git klonas -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angle

Tai turėtų klonuoti branduolio / msm repo į meškeriotojų aplanką ir automatiškai patikrinti „android-msm-angler-3.10-nougat-mr2“.

Kadangi dauguma „Android“įrenginių yra pagrįsti ARM, turėsime naudoti kompiliatorių, kuris bus skirtas ARM įrenginiams - tai reiškia, kad pagrindinis / vietinis kompiliatorius neveiks, nebent jūs kompiliuosite kitame ARM įrenginyje. Čia turite mažai galimybių. Galite patys susikurti, jei žinote, naudodami kažką panašaus į „Crosstool-NG“. Arba galite atsisiųsti iš anksto sukurtą kompiliatorių, pvz., Tą, kurį „Google“teikia „Arm 32-bit“ir „Arm64“.

Prieš atsisiųsdami iš anksto sukurtą kompiliatorių, turite žinoti tikslią savo įrenginio architektūrą, todėl naudokite tokią programą kaip „CPU-Z“.

Dar viena populiari įrankių grandinė būtų „UberTC“, tačiau bet kokiems branduoliams, didesniems nei 4,9, turėsite juos pataisyti, o geriausia praktika yra sudaryti pirmiausia naudojant „Google“įrankių grandinę.

Bet kokiu atveju, nusprendę dėl įrankių grandinės, turite ją klonuoti. git klona

Dabar nukreipkite „Makefile“į savo kompiliatorių, paleisti jį iš įrankių grandinės aplanko.

eksportuoti CROSS_COMPILE = $ (pwd) / bin / -

Pavyzdys:

eksportuoti CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-

Dabar pasakykite „Makefile“savo įrenginio architektūrą.

eksportuoti ARCH = && eksportuoti SUBARCH =

Pavyzdys:

eksportuoti ARCH = arm64 && eksportuoti SUBARCH = arm64

Suraskite tinkamą defconfig, naršydami į arch // configs aplanką branduolio šaltinyje (pvz., Arch / arm64 / configs).

Tada raskite tinkamą kūrėjo konfigūracijos failą jūsų kuriamam branduoliui. Paprastai tai turėtų būti _defconfig arba _defconfig forma. Defconfig nurodys kompiliatoriui, kokias parinktis įtraukti į branduolį.

Taip pat galima rasti bendrų „Qualcomm“konfigūracijų, kurios paprastai bus panašios (msm-perf_defconfig, msmcortex-perf_defconfig).

Statyti branduolį

Kodas:

padaryti švarų padaryti mrproper padaryti padaryti -j $ (nproc –visi

Kai tos komandos yra sėkmingos, pabaigoje turite turėti: „Image“, „Image-dtb“, „Image.gz“arba „Image.gz-dtb“failus.

Jei šios komandos nepavyko, jums gali tekti nurodyti išvesties katalogą, kai kuriate naują CAF pagrįstą branduolį, pavyzdžiui:

mkdir -p iš padaryti O = švarų padaryti O = out mrproper padaryti O = iš padaryti O = iš -j $ (nproc –visi

Jei vis tiek nenori veikti, kažkas sugedo - patikrinkite antraštes arba pateikite tai branduolio kūrėjams.

Jei branduolys buvo sėkmingai sukompiliuotas, dabar turite jį mirksėti. Tai galima padaryti dviem skirtingais būdais - galite išpakuoti ir perpakuoti įkrovos vaizdą naudodami „Android Image Kitchen“arba „AnyKernel2“.

Taip pat gali būti tam tikrų niuansų, susijusių su konkrečiais įrenginiais - jei taip yra, turėsite kreiptis į savo įrenginių kūrėjus.

„Android Image Kitchen“mirksi branduolys

Atsisiųskite „Android Image Kitchen“

Ištraukite „Android“įrenginio įkrovos vaizdą iš naujausio turimo vaizdo (tiek atsargų, tiek pasirinktinio ROM).

Dabar išpakuokite vaizdą naudodami šį kodą: išpakuotiim.sh.im

Tada raskite „zImage“failą ir pakeiskite jį sukomponuotu branduolio atvaizdu - pervardykite jį į tą, kuris buvo įkrovos paveikslėlyje.

Dabar paleiskite šį kodą, norėdami perpakuoti vaizdą: repackimg.s

Dabar galite mirksinti naują įkrovos vaizdą naudodami greitą įkrovą, TWRP ir kt.

Mirksi branduolys „AnyKernel2“

Atsisiųskite naujausią „AnyKernel2“

Pritaikykite šį pleistrą, kad išvalytumėte visus demonstracinius failus. wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff pleistras -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff rm addb6ea860aab14f0ef684f6956d17418f95f29a.dif

Dabar įdėkite savo branduolio vaizdą į failo šaknį ir atidarykite anykernel.sh, kad pakeistumėte šias reikšmes:

  • stygos: jūsų branduolio vardas
  • vardas#: Išvardykite visus savo įrenginio kodų pavadinimus (iš /system/build.prop: ro.product.device, ro.build.product)
  • blokuoti: Jūsų įkrovos vaizdo kelias jūsų fstabe. „Fstab“gali būti atidarytas iš jūsų įrenginio šakniavaisio ir jis atrodys maždaug taip:

Pirmasis stulpelis yra vertė, į kurią norite nustatyti bloką.

Dabar iš naujo užklijuokite branduolį ir mirkykite jį „AnyKernel2“: zip -r9 branduolys.zip * -x README.md branduolys.zi

Įspėjame, kad daugelyje CAF branduolių yra „Python“scenarijus, kuris suaktyvins „Werror“, o tai iš esmės lemia tai, kad jūsų sukūrimas mesti klaidas mažiausiuose dalykuose. Taigi, jei naudojate aukštesnes GCC versijas (kuriose yra daugiau įspėjimų), paprastai turėsite atlikti pakeitimus „Makefile“:

diff --git a / Makefile b / Makefile indeksas 1aaa760f255f..bfccd5594630 100644 --- a / „Makefile“+++ b / „Makefile“@@ -326,7 +326,7 @@ įtraukti $ (srctree) /scripts/Kbuild.include AS = $ (CROSS_COMPILE) kaip LD = $ (CROSS_COMPILE) ld -REAL_CC = $ (CROSS_COMPILE) gcc + CC = $ (CROSS_COMPILE) gcc CPP = $ (CC) -E AR = $ (CROSS_COMPILE) ar NM = $ (CROSS_COMPILE) nm @@ -340,10 +340,6 @@ DEPMOD = / sbin / depmod PERL = perl PATIKRINTI = negausus

- # Kompiliatoriui naudokite pakuotę. Šis paketas ieško naujų - # įspėjimai ir priverčia juos sustoti susidūrus. -CC = $ (srctree) /scripts/gcc-wrapper.py $ (REAL_CC) - CHECKFLAGS: = -D_linux_ -Dlinux -D_STDC_ -Dunix -D_unix_ / -Wbitwise -Wno-return-void $ (CF) CFLAGS_MODULE =

Jei naudojate aukštesnę GCC įrankių grandinę (5.x, 6.x, 7.x ar net 8.x), jums reikės sugadinti GCC pakuotės scenarijų, kaip nurodyta aukščiau, ir naudoti suvienodintą GCC antraštės failą (pasirinkite, jei turite include / linux /compiler-gcc#.h failas):

3.4 / 3.10: 3.18

Net jei gausite daug įspėjimų, jų nebūtina taisyti (paprastai).

Jūsų branduolys pastatytas ir paruoštas naudoti!

Rekomenduojamas: