Logo sk.nowadaytechnol.com

Ako DIY Port TWRP Pre Android

Obsah:

Ako DIY Port TWRP Pre Android
Ako DIY Port TWRP Pre Android
Anonim

Spoločnosť Appual hostí veľa príručiek „ako rootovať Android“, ale rootovské príručky neexistujú pre každé zariadenie na planéte - je to zvyčajne z mnohých dôvodov; predovšetkým nedostupnosť vlastnej obnovy, ako napríklad TWRP, pre konkrétne zariadenie. Našťastie nie je prenos vlastného obnovenia, ako je TWRP, do vášho zariadenia neuveriteľne zložitý (aj keď stále dosť).

Image
Image

Ak máte zariadenie, ktoré chcete rootovať, a nemôžete nájsť žiadny dostupný spôsob rootovania, mali by ste dôrazne zvážiť, ako sa naučiť portovať TWRP pre seba. Takto získate prinajmenšom vlastné zotavenie, z ktorého budete môcť pracovať pri pokuse o rootnutie zariadenia.

Ak vás zaujímajú tieto druhy DIY projektov pre Android, prečítajte si tiež nasledujúcich príručiek od spoločnosti Appuals:

  • Ako zostaviť jadro systému Mediatek Android zo zdroja
  • Ako zostaviť vlastnú ROM z projektu Android s otvoreným zdrojom Pt. 2
  • Ako manuálne nastavovať používateľské rozhranie systému Android

Predbežné požiadavky:

základné znalosti príkazov Linux a / alebo úplného zostavenia AOSP.

Ak nie ste oboznámení so základnými príkazmi systému Linux alebo s vytváraním AOSP, táto príručka nie je pre vás - neexistuje žiadny spôsob písania príručky pre tento proces, ktorý by bol vhodný pre nováčikov. Navrhujem najskôr vyskúšať nejaké jednoduchšie operácie, napríklad prečítať si Appualovu príručku o tom, ako vytvoriť AOSP od nuly

Teraz pre vytváranie môžete použiť Omni verzie 5.1 až 8.1 alebo CM verzie 12.1 až 15.1 - ale ak používate CM, môžu sa vyskytnúť malé problémy súvisiace s makefile. Ak nie ste šikovný pri riešení problémov s makefile, mali by ste sa radšej rozhodnúť použiť Omni.

Ale ak sa rozhodnete použiť CM, budete musieť umiestniť TWRP do priečinka CM / bootable / recovery-twrp a nastaviť RECOVERY_VARIANT: = twrp v súbore BoardConfig.mk

Zdrojový kód TWRP nájdete tu a mali by ste zvoliť najnovšiu dostupnú pobočku. Toto nebudete musieť robiť s Omni, pretože predvolene obsahuje zdroj TWRP, pokiaľ nepoužívate staršiu verziu Omni - v takom prípade budete chcieť vychádzať z najnovšej vetvy.

Ak chcete vytvoriť iba TWRP, môžete skúsiť pracovať s menším stromom, ako je tento Minimálny manifest TWRP. Môžu však nastať situácie, kedy budete potrebovať viac opakovaní, ako umožňuje tento manifest.

Hlavná poznámka pred kompiláciou: Ak pridáte alebo zmeníte akékoľvek vlajky, budete musieť pred opätovnou kompiláciou vyčistiť (alebo vytvoriť clobber), inak nebudú vaše zmeny vlajok zahrnuté

Po získaní zdrojového kódu TWRP musíme zmeniť niektoré príznaky zostavenia pre vaše konkrétne zariadenie. Nájdite BoardConfig.mk pre svoje zariadenie - zvyčajne sa nachádza v zariadení / výrobca / kódové meno (napríklad zariadenia / lge / hammerhead / BoardConfig.mk)

Konfigurácia dosky musí obsahovať architektúru a nastavenie platformy - tieto sú zvyčajne už zahrnuté ak používate konfiguráciu zariadenia niekoho iného. Ak ste si však vytvorili svoj vlastný, budete ho musieť pridať. Je to tak preto, lebo bez nich môže byť obnovovacie bootovanie predvolené a iba opakovane bliká logo TeamWin na obrazovke.

Vlajky by mali byť umiestnené v dolnej časti BoardConfig.mk pod nadpisom #twrp

Pre všetky zariadenia musíte dať TWRP pokyn, ktorá téma sa má použiť. Namiesto staršieho príznaku DEVICE_RESOLUTION sa použije príznak TW_THEME, čo znamená, že TWRP teraz na zväčšenie ľubovoľnej témy používa škálovanie.

Máte tieto možnosti: portrét_hdpi, portrét_mdpi, krajina_hdpi, krajina_mdpi a hodinky_mdpi. V režime na výšku budete pravdepodobne potrebovať tému hdpi s rozlíšením 720 × 1280 a vyšším, ale pre zariadenia na šírku s rozlíšením 1280 × 720 a vyšším.

Takže vaša sekcia príznaku zostavenia + príznak témy by mali vyzerať takto:

#twrp

TW_THEME: = portrét_hdpi

Niektoré ďalšie príznaky zostavenia, ktoré by ste chceli zahrnúť do tejto sekcie (kredity pre XDforums):

  • RECOVERY_SDCARD_ON_DAT: = true (umožňuje to správne zaobchádzanie so zariadeniami / data / medion, ktoré majú tento priečinok na ukladanie (väčšina plástov a zariadenia, ktoré boli pôvodne dodané s ICS, ako je Galaxy Nexus) Tento príznak sa však nevyžaduje pre tieto typy zariadení. Ak tak urobíte nedefinujte tento príznak a tiež nezahŕňajte žiadne odkazy na / sdcard, / internal_sd, / internal_sdcard alebo / emmc vo vašom fstab, potom budeme automaticky predpokladať, že zariadenie používa emulované úložisko.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - zakáže veci, ako je rozdelenie na SD karty, a môže vám ušetriť miesto, ak TWRP nezapadá do vašej obnovovacej registrácie
  • TW_NO_BATT_PERCENT: = true - zakáže zobrazenie percenta batérie pre zariadenia, ktoré ju nepodporujú správne
  • TW_CUSTOM_POWER_BUTTON: = 107 - vlastné mapuje tlačidlo napájania pre uzamknutú obrazovku
  • TW_NO_REBOOT_BOOTLOADER: = true - odstráni tlačidlo reštartu bootloaderu z ponuky reštartu
  • TW_NO_REBOOT_RECOVERY: = true - odstráni tlačidlo obnovenia reštartu z ponuky reštartu
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - zamení mapovanie dotykov medzi osami X a Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - preklopí hodnoty osi y na dotykovej obrazovke
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - preklopí hodnoty x na dotykovej obrazovke
  • TWRP_EVENT_LOGGING: = true - aktivuje protokolovanie dotykových udalostí, aby pomohlo ladiť problémy s dotykovou obrazovkou (nenechávajte toto zapnuté pre vydanie - veľmi rýchlo vyplní váš logfile)
  • BOARD_HAS_FLIPPED_SCREEN: = true - preklopí obrazovku hore nohami pre obrazovky, ktoré boli namontované hore nohami

Ďalšie príznaky zostavenia možno nájsť prehľadávaním súborov Android.mk v zdroji obnovy, zvyčajne sa však nepoužívajú, takže nemá zmysel ich dokumentovať.

Používanie programu Recovery. Fstab

TWRP 2.5 a vyšší podporuje nové funkcie recovery.fstab - najmä schopnosť rozšíriť funkcie zálohovania a obnovy TWRP. Nemusíte pridávať príznaky fstab, pretože s väčšinou oddielov sa bude pracovať automaticky.

TWRP podporuje iba fstab v2 vo verzii 3.2.0 a vyššej - v starších verziách TWRP budete musieť použiť starý formát fstab. Tu je príklad TWRP fstab pre Galaxy S4:

Image
Image

Ak chcete maximalizovať kompatibilitu s konkrétnym zostavovacím stromom, môžete vytvoriť twrp.fstab a použiť PRODUCT_COPY_FILES na umiestnenie do> etc> twrp.fstab.

Keď TWRP spustí a nájde v ramdisku twrp.fstab, premenuje ho na> etc> recovery.fstab.bak - v podstate nahradí fstab z vášho zariadenia TWRP fstab, ktorý rozširuje kompatibilitu.

Príklad kódu:

PRODUCT_COPY_FILES + = zariadenie / lge / hammerhead / twrp.fstab: zotavenie> root> atď> twrp.fstab

Fstab v TWRP môže obsahovať nejaké „príznaky“pre každý oddiel uvedený na fstab.

Tieto príznaky sa pridávajú na koniec výpisu oblastí na fstab, oddelené bielymi medzerami / medzerami / kartami. Vlajka ovplyvní iba tento oddiel, ale nie iné. Vlajky sú oddelené bodkočiarkami. Tu je príklad kódu:

Image
Image

Poďme to teda preskúmať kúsok po kúsku. Príznak tu udáva zobrazovaný názov karty „Micro SDcard“. Príznak wipeingui sprístupní tento oddiel na utieranie v ponuke Advanced Wipe. Vymeniteľný príznak naznačuje, že tento oddiel nie je vždy prítomný, čo zabráni zobrazeniu chýb pri pripojení.

kompletný zoznam vlajok (kredity pre TeamWin) :

  • odnímateľný - označuje, že oddiel nemusí byť prítomný, aby zabránil zobrazovaniu chýb pri pripojení počas bootovania
  • skladovanie- označuje, že oddiel je možné použiť ako úložisko, vďaka ktorému je oddiel k dispozícii ako úložisko na zálohovanie, obnovu, inštaláciu zip atď.
  • úložisko nastavení - ako ukladací priestor nastavení by mal byť nastavený iba jeden oddiel, tento oddiel sa používa ako miesto na ukladanie súboru s nastaveniami TWRP
  • možno utrieť - označuje, že oddiel môže byť vymazaný serverovým systémom, ale nemusí byť uvedený v grafickom používateľskom rozhraní na utieranie používateľom
  • userrmrf - prepíše bežný formát stierania a umožní vymazanie iba oddielu pomocou príkazu rm -rf
  • backup = - musí byť nahradený znamienkom rovná sa, takže backup = 1 alebo backup = 0, 1 znamená, že oddiel môže byť uvedený v zozname zálohovanie / obnovenie, zatiaľ čo 0 zaisťuje, že sa tento oddiel nebude zobrazovať v zozname záloh.
  • wipeingui - spôsobí, že sa oddiel zobrazí v grafickom používateľskom rozhraní, aby ho používateľ mohol vybrať v ponuke rozšíreného vymazania na vymazanie
  • vymazaniepripravenynastavu - oddiel bude počas obnovenia továrenských nastavení vymazaný
  • ignoreblkid - blkid sa používa na určenie toho, aký súborový systém používa TWRP, tento príznak spôsobí, že TWRP preskočí / ignoruje výsledky blkid a použije iba súborový systém uvedený vo fstab
  • keeplayoutversion - spôsobí, že TWRP uchová súbor.layoutversion v zariadeniach / daton, ako je Sony XperiS, ktorých použitie / data / medibut má stále samostatný oddiel / sdcard
  • symbolický odkaz= - spôsobí, že TWRP pri pripojení oddielu spustí ďalší príkaz na pripojenie, ktorý sa zvyčajne používa s / data / medito create / sdcard
  • displej= - nastaví zobrazovaný názov oddielu na zaradenie do grafického používateľského rozhrania
  • storagename= - nastaví názov úložiska pre oddiel pre zaradenie do zoznamu úložiska GUI
  • nazov zálohy= - nastaví názov zálohy pre oddiel pre zaradenie do zoznamu zálohovania / obnovenia GUI length = - zvyčajne sa používa na rezerváciu prázdneho miesta na konci oddielu / dat na uloženie dešifrovacieho kľúča, keď je k dispozícii úplné šifrovanie zariadenia Android, nastavenie tohto parametra môže viesť k nemožnosti šifrovania zariadenia.
  • canencryptbackup= - 1 alebo 0 na povolenie / zakázanie, spôsobí, že TWRP zašifruje zálohu tohto oddielu, ak si užívateľ zvolí šifrovanie (platí iba pre zálohy tar, nie pre obrázky)
  • userdataencryptbackup= - 1 alebo 0 na zapnutie / vypnutie, spôsobí, že TWRP zašifruje iba užívateľský podiel tohto oddielu, niektoré subfondy ako / data / app by neboli šifrované, aby šetrili čas
  • pododdiel= - musí byť nasledovaný znamienkom rovnosti a cestou oddielu, do ktorého je rozdelený. podpodiel sa považuje za „súčasť“hlavného oddielu, takže napríklad TWRP automaticky vytvorí / podadresát / datadats z / údajov. To znamená, že / datadat sa nezobrazí v záznamoch GUI, ale / datadat by sa mal vymazať, zálohovať, obnoviť, pripojiť a odpojiť, kedykoľvek sa tieto operácie vykonajú na / data.

dobrým príkladom použitia pod oddielov sú oddiely 3x efs na LG Optimus G:

Image
Image

Toto zhlukuje všetky 3 oddiely do jedného záznamu „EFS“v grafickom používateľskom rozhraní TWRP, čo umožňuje zálohovanie a obnovenie všetkých troch oddielov pod jedným záznamom.

S TWRP 3.2.0 a novším, ktorý používa V2 Fstab, nemusíte pridávať žiadne príznaky zostavenia. Podpora V2 Fstab je automatická. V2 Fstab podporuje aj zástupné znaky (symbol *), ktoré môžu byť užitočné pre karty USB OTG a micro-SD s viacerými oddielmi. Môžete tiež naďalej používať formát V1 Fstab a je úplne možné použiť typy V1 aj V2 v rovnakom Fstab.

Napríklad tu je linka V1 Fstab so zástupnými znakmi určená pre USB OTG:

Image
Image

Tu je linka V2 Fstab pre rovnaké zariadenie, ktoré dosahuje rovnaký výsledok:

Image
Image

Ďalej môžete zahrnúť atď. Twrp.flags, ktoré používajú formát V1 Fstab, a môžu byť použité na doplnenie V2 Fstab o príznaky TWRP, ďalšie oddiely, ktoré nie sú obsiahnuté vo V2 Fstab, alebo na prepísanie nastavení vo V2 Fstab.

Napríklad zariadenie Huawei môže mať tento fstab V2 v etc recovery.fstab:

Image
Image

Môže obsahovať aj tieto príznaky:

Image
Image

Takže tu prvé dva riadky v TWRP. Flags pridajú oddiely Boot a Recovery, ktoré vo V2 Fstab neboli. Potom riadok / cust v TWRP.flags dá TWRP pokyn, aby umožnil koncovému používateľovi zálohovať oddiel (cust) a pridelil mu zobrazovaný názov.

Oddiel / misc je prítomný v twrp.flags a oddiel / oeminfo dáva pokyn TWRP, aby umožnil aj zálohovanie a zadanie zobrazovaného názvu.

Potrebujeme / datline, pretože veľa zariadení Huawei je šifrovaných, ale používajú špeciálne binárne súbory Huawei - preto binárne súbory Huawei používame na automatické dešifrovanie zariadenia v režime obnovenia. Takže tu / datline vydá príkaz TWRP, aby používal / dev / block / dm -0, a nie / dev / block / bootdevice / by-name / userdata, ktoré sa zvyčajne používajú na „správne“pripojenie “.

Nakoniec existuje / system_image, takže TWRP zahrnie možnosť vytvorenia obrazu systému v ponukách Zálohovanie a obnovenie.

Oficiálny gitHub TeamWin by mal obsahovať aj najnovšie ukážky stromov zariadení pre zariadenia, ktoré majú oficiálny port TWRP. GitHub TeamWin nájdete TU.

Po synchronizácii Omni alebo CM a nastavení vlajok TWRP by ste mali vytvoriť source./build/envsetup.sh

A budete chcieť zariadenie „obedovať“, aby ste mohli robiť napríklad „obed omni_hammerhead.eng“.

Po úspešnom obede bude väčšina zariadení používať tento príkaz:

Image
Image

Musíte nahradiť # in –j # počtom jadier +1. Takže ak máte dvojjadro, je to –j3, štvorjadro bude –j5 atď. Nahraďte # číslom jadra +1, takže ak máte dvojjadro, je to -j3 a štvorjadro sa stane -j5 atď.

Toto tiež budú vyžadovať typické zariadenia Samsung:

Image
Image

Je to tak preto, lebo väčšina zariadení Samsung obsahuje obnovenie ako extrramdisk v bootovacom systéme, nie na samostatnom oddiele na obnovenie (ktorý používa väčšina ostatných zariadení).

Teraz by ste už mali mať pre svoje zariadenie zostavený TWRP a dúfajme, že to bude fungovať v prostredí emulátora. Najskôr by ste mali vždy otestovať svoj port TWRP v prostredí emulátora, aby ste neriskovali znehodnotenie zariadenia. Stiahnite si túto sadu konfiguračných súborov zariadenia

Zostavte obraz obnovy pomocou týchto súborov zariadenia. V súprave Android SDK kliknite na Nástroje -> Spravovať AVD. Kliknite na Nový. Nastavte to takto:

Image
Image

Potom kliknite na tlačidlo OK.

Keď už máte svoj AVD a obraz na obnovenie, môžete v emulátore zaviesť TWRP prehľadaním do priečinka android-sdk / tools a spustiť tento príkaz:

Image
Image

Upozorňujeme, že ADB nefunguje okamžite. Asi 10 až 15 sekúnd po dokončení bootovania TWRP bude ADB online. Spúšťame ADB viinit.rc, takže aj keď sa TWRP nepodarí zaviesť z dôvodu nejakej chyby kódu, ktorú ste mohli urobiť, ADB by mala stále fungovať. Užite si to!

Zariadenia TWRP a A / B (kredity pre TeamWin):

Z hľadiska TWRP sa A / B zariadenia veľmi nelíšia od bežných zariadení, zdá sa však, že vývojári sa pri práci na týchto zariadeniach ostýchajú. Pokúsim sa vniesť do tejto veci trochu svetla a dúfam, že to bude slúžiť ako sprievodca pri prenose TWRP na A / B zariadenia.

Po prvé, poďme pochopiť, čo je A / B zariadenie a v čom je iný. Zariadenia A / B majú duplikáty mnohých oddielov. A / B zariadenie má 2x systémové oddiely, 2x zavádzacie oddiely, 2x oddiely dodávateľov, 2x modemové / firmvérové oddiely atď. Súčasne sa používa iba jeden slot. Počas skorého spustenia načítali prvé fázy bootloaderu malé množstvo údajov nazývaných BCB alebo Bootloader Control Block a rozhodli sa, či majú zaviesť oddiely alebo oddiely B. Keď je k dispozícii OTupdate, dáta z aktívneho slotu sa skopírujú z neaktívneho slotu a opravia / aktualizujú. Napríklad, ak ste práve v zásuvke A, vaše zariadenie stiahne aktualizáciu a skopíruje existujúci systémový oddiel zo zásuvky a opraví ju / aktualizuje novými aktualizáciami do zásuvky B. Po dokončení kopírovania a aktualizácie je BCB sa aktualizuje a zariadenie sa reštartuje pomocou slotu B. Nabudúce, keď bude k dispozícii aktualizácia, systémový oddiel v slote B sa skopíruje do slotu a aktualizuje sa, BCB sa aktualizuje a my sa reštartujeme do slotu A. Pri prezeraní oddielov v zariadení budete ' Uvidím niečo také:

Image
Image

Vo vyššie uvedenom zozname si všimnite oddiely s duálnym bootovaním, systémový systém a server dodávateľa, ale iba jeden oddiel používateľa.

Aj keď si myslím, že technicky neexistujú žiadne požiadavky, všetky doteraz dodávané zariadenia A / B nemajú žiadny samostatný oddiel na obnovenie. Namiesto toho bootovací obraz obsahuje obnovu na svojom ramdisku. Dôležité je vedieť, že bootovací obraz teraz obsahuje aj obnovu. Pre úplnosť je systémový oddiel úplným koreňovým súborovým systémom. Ak sa počas bootovania hovorí, že má jadro bootovať, aby sa obnovilo, extrahuje ramdisk v bootovacej oblasti. Ak bootloader nehovorí jadru o zavedení z obnovy, potom jadro pripojí príslušný systémový oddiel (alebo B), pretože systémový oddiel je úplným koreňovým súborovým systémom. To znamená, že systémový oddiel na týchto zariadeniach je pripojený k / namiesto k / system a systémový oddiel obsahuje všetky súbory, ktoré by sa normálne nachádzali v zavádzacom obraze ramdisk a / podpriečinku / system.

Z hľadiska TWRP existujú 3 veci, ktoré musíte urobiť pre A / B zariadenie. Najprv musíte nastaviť

Kód:

Image
Image

Akonáhle sa dostanete do TWRP, pravdepodobne sa budete chcieť ubezpečiť, že bootctl hal-info reaguje správne bez chýb. Na správne fungovanie binárny súbor bootctl zvyčajne vyžaduje vlastnú knižnicu alebo dokonca niekoľko služieb. Ak bootctl nefunguje správne, nebudete tiež môcť správne prepínať sloty v TWRP.

Okrem nastavenia

Kód:

AB_OTA_UPDATER: = pravda

možno budete chcieť nastaviť:

Kód:

BOARD_USES_RECOVERY_AS_BOOT: = pravda

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = pravda

Ak nastavíte

Kód:

BOARD_USES_RECOVERY_AS_BOOT: = pravda

potom make recoveryimage už nebude fungovať a namiesto toho budete musieť urobiť bootimage. Neodporúčam nastavovať žiadny z týchto príznakov pre stromy založené iba na TWRP. Tieto príznaky sa pravdepodobne budú vyžadovať u vývojárov, ktorí vytvárajú úplné ROM pre A / B zariadenia.

Inštalácia / blikanie TWRP na A / B zariadeniach:

Pretože všetky známe zariadenia A / B nemajú samostatný oddiel na obnovenie, budete nakoniec musieť do bootovacieho oddielu flashovať TWRP. Na zariadeniach Pixel 1 a 2 používame rýchle spustenie na dočasné zavedenie TWRP bez blikania TWRP. Potom dodávame zips, ktorý používateľom umožní blesk TWRP do oboch slotov. Jeden z týchto zipov si môžete stiahnuť z našej webovej stránky a podľa potreby aktualizovať zip, aby podporoval vaše zariadenia. Nakoniec do TWRP pridáme nástroje, ktoré používateľom umožnia bleskové zotavenie na týchto zariadeniach bez potreby použitia zipsov.

Nedávno som pracoval na telefóne Razer Phone. Telefón Razer bohužiaľ nepodporuje rýchle spustenie systému. Namiesto toho musia používatelia určiť svoj aktuálne aktívny bootovací slot pomocou

Kód:

Image
Image

dostať sa do TWRP. Po získaní TWRP potom môžu prejsť na stránku reštartu a vrátiť sa späť na svoj pôvodne aktívny slot, vytvoriť zálohu a potom nainštalovať TWRP. Používanie neaktívneho slotu umožňuje používateľom získať dobrú a neupravenú zálohu svojho zariadenia pred inštaláciou TWRP.

Doplňujúce Poznámky:

Ak chcete pre svoje zariadenie získať oficiálnu podporu TWRP, aby ju bolo možné automaticky nainštalovať pomocou aplikácie TWRP, a chcete to naozaj urobiť, aby si ostatní vlastníci rovnakého zariadenia mohli vychutnať oficiálnu podporu TWRP, je to príjemná vec Ak chcete urobiť, budete musieť spoločnosti TeamWin poslať nasledujúce informácie:

  1. Konfiguračné súbory zariadenia na kompiláciu TWRP zo zdroja pre vaše zariadenie - neprebaľujte recovery.img ručne, musia ho zostaviť zo zdroja.
  2. Keď TeamWin vytvorí kópiu TWRP, pošle vám ju na overenie - po jej overení vytvorí TeamWin pracovný obrázok pre vaše zariadenie a pridá ho do oficiálnej aplikácie TWRP.

Odporúča: