Logo es.nowadaytechnol.com
Androide 2023

Cómo Hacer DIY Port TWRP Para Android

Tabla de contenido:

Cómo Hacer DIY Port TWRP Para Android
Cómo Hacer DIY Port TWRP Para Android

Video: Cómo Hacer DIY Port TWRP Para Android

Video: Cómo Hacer DIY Port TWRP Para Android
Video: How to port TWRP for any Android device (Oreo/Pie) easily 2023, Junio
Anonim

Appual alberga muchas guías de "cómo rootear Android", pero las guías de raíz no existen para todos los dispositivos del planeta; esto generalmente se debe a varias razones; más especialmente, la falta de disponibilidad de recuperación personalizada, como TWRP, para cualquier dispositivo en particular. Afortunadamente, transferir la recuperación personalizada como TWRP a su dispositivo no es increíblemente difícil (aunque aún lo es bastante).

Image
Image

Si tiene un dispositivo que desea rootear y no puede encontrar ningún tipo de método de rooteo disponible, debe considerar seriamente aprender cómo portar TWRP usted mismo. Esto al menos le dará una recuperación personalizada para trabajar mientras intenta rootear su dispositivo.

Si está interesado en este tipo de proyectos de Android de bricolaje, considere leer también las siguientes guías de Appuals:

  • Cómo construir el kernel de Android Mediatek desde la fuente
  • Cómo construir una ROM personalizada desde un proyecto de código abierto de Android | Pt. 2
  • Cómo aplicar un tema manualmente a la interfaz de usuario del sistema Android

Prerrequisitos:

Conocimientos básicos de comandos de Linux y / o compilación de AOSP desde cero.

Si no está familiarizado con los comandos básicos de Linux o con la compilación de AOSP, esta guía no es para usted: no existe una forma "amigable para los novatos" de escribir una guía para este proceso. Sugiero probar primero algunas operaciones más sencillas, como leer la guía de Appual sobre cómo construir AOSP desde cero

Ahora, para la construcción, puede usar las versiones 5.1 a 8.1 de Omni, o las versiones 12.1 a 15.1 de CM, pero si usa CM, puede encontrar pequeños problemas relacionados con el archivo MAKE. Si no es hábil para solucionar problemas con archivos MAKE, debería optar por utilizar Omni en su lugar.

Pero si decide usar CM, tendrá que colocar TWRP en la carpeta CM / bootable / recovery-twrp y configurar RECOVERY_VARIANT: = twrp en el archivo BoardConfig.mk

Puede encontrar el código fuente de TWRP aquí y debe elegir la última rama disponible. No necesitará hacer esto con Omni, porque incluye la fuente TWRP de forma predeterminada, a menos que esté utilizando una versión anterior de Omni, en cuyo caso, querrá extraer de la última rama.

Si solo desea construir TWRP, puede intentar trabajar con un árbol más pequeño, como este TWRP de manifiesto mínimo. Sin embargo, puede haber situaciones en las que necesite más repositorios de los que permite este manifiesto.

Nota principal antes de compilar: si agrega o cambia cualquier indicador, deberá limpiar (o hacer clobber) antes de volver a compilar, de lo contrario, los cambios de su indicador no se incluirán

Una vez que tenga el código fuente de TWRP, debemos cambiar algunas de las marcas de compilación para su dispositivo específico. Busque BoardConfig.mk para su dispositivo; por lo general, se encontrará en dispositivos / fabricante / nombre en clave (por ejemplo, dispositivos / lge / hammerhead / BoardConfig.mk)

La configuración de la placa debe incluir la configuración de la arquitectura y la plataforma, que normalmente ya están incluidas Si estás usando la configuración del dispositivo de otra persona. Pero si creó las suyas propias, deberá agregarlas. Esto se debe a que sin ellos, el arranque de recuperación puede fallar y simplemente mostrará el logotipo de TeamWin en su pantalla repetidamente.

Las banderas deben colocarse en la parte inferior de BoardConfig.mk, bajo el encabezado de #twrp

Para todos los dispositivos, debe indicar a TWRP qué tema usar. La bandera TW_THEME se usa en lugar de la bandera DEVICE_RESOLUTION anterior, lo que significa que TWRP ahora usa escalado para estirar cualquier tema.

Sus opciones son: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi y watch_mdpi. Para el modo vertical, lo más probable es que desee el tema hdpi de 720 × 1280 y superior, pero para los dispositivos horizontales, elija 1280 × 720 y superior.

Entonces, su sección de bandera de compilación + bandera de tema debería verse así:

#twrp

TW_THEME: = portrait_hdpi

Algunas marcas de compilación adicionales que querrá incluir en esta sección (créditos para XDforums):

  • RECOVERY_SDCARD_ON_DAT: = true (esto permite el manejo adecuado de los dispositivos / data / medion que tienen esta carpeta para almacenamiento (la mayoría de Honeycomb y los dispositivos que se enviaron originalmente con ICS como Galaxy Nexus), sin embargo, esta marca no es necesaria para este tipo de dispositivos. no defina esta marca y tampoco incluya ninguna referencia a / sdcard, / internal_sd, / internal_sdcard o / emmc en su fstab, entonces asumiremos automáticamente que el dispositivo está usando almacenamiento emulado).
  • BOARD_HAS_NO_REAL_SDCARD: = true - deshabilita cosas como la partición de la tarjeta SD y puede ahorrarle algo de espacio si TWRP no encaja en su patición de recuperación
  • TW_NO_BATT_PERCENT: = true: desactiva la visualización del porcentaje de batería para dispositivos que no lo admiten correctamente
  • TW_CUSTOM_POWER_BUTTON: = 107 - mapas personalizados del botón de encendido para la pantalla de bloqueo
  • TW_NO_REBOOT_BOOTLOADER: = true - elimina el botón de reinicio del cargador de arranque del menú de reinicio
  • TW_NO_REBOOT_RECOVERY: = true - elimina el botón de recuperación de reinicio del menú de reinicio
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - intercambia la asignación de toques entre los ejes X e Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - voltea los valores de la pantalla táctil del eje y
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - voltea los valores de la pantalla táctil del eje x
  • TWRP_EVENT_LOGGING: = true: habilita el registro de eventos táctiles para ayudar a depurar los problemas de la pantalla táctil (no deje esto activado para su publicación; llenará su archivo de registro muy rápidamente)
  • BOARD_HAS_FLIPPED_SCREEN: = true - voltea la pantalla al revés para las pantallas que se montaron al revés

Se pueden encontrar indicadores de compilación adicionales al hojear los archivos Android.mk en la fuente de recuperación, pero generalmente no se usan, por lo que no tiene sentido documentarlos.

Usando Recovery. Fstab

TWRP 2.5 y superior admite las nuevas funciones recovery.fstab, en particular la capacidad de ampliar las funciones de copia de seguridad / restauración de TWRP. No es necesario agregar indicadores fstab, porque la mayoría de las particiones se manejarán automáticamente.

TWRP solo admite fstabs v2 en la versión 3.2.0 y superior; en versiones anteriores de TWRP, deberá usar el formato anterior de fstab. Aquí hay un ejemplo de TWRP fstab para Galaxy S4:

Image
Image

Para maximizar la compatibilidad con su árbol de compilación particular, puede crear twrp.fstab y usar PRODUCT_COPY_FILES para colocar en> etc> twrp.fstab.

Cuando TWRP se inicia y encuentra twrp.fstab en el ramdisk, lo cambiará de nombre a> etc> recovery.fstab.bak - básicamente reemplaza el fstab de su dispositivo con el TWRP fstab, que extiende la compatibilidad.

Código de ejemplo:

PRODUCT_COPY_FILES + = dispositivo / lge / hammerhead / twrp.fstab: recuperación> raíz> etc> twrp.fstab

El fstab en TWRP puede contener algunas "banderas" para cada partición listada en el fstab.

Estos indicadores se agregan al final de la lista de particiones en el fstab, separados por espacios en blanco / espacios / pestañas. La bandera solo afectará a esa partición, pero no a otras. Las banderas están separadas por punto y coma. A continuación, se muestra un código de ejemplo:

Image
Image

Así que examinemos esto poco a poco. La bandera aquí dará el nombre para mostrar de "Tarjeta Micro SD". La bandera wipeingui hará que esta partición esté disponible para limpiar en el menú de limpieza avanzada. La bandera extraíble indica que esta partición no siempre está presente, lo que evitará que se muestren errores de montaje.

lista completa de banderas (créditos a TeamWin) :

  • retirable - indica que la partición puede no estar presente evitando que se muestren errores de montaje durante el arranque
  • almacenamiento- indica que la partición se puede usar como almacenamiento, lo que hace que la partición esté disponible como almacenamiento para respaldo, restauración, instalaciones zip, etc.
  • almacenamiento - solo se debe configurar una partición como almacenamiento de configuración, esta partición se utiliza como la ubicación para almacenar el archivo de configuración de TWRP
  • canbewped - indica que la partición puede ser borrada por el sistema back-end, pero puede que no esté listada en la GUI para que el usuario la borre
  • userrmrf - anula el tipo de formato normal de borrado y solo permite borrar la partición usando el comando rm -rf
  • backup = - debe ir precedido del signo igual, por lo que backup = 1 o backup = 0, 1 indica que la partición puede incluirse en la lista de copia de seguridad / restauración, mientras que 0 asegura que esta partición no aparecerá en la lista de copia de seguridad.
  • wipeingui - hace que la partición se muestre en la GUI para permitir que el usuario la seleccione para borrar en el menú de borrado avanzado
  • borrado durante el reinicio de fábrica - la partición se borrará durante el restablecimiento de fábrica
  • ignorar - blkid se usa para determinar qué sistema de archivos está usando TWRP, esta bandera hará que TWRP omita / ignore los resultados de blkid y use el sistema de archivos especificado en el fstab solamente
  • retener la versión - hace que TWRP retenga el archivo.layoutversion en dispositivos / daton como Sony XperiS, que usa / data / medibut todavía tiene una partición / sdcard separada
  • enlace simbólico= - hace que TWRP ejecute un comando de montaje adicional al montar la partición, generalmente se usa con / data / medito create / sdcard
  • monitor= - establece el nombre para mostrar de la partición para su listado en la GUI
  • nombre de almacenamiento= - establece el nombre de almacenamiento de la partición para su inclusión en la lista de almacenamiento de la GUI
  • nombre de respaldo= - establece el nombre de la copia de seguridad para la partición para su inclusión en la lista de copia de seguridad / restauración de la GUI length = - generalmente se usa para reservar espacio vacío al final de / datpartition para almacenar la clave de descifrado cuando está presente el cifrado completo del dispositivo de Android, no configurar esto puede conducir a la incapacidad de cifrar el dispositivo
  • copia de seguridad= - 1 o 0 para habilitar / deshabilitar, hace que TWRP encripte la copia de seguridad de esta partición si el usuario elige la encriptación (solo se aplica a las copias de seguridad de alquitrán, no a las imágenes)
  • userdataencryptbackup= - 1 o 0 para habilitar / deshabilitar, hace que TWRP encripte solo la porción de usuario de esta partición, ciertos subcompletos como / data / app no se encriptarían para ahorrar tiempo
  • subpartición de= - debe ir seguido del signo igual y la ruta de la partición de la que es subpartición. La subpartición se trata como "parte" de la partición principal, por lo que, por ejemplo, TWRP automáticamente hace / datadatsubpartición de / data. Esto significa que / datada no aparecerá en las listas de la GUI, pero / datada se borrará, respaldará, restaurará, montará y desmontará cada vez que se realicen esas operaciones en / data.

Un buen ejemplo del uso de subparticiones son las particiones 3x efs en el LG Optimus G:

Image
Image

Esto agrupa las 3 particiones en una sola entrada "EFS" en la GUI de TWRP, lo que permite realizar una copia de seguridad de las tres y restaurarlas juntas en una sola entrada.

Con TWRP 3.2.0 y superior, que usa V2 Fstab, no es necesario agregar ningún indicador de compilación. El soporte de V2 Fstab es automático. V2 Fstab también admite comodines (el símbolo *) que pueden ser útiles para tarjetas USB OTG y micro-SD con múltiples particiones. También puede seguir utilizando el formato Fstab V1, y es totalmente posible utilizar los tipos V1 y V2 en la misma Fstab.

Por ejemplo, aquí está la línea V1 Fstab con comodín para USB OTG:

Image
Image

Aquí está la línea V2 Fstab para el mismo dispositivo que logra el mismo resultado:

Image
Image

Además, puede incluir etc twrp.flags que usan el formato V1 Fstab, y se pueden usar para complementar la V2 Fstab con indicadores TWRP, particiones adicionales no incluidas en V2 Fstab o configuraciones anuladas en V2 Fstab.

Por ejemplo, el dispositivo Huawei puede tener este fstab V2 en etc recovery.fstab:

Image
Image

También puede tener estas banderas incluidas:

Image
Image

Entonces, aquí, las dos primeras líneas en TWRP. Flags agregarán las particiones Boot y Recovery, que no estaban presentes en la Fstab V2. Luego, la línea / cust en TWRP.flags indicará a TWRP que permita al usuario final hacer una copia de seguridad de la partición (cust) y darle un nombre para mostrar.

La partición / misc está presente en twrp.flags, y la partición / oeminfo le indica a TWRP que también permita realizar copias de seguridad y darle un nombre para mostrar.

Necesitamos / datline porque muchos dispositivos Huawei están encriptados, pero usan binarios especiales de Huawei; por lo tanto, usamos los binarios de Huawei para desencriptar el dispositivo automáticamente en el modo de recuperación. Así que aquí / datline le indicará a TWRP que use / dev / block / dm -0, y no / dev / block / bootdevice / by-name / userdata, que normalmente se usa para el montaje "adecuado".

Finalmente está / system_image, por lo que TWRP incluirá una opción para crear una imagen del sistema en los menús Backup y Restore.

El github oficial de TeamWin también debe contener los últimos ejemplos de árboles de dispositivos para dispositivos que tienen un puerto TWRP oficial. El github de TeamWin se puede encontrar AQUÍ.

Después de que Omni o CM se hayan sincronizado y haya configurado sus indicadores TWRP, debe compilar source./build/envsetup.sh

Y querrá "almorzar" el dispositivo, para poder hacer algo como "almorzar omni_hammerhead.eng".

Después de un almuerzo exitoso, la mayoría de los dispositivos usarán este comando:

Image
Image

Debe reemplazar # en –j # con el recuento de núcleos +1. Entonces, si tiene doble núcleo, es –j3, quadcore será –j5, etc. Reemplace el # con el número de núcleos +1, por lo que si tiene doble núcleo es -j3 y quadcore se convierte en -j5, etc.

Además, los dispositivos típicos de Samsung requerirán esto:

Image
Image

Esto se debe a que la mayoría de los dispositivos Samsung incluyen la recuperación como un disco externo en el arranque, en lugar de en una partición de recuperación separada (que utilizan la mayoría de los otros dispositivos).

A estas alturas, debería tener TWRP compilado para su dispositivo y, con suerte, funcionará en un entorno de emulador. Siempre debe probar primero su puerto TWRP en un entorno de emulador, para no correr el riesgo de estropear su dispositivo. Descargue este conjunto de archivos de configuración de dispositivos

Compile la imagen de recuperación utilizando esos archivos de dispositivo. En el SDK de Android, haga clic en Herramientas -> Administrar AVD. Haga clic en Nuevo. Configúrelo de la siguiente manera:

Image
Image

Luego haga clic en Aceptar.

Una vez que tenga su AVD y su imagen de recuperación, puede iniciar TWRP en el emulador navegando hasta su carpeta android-sdk / tools y ejecutando este comando:

Image
Image

Tenga en cuenta que ADB no funciona de inmediato. Aproximadamente de 10 a 15 segundos después de que TWRP termine de iniciarse, ADB se conectará. Comenzamos ADB viinit.rc, por lo que incluso si TWRP no se inicia debido a algún tipo de error de código que puede haber cometido, ADB aún debería funcionar. ¡Disfrutar!

Dispositivos TWRP y A / B (créditos a TeamWin):

Desde el punto de vista de TWRP, los dispositivos A / B no son muy diferentes de los dispositivos normales, pero los desarrolladores parecen tener vergüenza de trabajar en estos dispositivos. Voy a tratar de arrojar algo de luz sobre este tema y espero que esto sirva como guía para transferir TWRP a dispositivos A / B.

En primer lugar, comprendamos qué es un dispositivo A / B y en qué se diferencia. Los dispositivos A / B tienen duplicados de muchas particiones en el dispositivo. Un dispositivo A / B tiene 2x particiones del sistema, 2x particiones de arranque, 2x particiones de proveedor, 2x particiones de módem / firmware, etc. Solo se usa una ranura a la vez. Durante el arranque temprano, las primeras etapas del cargador de arranque leen una pequeña cantidad de datos denominados BCB o Bloque de control del cargador de arranque y deciden si arrancar las particiones o las particiones B. Cuando una actualización de OT está disponible, los datos de la ranura activa se copian de la ranura inactiva y se parchean / actualizan. Por ejemplo, si se encuentra actualmente en la ranura A, su dispositivo descargará la actualización y copiará la partición del sistema existente de la ranura y la parcheará / actualizará con las nuevas actualizaciones en la ranura B. Una vez que se complete la copia y actualización, el BCB se actualizado y el dispositivo se reinicia usando la ranura B. La próxima vez que haya una actualización disponible, la partición del sistema en la ranura B se copia en la ranura y se actualiza, el BCB se actualiza y reiniciamos en la ranura A. Al ver las particiones en el dispositivo, usted ' Veré algo como esto:

Image
Image

Tenga en cuenta las particiones de arranque dual, sistema y proveedor en la lista anterior, pero solo una partición de datos de usuario.

Si bien técnicamente no existe ningún requisito que yo sepa, todos los dispositivos A / B enviados hasta ahora no tienen una partición de recuperación separada. En cambio, la imagen de arranque contiene la recuperación en su disco RAM. Lo importante es saber que la imagen de arranque ahora también contiene la recuperación. Para completar, la partición del sistema es un sistema de archivos raíz completo. Durante el arranque, si se le dice al kernel que arranque para la recuperación, extraerá el disco RAM en la partición de arranque. Si el gestor de arranque no le dice al kernel que arranque para la recuperación, entonces el kernel montará la partición del sistema adecuada (o B) porque la partición del sistema es un sistema de archivos raíz completo. Esto significa que la partición del sistema en estos dispositivos está montada en / en lugar de en / system y la partición del sistema contiene todos los archivos que normalmente habrían estado en la subcarpeta / system y el ramdisk de la imagen de arranque.

Desde el punto de vista de TWRP, hay 3 cosas que debe hacer para un dispositivo A / B. Primero, necesitas configurar

Código:

Image
Image

Por último, una vez que ingrese a TWRP, probablemente querrá asegurarse de que bootctl hal-info responda correctamente sin errores. Por lo general, el binario bootctl requiere una biblioteca propietaria o incluso un par de servicios para funcionar correctamente. Si bootctl no funciona correctamente, tampoco podrá cambiar las ranuras dentro de TWRP correctamente.

Además de establecer

Código:

AB_OTA_UPDATER: = verdadero

es posible que también desee configurar:

Código:

BOARD_USES_RECOVERY_AS_BOOT: = verdadero

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = verdadero

Si pones

Código:

BOARD_USES_RECOVERY_AS_BOOT: = verdadero

entonces make recoveryimage ya no funcionará y en su lugar tendrás que hacer bootimage. No recomiendo configurar ninguno de estos indicadores para árboles de compilación solo de TWRP. Es probable que estos indicadores sean necesarios para los desarrolladores que creen ROM completas para dispositivos A / B.

Instalación / flasheo de TWRP en dispositivos A / B:

Dado que todos los dispositivos A / B conocidos no tienen una partición de recuperación separada, eventualmente tendrá que actualizar TWRP en la partición de arranque. En Pixel 1 y 2, usamos el arranque rápido para iniciar TWRP temporalmente sin flashear TWRP. Luego, estamos suministrando zip para permitir que los usuarios actualicen TWRP en ambas ranuras. Puede descargar una de estas cremalleras de nuestro sitio web y actualizarla según sea necesario para admitir sus dispositivos. Con el tiempo, agregaremos herramientas a TWRP para permitir a los usuarios actualizar las recuperaciones en estos dispositivos sin necesidad de usar cremalleras.

Recientemente, trabajé en el Razer Phone. Desafortunadamente, el teléfono Razer no es compatible con el arranque rápido. En su lugar, los usuarios deben determinar su ranura de inicio actualmente activa utilizando

Código:

Image
Image

para entrar en TWRP. Una vez en TWRP, pueden ir a la página de reinicio y volver a su ranura originalmente activa, hacer una copia de seguridad y luego instalar TWRP. El uso de la ranura inactiva permite a los usuarios obtener una copia de seguridad buena y sin modificaciones de su dispositivo antes de instalar TWRP.

Notas adicionales:

Si desea que TWRP sea oficialmente compatible con su dispositivo para que se pueda instalar automáticamente con la aplicación TWRP, y realmente desea hacerlo para que otros propietarios del mismo dispositivo puedan disfrutar del soporte oficial TWRP y es lo bueno para hacer, deberá enviar la siguiente información a TeamWin:

  1. Archivos de configuración del dispositivo para compilar TWRP desde la fuente para su dispositivo - no vuelva a empaquetar recovery.img a mano, necesitan compilarlo desde la fuente.
  2. Después de que TeamWin cree una copia de TWRP, se la enviarán para su validación; una vez que la haya validado, TeamWin creará una imagen funcional para su dispositivo y la agregará a la aplicación oficial de TWRP.

Popular por tema