Hoe DIY Port TWRP voor Android te maken
Appual's host veel Android-gidsen te rooten, maar root-guides bestaan niet voor elk apparaat op de planeet - dit is meestal te wijten aan een aantal redenen; vooral de onbeschikbaarheid van een aangepast herstel, zoals TWRP, voor een bepaald apparaat. Gelukkig is porteren van een aangepast herstel zoals TWRP naar je apparaat niet ongelooflijk moeilijk (hoewel nog steeds redelijk).
Als u een apparaat hebt dat u wilt rooten en geen enkele soort van root-methode kunt vinden, moet u er goed aan doen om te leren hoe u TWRP voor uzelf kunt gebruiken. Dit geeft je op zijn minst een aangepast herstel om vanaf te werken terwijl je probeert je apparaat te rooten.
Als u 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 te bouwen vanaf Source
- Hoe Custom ROM te maken van Android Open Source Project | Punt 2
- Handmatig de gebruikersinterface van het Android-systeem onder de aandacht brengen
Pre-Benodigdheden:
Een basiskennis van Linux-opdrachten en / of het volledig opnieuw samenstellen van AOSP.
Als je niet bekend bent met de basis Linux-commando's en / of AOSP bouwt, is deze gids niets voor jou - er is geen nieuwe vriendelijke manier om een handleiding voor dit proces te schrijven. Ik raad aan om eerst een aantal eenvoudigere bewerkingen uit te proberen, zoals het lezen van Appual's handleiding over het bouwen van AOSP vanaf het begin.
Om te bouwen, kunt u 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 die gerelateerd zijn aan makefile. Als u niet handig bent bij het oplossen van makefile-problemen, moet u ervoor kiezen om Omni in plaats daarvan te gebruiken.
Maar als u besluit om CM te gebruiken, moet u TWRP in de map CM / bootable / recovery-twrp plaatsen en stelt u RECOVERY_VARIANT: = twrp in het bestand BoardConfig.mk in
Je kunt de TWRP-broncode hier vinden en je moet de nieuwste beschikbare branche kiezen. U hoeft dit niet met Omni te doen, omdat het standaard TWRP-bron bevat, tenzij u een oudere versie van Omni gebruikt - in welk geval u de nieuwste branch wilt gebruiken.
Als je alleen TWRP wilt bouwen, kun je proberen om met een kleinere boom te werken, zoals deze Minimal Manifest TWRP. Er kunnen echter situaties zijn waarin u meer repo's nodig heeft dan dit manifest toestaat.
Belangrijke opmerking voor het compileren: als u vlaggen toevoegt of wijzigt, moet u eerst opschonen (of clobber maken) voordat u opnieuw compileert, anders worden uw vlagwijzigingen niet opgenomen!
Nadat u de TWRP-broncode hebt, moeten we enkele bouwvlaggen voor uw specifieke apparaat wijzigen. Zoek de BoardConfig.mk voor uw apparaat - meestal wordt dit gevonden in apparaten / fabrikant / codenaam (bijvoorbeeld apparaten / lge / hammerhead / BoardConfig.mk)
De bordconfiguratie moet architectuur- en platforminstellingen bevatten - deze zijn meestal al inbegrepen als u de apparaatconfiguratie van iemand anders gebruikt. Maar als je je eigen hebt gemaakt, moet je deze toevoegen. Dit komt omdat zonder hen de herstart opstartbaar is en het TeamWin-logo herhaaldelijk op uw scherm zal knipperen.
Vlaggen moeten onderaan het BoardConfig.mk worden geplaatst, onder de kop #twrp
Voor alle apparaten moet u TWRP instrueren welk thema u wilt gebruiken. De vlag TW_THEME wordt gebruikt in plaats van de oudere DEVICE_RESOLUTION-vlag, wat betekent dat TWRP nu schaling gebruikt om elk thema uit te rekken.
Uw opties zijn: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi en watch_mdpi. Voor de portretmodus wilt u waarschijnlijk het hdpi-thema van 720 × 1280 en hoger, maar voor landschapstoestellen met 1280 × 720 en hoger.
Dus je build-vlagsectie + themavlag zou er als volgt uit moeten zien:
#twrp
TW_THEME: = portrait_hdpi
Enkele aanvullende bouwvlaggen die u in deze sectie wilt opnemen (tegoeden bij XDA-forums):
- RECOVERY_SDCARD_ON_DATA: = true (dit zorgt voor een juiste afhandeling van / data / media op apparaten met deze map voor opslag (de meeste Honeycomb en apparaten die oorspronkelijk werden geleverd met ICS zoals Galaxy Nexus). Deze vlag is echter niet vereist voor dit soort apparaten. definieer deze vlag niet en voeg ook geen verwijzingen toe naar / sdcard, / internal_sd, / internal_sdcard, of / emmc in uw fstab, dan gaan we automatisch ervan uit dat het apparaat geëmuleerde opslag gebruikt.)
- BOARD_HAS_NO_REAL_SDCARD: = true - deactiveert dingen zoals SD-kaart partitioneren en kan je wat ruimte besparen als TWRP niet past in je herstel-patitie
- TW_NO_BATT_PERCENT: = true - schakelt het weergeven van het batterijpercentage uit voor apparaten die dit niet goed ondersteunen
- TW_CUSTOM_POWER_BUTTON: = 107 - aangepaste kaart van 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 knop Herstart herstel uit het herstartmenu
- RECOVERY_TOUCHSCREEN_SWAP_XY: = true - verwisselt de toewijzing van aanrakingen tussen de X- en Y-as
- RECOVERY_TOUCHSCREEN_FLIP_Y: = true - zet de touchscreen-waarden van de y-as om
- RECOVERY_TOUCHSCREEN_FLIP_X: = true - schakelt x-as touchscreenwaarden in
- TWRP_EVENT_LOGGING: = true - maakt logboekregistratie van aanraakgebeurtenissen mogelijk om touchscreen-problemen te debuggen (laat dit niet open voor een release - het vult uw logbestand zeer snel)
- BOARD_HAS_FLIPPED_SCREEN: = true - draait het scherm ondersteboven voor schermen die ondersteboven waren gemonteerd
Extra bouwvlaggen 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 ze te documenteren.
Gebruik van Recovery.Fstab
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 een Galaxy S4:
Om de compatibiliteit met uw specifieke buildboom te maximaliseren, kunt u een twr.stab maken en PRODUCT_COPY_FILES gebruiken om in> etc> twr.fstab te plaatsen.
Wanneer TWRP twrp.fstab in de ramdisk start en vindt, wordt het hernoemd naar> etc> recovery.fstab.bak - in feite vervangt het de fstab van je apparaat door de TWRP fstab, die de compatibiliteit verlengt.
Voorbeeldcode:
PRODUCT_COPY_FILES + = device / lge / hammerhead / twrp.fstab: herstel> root> etc> twr.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 witruimte / spaties / tabbladen. De vlag zal alleen die partitie beïnvloeden, maar geen andere. Vlaggen worden gescheiden door puntkomma's. Hier is een voorbeeldcode:
Dus laten we dit beetje bij beetje onderzoeken. De vlag hier geeft een weergavenaam van Micro SDcard. De vlag wipeingui maakt deze partitie beschikbaar voor wissen in het menu Advanced Wipe. De verwijderbare markering geeft aan dat deze partitie niet altijd aanwezig is, waardoor montagefouten worden voorkomen.
Een volledige lijst met vlaggen (credits voor TeamWin) :
- verwijderbaar - geeft aan dat de partitie mogelijk niet aanwezig is om te voorkomen dat er montagefouten worden weergegeven tijdens het opstarten
- opslag - geeft aan dat de partitie kan worden gebruikt als opslag die de partitie beschikbaar maakt als opslag voor back-up, herstel, zip-installaties, enz.
- settingsstorage - er moet 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- endsysteem, maar mogelijk niet in de GUI wordt weergegeven voor wissen door de gebruiker
- userrmrf - heft het normale wissen van het formatteren op en staat alleen toe dat de partitie wordt gewist met de opdracht rm -rf
- back-up = - moet worden opgevolgd door het gelijkteken, dus back-up = 1 of back-up = 0, 1 geeft aan dat de partitie in de back-up / herstellijst kan worden vermeld, terwijl 0 ervoor zorgt dat deze partitie niet in de back-uplijst wordt weergegeven.
- wipeingui - maakt de partitie zichtbaar in de GUI zodat de gebruiker deze kan selecteren voor wissen in het geavanceerde wismenu
- wipeduringfactoryreset - de partitie zal worden gewist tijdens een fabrieksreset
- ignoreblkid - blkid wordt gebruikt om te bepalen welk bestandssysteem in gebruik is door TWRP, deze vlag zorgt ervoor dat TWRP de resultaten van blkid overslaat en negeert en gebruikt alleen het bestandssysteem dat is opgegeven in de fstab
- retainlayoutversion - zorgt ervoor dat TWRP het .layoutversion-bestand in / gegevens op apparaten zoals Sony Xperia S bewaart welk soort gebruik / data / media maar nog steeds een afzonderlijke / sdcard-partitie heeft
- symlink = - zorgt ervoor dat TWRP een extra mount-opdracht uitvoert bij het koppelen van de partitie, meestal gebruikt met / data / media om / sdcard te maken
- display = - stelt een weergavenaam in voor de partitie voor vermelding in de GUI
- storagenaam = - stelt een opslagnaam in voor de partitie voor vermelding in de GUI-opslaglijst
- backupname = - stelt een back-upnaam in voor de partitie voor vermelding in de GUI-back-up / herstellijst
length = - wordt meestal gebruikt om lege ruimte aan het einde van de / data-partitie te reserveren voor het opslaan van de decoderingssleutel wanneer Android's volledige apparaatversleuteling aanwezig is, niet instellen dit kan leiden tot het onvermogen om het apparaat te versleutelen - canencryptbackup = - 1 of 0 om in / uit te schakelen, maakt TWRP de back-up van deze partitie coderen als de gebruiker codering kiest (geldt alleen voor tar-back-ups, niet voor afbeeldingen)
- userdataencryptbackup = - 1 of 0 om in / uit te schakelen, zorgt ervoor dat TWRP alleen het userdata-gedeelte van deze partitie versleutelt, bepaalde subfacetten zoals / data / app zouden niet worden gecodeerd om tijd te besparen
- subpartitionof = - moet worden gevolgd door het gelijkteken en het pad van de partitie waar het een subpartitie van is. Een subpartitie wordt behandeld als onderdeel van de hoofdpartitie, dus maakt TWRP automatisch / datadata een subpartitie van / gegevens. Dit betekent dat / datadata niet in de GUI-lijsten verschijnen, maar / datadata zouden worden gewist, geback-upt, hersteld, gekoppeld en niet-gemonteerd op het moment dat die bewerkingen op / data worden uitgevoerd.
Een goed voorbeeld van het gebruik van subpartities is de 3x efs partities op de LG Optimus G:
Hierdoor worden alle 3 de partities in één EFS-vermelding in de TWRP GUI gebundeld, waardoor alle drie een back-up kunnen maken en samen onder één vermelding kunnen worden hersteld.
Met TWRP 3.2.0 en hoger, waarbij V2 Fstab wordt gebruikt, hoeft u geen bouwvlaggen toe te voegen . V2 Fstab-ondersteuning is automatisch. V2 Fstab ondersteunt ook jokertekens (het * -symbool) die handig kunnen 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 een V1 Fstab-regel met een jokerteken bedoeld voor een USB OTG:
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenHier is een V2 Fstab-regel voor hetzelfde apparaat die hetzelfde resultaat behaalt:
Bovendien kunt u twrp.flags enz. 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 de instellingen in de V2 Fstab overschrijven.
Een Huawei-apparaat heeft bijvoorbeeld deze V2-fstab in de etc recovery.fstab:
Het kan ook zijn dat deze vlaggen zijn opgenomen:
Dus hier zullen de eerste twee regels in TWRP.Flags de Boot en de Recovery-partities toevoegen, die niet aanwezig waren in de V2 Fstab. Vervolgens geeft de / cust-regel in TWRP.flags TWRP de opdracht om de eindgebruiker een back-up van de (cust) partitie te geven en deze een weergavenaam te geven.
De / misc-partitie is aanwezig in twr.flags en de / oeminfo-partitie geeft TWRP de instructie om ook back-ups toe te staan en deze een weergavenaam te geven.
We hebben de / datalijn nodig omdat veel Huawei-apparaten gecodeerd zijn, maar gebruikmaken van speciale Huawei binaries - dus gebruiken we de Huawei binaries om het apparaat automatisch te ontsleutelen in de herstelmodus. Dus hier zal de / datalijn TWRP instrueren om / dev / block / dm -0 te gebruiken, en niet / dev / block / bootdevice / by-naam / userdata, die meestal wordt gebruikt voor de juiste montage.
Eindelijk is er / system_image, zodat TWRP een optie bevat om een systeemkopie te maken in de menu's Back-up en Herstel.
De officiële git van TeamWin moet ook de nieuwste apparaatbomen bevatten voor apparaten met een officiële TWRP-poort. De github van TeamWin is HIER te vinden.
Nadat Omni of CM is gesynchroniseerd en u uw TWRP-vlaggen hebt ingesteld, moet u een bron maken ./build/envsetup.sh
En je wilt het apparaat lunchen, zodat je iets kunt doen als lunch omni_hammerhead.eng.
Na een succesvolle lunch gebruiken de meeste apparaten dit commando:
U moet de # in -j # vervangen door de kerntelling +1. Dus als je een dualcore-it -j3 hebt, zal een quadcore -j5 zijn, enz. Vervang het # met het core-aantal +1, dus als je een dual-core hebt, is het -j3 en wordt een quad-core -j5, etc.
Ook vereisen typische Samsung-apparaten dit:
Dit komt omdat de meeste Samsung-apparaten het herstel als een extra ramdisk in de boot opnemen, in plaats van op een afzonderlijke herstelpartitie (die de meeste andere apparaten gebruiken).
Inmiddels zou u TWRP moeten hebben gecompileerd voor uw apparaat en hopelijk werkt het in een emulatoromgeving. Test altijd eerst je TWRP-poort in een emulatoromgeving, zodat je niet het risico loopt om je apparaat te bezoeken.
Download deze set apparaatconfiguratiebestanden.
Compileer een herstelimage met behulp van die apparaatbestanden. Klik in de Android SDK op Extra -> AVD's beheren. Klik op Nieuw. Stel het in als volgt:
Klik vervolgens op OK.
Zodra je je AVD en je herstelimage hebt, kun je TWRP opstarten in de emulator door naar je map android-sdk / tools te bladeren en deze opdracht uit te voeren:
Merk op dat ADB niet meteen werkt. Ongeveer 10 tot 15 seconden nadat TWRP is opgestart, wordt ADB online gezet. We starten ADB via init.rc dus zelfs als TWRP niet opstart vanwege een soort codefout die je mogelijk hebt gemaakt, zou ADB nog moeten werken. Genieten!
TWRP- en A / B-apparaten (credits voor TeamWin):
Vanuit het oogpunt van TWRP zijn A / B-apparaten niet veel anders dan gewone apparaten, maar ontwikkelaars lijken niet te denken aan het werken op deze apparaten. Ik ga proberen enig licht op dit onderwerp te werpen en hopelijk zal dit als een richtlijn dienen voor het overbrengen van TWRP naar A / B-apparaten.
Laten we eerst eens kijken wat een A / B-apparaat is en hoe het anders is. A / B-apparaten hebben duplicaten van veel partities op het apparaat. Een A / B-apparaat heeft 2x systeempartities, 2x opstartpartities, 2x leveranciersdivisies, 2x modem / firmwaredelingen, etc. Er is slechts één slot tegelijkertijd in gebruik. Tijdens de vroege opstartprocedure lezen de eerste fasen van de bootloader een kleine hoeveelheid gegevens, het BCB- of Bootloader-besturingsblok, en beslissen of de A-partities of de B-partities moeten worden opgestart. Wanneer een OTA-update beschikbaar is, worden de gegevens uit de actieve sleuf gekopieerd van de inactieve sleuf en gepatcht / bijgewerkt. Als u zich bijvoorbeeld op slot A bevindt, downloadt uw apparaat de update en kopieert de bestaande systeempartitie vanuit slot A en patch / update deze met de nieuwe updates in slot B. Nadat het kopiëren en bijwerken is voltooid, wordt de BCB wordt bijgewerkt en het apparaat wordt opnieuw gestart met slot B. De volgende keer dat een update beschikbaar is, wordt de systeempartitie in slot B gekopieerd naar slot A en bijgewerkt, wordt de BCB bijgewerkt en worden we opnieuw op slot A gestart. Wanneer partities op het apparaat worden bekeken, je ziet zoiets als dit:
Let op de dual-boot-, systeem- en leverancierspartities in de bovenstaande lijst, maar slechts één userdatapartitie.
Hoewel er technisch gezien geen vereiste is, weet ik dat alle A / B-apparaten die tot nu toe zijn geleverd geen afzonderlijke herstelpartitie hebben. In plaats daarvan bevat de opstartkopie 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. Tijdens het booten, als de kernel wordt verteld om op te starten naar herstel, zal het de ramdisk extraheren in de opstartpartitie. Als de kernel niet verteld wordt door de bootloader om te booten naar herstel, dan zal de kernel de juiste systeempartitie (A of B) koppelen omdat de systeempartitie een volledig rootbestandssysteem is. Dit betekent dat de systeempartitie op deze apparaten is gemount naar / in plaats van naar / system en de systeempartitie alle bestanden bevat die normaal in de boot image ramdisk en a / systeem submap zouden zijn geweest.
Vanuit een TWRP-standpunt zijn er 3 dingen die u moet doen voor een A / B-apparaat. Eerst moet je instellen
Code:
Ten slotte, als je eenmaal in TWRP bent, wil je waarschijnlijk zeker weten dat bootctl hal-info correct reageert zonder fouten. Gewoonlijk vereist het binaire bestand bootctl een eigen bibliotheek of zelfs een paar services om correct te werken. Als bootctl niet correct werkt, dan kunt u ook geen slots binnen TWRP schakelen.
Naast instellen
Code:
AB_OTA_UPDATER: = true
je wilt misschien ook instellen:
Code:
BOARD_USES_RECOVERY_AS_BOOT: = true
BOARD_BUILD_SYSTEM_ROOT_IMAGE: = true
Als je instelt
Code:
BOARD_USES_RECOVERY_AS_BOOT: = true
herstelimage zal dan niet meer werken en in plaats daarvan zal je bootimage moeten maken. Ik raad niet aan een van deze vlaggen in te stellen voor bomen die alleen voor TWRP zijn gebouwd. Deze vlaggen zijn waarschijnlijk vereist voor ontwikkelaars die volledige ROM's voor A / B-apparaten bouwen.
TWRP installeren / flashen op A / B-apparaten:
Omdat alle bekende A / B-apparaten geen afzonderlijke herstelpartitie hebben, moet u uiteindelijk TWRP naar de opstartpartitie flashen. Op Pixel 1 en 2 gebruiken we fastboot-boot om TWRP tijdelijk op te starten zonder TWRP te laten knipperen. We leveren dan een zip zodat gebruikers TWRP naar beide slots kunnen flashen. U kunt een van deze ritsen downloaden van onze website en de zip zo nodig bijwerken om uw apparaten te ondersteunen. Uiteindelijk zullen we tools aan TWRP toevoegen zodat gebruikers op deze apparaten een flash-herstel kunnen uitvoeren zonder ritsen te hoeven gebruiken.
Onlangs werkte ik aan de Razer-telefoon. De Razer-telefoon biedt helaas geen ondersteuning voor het opstarten van fastboot. In plaats daarvan moeten gebruikers hun huidige actieve opstartsleuf bepalen
Code:
om in TWRP te komen. Eenmaal in TWRP kunnen ze dan naar de herstartpagina gaan en terugkeren naar hun oorspronkelijk actieve slot, een back-up maken en vervolgens TWRP installeren. Met behulp van de inactieve slot kunnen gebruikers een goede, ongewijzigde back-up van hun apparaat krijgen voordat TWRP wordt geïnstalleerd.
Extra notities:
Als je wilt dat TWRP officieel wordt ondersteund voor je apparaat, zodat het automatisch kan worden geïnstalleerd met de TWRP-app, en je dit echt wilt, zodat andere eigenaars van hetzelfde apparaat kunnen genieten van officiële TWRP-ondersteuning en het is het leuke Om dit te doen, moet je de volgende informatie naar TeamWin sturen:
- Apparaatconfiguratiebestanden om TWRP te compileren vanaf de bron voor uw apparaat - pak een recovery.img niet handmatig in, ze moeten het vanaf de bron compileren.
- Nadat TeamWin een exemplaar van TWRP heeft gemaakt, zullen ze het naar u toe sturen voor validatie. Nadat u het hebt gevalideerd, bouwt TeamWin een werkafbeelding voor uw apparaat en voegt het dit toe aan de officiële TWRP-app.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken