Logo nl.nowadaytechnol.com

Hoe DIY-poort TWRP Voor Android Te Maken

Inhoudsopgave:

Hoe DIY-poort TWRP Voor Android Te Maken
Hoe DIY-poort TWRP Voor Android Te Maken

Video: Hoe DIY-poort TWRP Voor Android Te Maken

Video: Hoe DIY-poort TWRP Voor Android Te Maken
Video: How To Port Twrp Recovery For Any Android | Port Twrp Recovery for Mediatek/Qualcomm #TechInformer 2024, Maart
Anonim

Appual's host vele "hoe Android rooten" -gidsen, maar rootgidsen bestaan niet voor elk apparaat op de planeet - dit is meestal te wijten aan een aantal redenen; vooral de onbeschikbaarheid van aangepast herstel, zoals TWRP, voor een bepaald apparaat. Gelukkig is het overdragen van aangepast herstel zoals TWRP naar uw apparaat niet ongelooflijk moeilijk (hoewel nog steeds redelijk).

Image
Image

Als je een apparaat hebt dat je wilt rooten en geen enkele root-methode kunt vinden, zou je sterk moeten overwegen om zelf te leren hoe je TWRP kunt porten. Dit geeft je in ieder geval aangepast herstel om vanaf te werken terwijl je probeert je apparaat te rooten.

Als je geïnteresseerd bent in dit soort doe-het-zelf-Android-projecten, overweeg dan ook om de volgende handleidingen van Appuals te lezen:

  • Hoe Mediatek Android-kernel vanuit de bron te bouwen
  • Hoe een aangepast ROM te bouwen vanuit Android Open Source Project | Pt. 2
  • Hoe u de gebruikersinterface van het Android-systeem handmatig kunt thematiseren

Vereisten:

basiskennis van Linux-commando's en / of AOSP vanaf het begin compileren.

Als je niet bekend bent met basis Linux-commando's en / of het bouwen van AOSP, dan is deze handleiding niets voor jou - er is geen 'beginnersvriendelijke' manier om een handleiding voor dit proces te schrijven. Ik stel voor om eerst een aantal eenvoudigere bewerkingen uit te proberen, zoals het lezen van Appual's gids over het vanaf nul bouwen van AOSP

Nu kunt u voor het bouwen Omni-versies 5.1 tot 8.1 of CM-versies 12.1 tot 15.1 gebruiken - maar als u CM gebruikt, kunt u kleine problemen tegenkomen met betrekking tot makefile. Als je niet handig bent bij het oplossen van makefile-problemen, moet je ervoor kiezen om Omni te gebruiken.

Maar als u besluit CM te gebruiken, moet u TWRP in de map CM / bootable / recovery-twrp plaatsen en RECOVERY_VARIANT: = twrp instellen in het BoardConfig.mk-bestand

U kunt de TWRP-broncode hier vinden en u moet de laatst beschikbare branch kiezen. U hoeft dit niet te doen met Omni, omdat het standaard de TWRP-bron bevat, tenzij u een oudere versie van Omni gebruikt - in dat geval wilt u uit de nieuwste branch halen.

Als u alleen TWRP wilt bouwen, kunt u proberen met een kleinere boom te werken, zoals deze Minimal Manifest TWRP. Er kunnen echter situaties zijn waarin u meer opslagplaatsen nodig heeft dan in dit manifest wordt toegestaan.

Belangrijke opmerking voor het compileren: Als u vlaggen toevoegt of wijzigt, moet u deze opschonen (of clobber maken) voordat u opnieuw compileert, anders worden uw vlagwijzigingen niet opgenomen

Nadat u de TWRP-broncode heeft, moeten we enkele van de build-vlaggen voor uw specifieke apparaat wijzigen. Zoek de BoardConfig.mk voor uw apparaat - meestal vindt u deze in devices / fabrikant / codenaam (bijvoorbeeld devices / lge / hammerhead / BoardConfig.mk)

De bordconfiguratie moet architectuur- en platforminstellingen bevatten - deze zijn meestal al inbegrepen als je gebruikt de apparaatconfiguratie van iemand anders. Maar als u uw eigen heeft gemaakt, moet u deze toevoegen. Dit komt omdat zonder hen de herstart kan mislukken en het TeamWin-logo herhaaldelijk op uw scherm zal knipperen.

Vlaggen moeten onderaan de BoardConfig.mk worden geplaatst, onder de kop #twrp

Voor alle apparaten moet u TWRP instrueren welk thema u wilt gebruiken. De TW_THEME-vlag wordt gebruikt in plaats van de oudere DEVICE_RESOLUTION-vlag, wat betekent dat TWRP nu schaalvergroting gebruikt om elk thema uit te rekken.

Uw opties zijn: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi en watch_mdpi. Voor portretmodus wilt u waarschijnlijk het hdpi-thema van 720 × 1280 en hoger, maar voor liggende apparaten gaat u met 1280 × 720 en hoger.

Dus je build-vlagsectie + themavlag zou er als volgt uit moeten zien:

#twrp

TW_THEME: = portret_hdpi

Enkele extra build-vlaggen die u in deze sectie wilt opnemen (credits voor XDforums):

  • RECOVERY_SDCARD_ON_DAT: = true (dit maakt de juiste afhandeling mogelijk van / data / medion-apparaten die deze map voor opslag hebben (de meeste Honeycomb en apparaten die oorspronkelijk met ICS zijn geleverd, zoals Galaxy Nexus). Deze vlag is echter niet vereist voor dit soort apparaten. deze vlag niet definiëren en ook geen verwijzingen naar / sdcard, / internal_sd, / internal_sdcard of / emmc in uw fstab opnemen, dan gaan we er automatisch van uit dat het apparaat gebruikmaakt van geëmuleerde opslag.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - schakelt zaken uit zoals SD-kaartpartitionering en kan u wat ruimte besparen als TWRP niet past in uw herstelpatroon
  • TW_NO_BATT_PERCENT: = true - schakelt de weergave van het batterijpercentage uit voor apparaten die dit niet correct ondersteunen
  • TW_CUSTOM_POWER_BUTTON: = 107 - aangepaste kaarten de aan / uit-knop voor het vergrendelingsscherm
  • TW_NO_REBOOT_BOOTLOADER: = true - verwijdert de reboot bootloader-knop uit het reboot-menu
  • TW_NO_REBOOT_RECOVERY: = true - verwijdert de herstartknop uit het herstartmenu
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - verwisselt de toewijzing van aanrakingen tussen de X- en Y-as
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - draait y-as touchscreen-waarden om
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - draait x-as touchscreen-waarden om
  • TWRP_EVENT_LOGGING: = true - maakt logboekregistratie van aanraakgebeurtenissen mogelijk om problemen met touchscreens te helpen oplossen (laat dit niet aan voor vrijgave - het zal uw logbestand zeer snel vullen)
  • BOARD_HAS_FLIPPED_SCREEN: = true - draait het scherm ondersteboven voor schermen die ondersteboven zijn gemonteerd

Extra build-vlaggen kunnen worden gevonden door door de Android.mk-bestanden in de herstelbron te bladeren, maar ze worden meestal niet gebruikt, dus het heeft geen zin om ze te documenteren.

Recovery. Fstab gebruiken

TWRP 2.5 en hoger heeft ondersteuning voor nieuwe recovery.fstab-functies - met name de mogelijkheid om de back-up- / herstelfuncties van TWRP uit te breiden. U hoeft geen fstab-vlaggen toe te voegen, omdat de meeste partities automatisch worden afgehandeld.

TWRP ondersteunt alleen v2 fstabs in versie 3.2.0 en hoger - in oudere versies van TWRP moet je het oude formaat van fstab gebruiken. Hier is een voorbeeld van TWRP fstab voor Galaxy S4:

Image
Image

Om de compatibiliteit met uw specifieke build-tree te maximaliseren, kunt u twrp.fstab maken en PRODUCT_COPY_FILES gebruiken om in> etc> twrp.fstab te plaatsen.

Wanneer TWRP start en twrp.fstab in de ramdisk vindt, zal het het hernoemen naar> etc> recovery.fstab.bak - in feite vervangt het de fstab van je apparaat door de TWRP fstab, wat de compatibiliteit uitbreidt.

Voorbeeld code:

PRODUCT_COPY_FILES + = device / lge / hammerhead / twrp.fstab: herstel> root> etc> twrp.fstab

De fstab in TWRP kan enkele "vlaggen" bevatten voor elke partitie die in de fstab wordt vermeld.

Deze vlaggen worden toegevoegd aan het einde van de partitielijst in de fstab, gescheiden door spaties / spaties / tabs. De vlag heeft alleen invloed op die partitie, maar niet op andere. Vlaggen worden gescheiden door puntkomma's. Hier is een voorbeeldcode:

Image
Image

Laten we dit dus beetje bij beetje onderzoeken. Het vlaggetje hier geeft de weergavenaam "Micro SD-kaart" weer. De wipeingui-vlag maakt deze partitie beschikbaar voor wissen in het menu Geavanceerd wissen. De verwijderbare vlag geeft aan dat deze partitie niet altijd aanwezig is, waardoor montagefouten niet worden weergegeven.

volledige lijst met vlaggen (credits voor TeamWin) :

  • verwijderbaar - geeft aan dat de partitie mogelijk niet aanwezig is, waardoor er geen montagefouten worden weergegeven tijdens het opstarten
  • opslag- geeft aan dat de partitie kan worden gebruikt als opslag, waardoor de partitie beschikbaar is als opslag voor back-up, herstel, zip-installaties, enz.
  • instellingenopslag - er mag slechts één partitie worden ingesteld als instellingenopslag, deze partitie wordt gebruikt als de locatie voor het opslaan van het TWRP-instellingenbestand
  • canbewiped - geeft aan dat de partitie kan worden gewist door het back-end-systeem, maar mogelijk niet wordt vermeld in de GUI om door de gebruiker te worden gewist
  • userrmrf - overschrijft het normale formaattype van wissen en staat alleen toe dat de partitie gewist wordt met het rm -rf commando
  • backup = - moet worden opgevolgd door het gelijkteken, dus backup = 1 of backup = 0, 1 geeft aan dat de partitie kan worden vermeld in de backup / herstellijst terwijl 0 ervoor zorgt dat deze partitie niet in de backuplijst verschijnt.
  • wipeingui - laat de partitie verschijnen in de GUI zodat de gebruiker deze kan selecteren om te wissen in het geavanceerde wipe-menu
  • wissen tijdens fabrieksreset - de partitie wordt gewist tijdens het terugzetten naar de fabrieksinstellingen
  • onwetend - blkid wordt gebruikt om te bepalen welk bestandssysteem in gebruik is door TWRP, deze vlag zorgt ervoor dat TWRP de resultaten van blkid overslaat / negeert en alleen het bestandssysteem gebruikt dat in de fstab is gespecificeerd
  • behoudenlayoutversie - zorgt ervoor dat TWRP het.layoutversion-bestand behoudt in / daton-apparaten zoals Sony XperiS, welk soort gebruik / data / medibut nog steeds een aparte / sdcard-partitie heeft
  • symlink= - zorgt ervoor dat TWRP een extra mount-opdracht uitvoert bij het aankoppelen van de partitie, meestal gebruikt met / data / medito create / sdcard
  • Scherm= - stelt de weergavenaam in voor de partitie voor vermelding in de GUI
  • opslagnaam= - stelt de opslagnaam in voor de partitie voor vermelding in de GUI-opslaglijst
  • backupnaam= - stelt de back-upnaam in voor de partitie voor vermelding in de GUI-back-up / herstellijst length = - wordt meestal gebruikt om lege ruimte te reserveren aan het einde van de / dat-partitie voor het opslaan van de decoderingssleutel wanneer de volledige apparaatversleuteling van Android aanwezig is. Als dit niet wordt ingesteld, kan dit ertoe leiden dat het apparaat niet kan worden versleuteld
  • canencryptbackup= - 1 of 0 om in / uit te schakelen, zorgt ervoor dat TWRP de back-up van deze partitie versleutelt als de gebruiker voor versleuteling kiest (alleen van toepassing op tar-back-ups, niet op afbeeldingen)
  • userdataencryptbackup= - 1 of 0 om in / uit te schakelen, zorgt ervoor dat TWRP alleen het gebruikersgedeelten van deze partitie versleutelt, bepaalde subfuncties zoals / data / app zouden niet worden versleuteld om tijd te besparen
  • subpartitie van= - moet worden gevolgd door het gelijkteken en het pad van de partitie waarvan het een subpartitie is. subpartitie wordt behandeld als "deel" van de hoofdpartitie, dus TWRP maakt bijvoorbeeld automatisch / datadatsubpartitie van / data. Dit betekent dat / datadat niet zal verschijnen in de GUI-lijsten, maar / datadat zal worden gewist, geback-upt, hersteld, aangekoppeld en ontkoppeld telkens wanneer die bewerkingen worden uitgevoerd op / data.

goed voorbeeld van het gebruik van subpartities zijn de 3x efs partities op de LG Optimus G:

Image
Image

Hierdoor worden alle drie de partities samengevoegd tot één "EFS" -item in de TWRP-GUI, waardoor van alle drie een back-up kan worden gemaakt en samen kunnen worden hersteld onder één enkele invoer.

Met TWRP 3.2.0 en hoger die V2 Fstab gebruiken, hoeft u geen build-vlaggen toe te voegen. V2 Fstab-ondersteuning is automatisch. V2 Fstab ondersteunt ook jokertekens (het * -symbool), wat handig kan zijn voor USB OTG- en micro-SD-kaarten met meerdere partities. U kunt ook het V1 Fstab-formaat blijven gebruiken, en het is heel goed mogelijk om zowel V1- als V2-typen in dezelfde Fstab te gebruiken.

Hier is bijvoorbeeld V1 Fstab-regel met jokerteken bedoeld voor USB OTG:

Image
Image

Hier is de V2 Fstab-regel voor hetzelfde apparaat waarmee hetzelfde resultaat wordt bereikt:

Image
Image

Bovendien kunt u etc twrp.flags opnemen die het V1 Fstab-formaat gebruiken, en ze kunnen worden gebruikt om de V2 Fstab aan te vullen met TWRP-vlaggen, extra partities die niet zijn opgenomen in de V2 Fstab of instellingen in de V2 Fstab overschrijven.

Het Huawei-apparaat kan bijvoorbeeld deze V2-fstab hebben in etc recovery.fstab:

Image
Image

Het kan ook deze vlaggen bevatten:

Image
Image

Dus hier zullen de eerste twee regels in TWRP. Flags de opstart- en herstelpartities toevoegen, die niet aanwezig waren in de V2 Fstab. Vervolgens zal de regel / cust in TWRP.flags TWRP instrueren om de eindgebruiker een back-up te laten maken van de (cust) partitie en deze een weergavenaam te geven.

De / misc-partitie is aanwezig in twrp.flags, en de / oeminfo-partitie instrueert TWRP om ook een back-up toe te staan en het een weergavenaam te geven.

We hebben de / datline nodig omdat veel Huawei-apparaten gecodeerd zijn, maar speciale Huawei-binaries gebruiken - dus gebruiken we de Huawei-binaries om het apparaat automatisch te decoderen in de herstelmodus. Dus hier zal de / datline TWRP instrueren om / dev / block / dm -0 te gebruiken, en niet / dev / block / bootdevice / by-name / userdata, die doorgaans wordt gebruikt voor "juiste" montage ".

Eindelijk is er / system_image, zodat TWRP een optie zal bevatten om een systeemimage te maken in de back-up- en herstelmenu's.

De officiële TeamWin-github moet ook de nieuwste voorbeeldapparaatstructuren bevatten voor apparaten met een officiële TWRP-poort. De TeamWin-github is HIER te vinden.

Nadat Omni of CM is gesynchroniseerd en u uw TWRP-vlaggen heeft ingesteld, moet u source./build/envsetup.sh bouwen

En u wilt het apparaat "lunchen", zodat u iets kunt doen als "lunch omni_hammerhead.eng".

Na een succesvolle lunch gebruiken de meeste apparaten deze opdracht:

Image
Image

U moet de # in –j # vervangen door de core count +1. Dus als je dual core hebt is het –j3, quadcore wordt –j5, etc. Vervang de # door de core count +1, dus als je dual core hebt is het -j3 en quadcore wordt -j5, etc.

Bovendien hebben typische Samsung-apparaten dit nodig:

Image
Image

Dit komt omdat de meeste Samsung-apparaten het herstel als een extrramdisk in de boot opnemen, in plaats van op een aparte herstelpartitie (die de meeste andere apparaten gebruiken).

Inmiddels zou je TWRP voor je apparaat moeten hebben gecompileerd en hopelijk werkt het in een emulatoromgeving. U moet uw TWRP-poort altijd eerst in een emulatoromgeving testen, zodat u niet het risico loopt uw apparaat te lenen. Download deze set apparaatconfiguratiebestanden

Compileer herstelimage met behulp van die apparaatbestanden. Klik in de Android SDK op Extra -> AVD's beheren. Klik op Nieuw. Stel het als volgt in:

Image
Image

Klik vervolgens op OK.

Zodra u uw AVD en uw herstelimage heeft, kunt u TWRP opstarten in de emulator door naar uw map android-sdk / tools te bladeren en deze opdracht uit te voeren:

Image
Image

Houd er rekening mee dat ADB niet meteen werkt. Ongeveer 10 tot 15 seconden nadat TWRP klaar is met opstarten, komt ADB online. We starten ADB viinit.rc, dus zelfs als TWRP niet opstart vanwege een of andere codefout die u mogelijk hebt gemaakt, zou ADB nog steeds moeten werken. Genieten!

TWRP- en A / B-apparaten (credits voor TeamWin):

Vanuit TWRP-standpunt verschillen A / B-apparaten niet veel van gewone apparaten, maar ontwikkelaars lijken verlegen om aan deze apparaten te werken. Ik ga proberen wat licht op dit onderwerp te werpen en hopelijk zal dit dienen als gids voor het porten van TWRP naar A / B-apparaten.

Laten we eerst eens kijken wat een A / B-apparaat is en hoe het verschilt. A / B-apparaten hebben duplicaten van veel partities op het apparaat. Een A / B-apparaat heeft 2x systeempartities, 2x opstartpartities, 2x leverancierspartities, 2x modem- / firmwarepartities, etc. Er is slechts één slot tegelijk in gebruik. Tijdens de vroege opstart lezen de eerste fasen van de bootloader een kleine hoeveelheid gegevens die het BCB- of Bootloader-besturingsblok worden genoemd en beslissen of de partities of de B-partities moeten worden opgestart. Wanneer een OT-update beschikbaar is, wordt de dat van het actieve slot gekopieerd van het inactieve slot en gepatcht / bijgewerkt. Als u zich momenteel bijvoorbeeld in slot A bevindt, downloadt uw apparaat de update en kopieert u de bestaande systeempartitie van slot en patcht / update deze met de nieuwe updates naar slot B. Zodra het kopiëren en bijwerken is voltooid, is de BCB bijgewerkt en het apparaat start opnieuw op met sleuf B. De volgende keer dat er een update beschikbaar is, wordt de systeempartitie in sleuf B gekopieerd naar sleuf en bijgewerkt, wordt de BCB bijgewerkt en starten we opnieuw op naar sleuf A. Wanneer u partities op het apparaat bekijkt, kunt u ' Ik zie zoiets als dit:

Image
Image

Let op de dual-boot-, systeem- en leverancierspartities in de bovenstaande lijst, maar slechts één gebruikerspartitie.

Hoewel er technisch gezien geen vereiste is waarvan ik op de hoogte ben, hebben alle tot dusver geleverde A / B-apparaten geen afzonderlijke herstelpartitie. In plaats daarvan bevat de opstartimage het herstel in zijn ramdisk. Het belangrijkste is te weten dat de opstartinstallatiekopie nu ook het herstel bevat. Voor de volledigheid is de systeempartitie een volledig rootbestandssysteem. Als tijdens het opstarten de kernel wordt verteld om op te starten voor herstel, zal het de ramdisk uitpakken in de opstartpartitie. Als de kernel niet door de bootloader wordt verteld om op te starten voor herstel, dan zal de kernel de juiste systeempartitie (of B) aankoppelen omdat de systeempartitie een volledig rootbestandssysteem is. Dit betekent dat de systeempartitie op deze apparaten is aangekoppeld aan / in plaats van aan / system en dat de systeempartitie alle bestanden bevat die normaal in de bootimage-ramdisk en / system-submap zouden staan.

Vanuit TWRP-standpunt zijn er 3 dingen die u moet doen voor een A / B-apparaat. Eerst moet u instellen

Code:

Image
Image

Ten slotte, als je eenmaal in TWRP bent, wil je er waarschijnlijk zeker van zijn dat bootctl hal-info correct reageert zonder fouten. Gewoonlijk vereist het bootctl-binaire bestand een eigen bibliotheek of zelfs een aantal services om correct te werken. Als bootctl niet correct werkt, kunt u ook niet correct van slots binnen TWRP wisselen.

Naast het instellen

Code:

AB_OTA_UPDATER: = waar

misschien wilt u ook instellen:

Code:

BOARD_USES_RECOVERY_AS_BOOT: = waar

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = waar

Als je instelt

Code:

BOARD_USES_RECOVERY_AS_BOOT: = waar

dan zal herstelimage niet langer werken en in plaats daarvan moet je bootimage maken. Ik raad niet aan om een van deze vlaggen in te stellen voor alleen TWRP build-bomen. Deze vlaggen zijn waarschijnlijk vereist voor ontwikkelaars die volledige ROM's voor A / B-apparaten bouwen.

TWRP installeren / knipperen op A / B-apparaten:

Omdat alle bekende A / B-apparaten geen afzonderlijke herstelpartitie hebben, moet u uiteindelijk TWRP naar de opstartpartitie flashen. Op de Pixel 1 en 2 gebruiken we fastboot-boot om TWRP tijdelijk op te starten zonder TWRP te knipperen. We leveren dan zip zodat gebruikers TWRP naar beide slots kunnen flashen. U kunt een van deze ritssluitingen downloaden van onze website en de ritssluiting indien nodig bijwerken om uw apparaten te ondersteunen. Uiteindelijk zullen we tools aan TWRP toevoegen zodat gebruikers herstelacties op deze apparaten kunnen flashen zonder ritsen te hoeven gebruiken.

Onlangs werkte ik aan de Razer Phone. De Razer-telefoon ondersteunt helaas geen fastboot-opstart. In plaats daarvan moeten gebruikers hun momenteel actieve opstartsleuf bepalen met behulp van

Code:

Image
Image

om in TWRP te komen. Eenmaal in TWRP kunnen ze naar de herstartpagina gaan en teruggaan naar hun oorspronkelijk actieve slot, een back-up maken en vervolgens TWRP installeren. Door het inactieve slot te gebruiken, kunnen gebruikers een goede, ongewijzigde back-up van hun apparaat krijgen voordat ze TWRP installeren.

Extra notities:

Als u TWRP officieel ondersteund wilt krijgen voor uw apparaat, zodat het automatisch kan worden geïnstalleerd met de TWRP-app, en u dit echt wilt doen zodat andere eigenaren van hetzelfde apparaat kunnen genieten van officiële TWRP-ondersteuning en dat is het leuke Om dit te doen, moet u de volgende informatie naar TeamWin sturen:

  1. Apparaatconfiguratiebestanden om TWRP vanaf de bron voor uw apparaat te compileren - pak recovery.img niet met de hand opnieuw in, moeten ze het vanaf de bron compileren.
  2. Nadat TeamWin een kopie van TWRP heeft gemaakt, sturen ze deze naar u voor validatie. Zodra u deze heeft gevalideerd, maakt TeamWin een werkimage voor uw apparaat en voegt deze toe aan de officiële TWRP-app.

Aanbevolen: