Magisk ahora es compatible con system-as-root y las particiones lógicas de Google Pixel 3 / Pixel 3a en Android Q

Google lanzó la primera versión beta de Android Q en marzo, y el acceso a la raíz a través de Magisk rápidamente estuvo disponible para Google Pixel y Google Pixel 2. Sin embargo, Google Pixel 3 no pudo ser rooteado en Android Q porque el desarrollador de Magisk, desarrollador reconocido topjohnwu, necesitaba descubrir cómo trabajar con el nuevo diseño de particiones lógicas. Con su nueva pasantía en Apple, topjohnwu ha tenido menos tiempo para trabajar en Magisk, pero eso no le ha impedido tener dos grandes avances en el desarrollo. En la última versión de Canary, Magisk ahora admite el sistema como root, lo que dificulta que las aplicaciones detecten el acceso root, y también admite dispositivos con particiones lógicas como las series Pixel 3 y Pixel 3a XL en Android Q.

Foros de Google Pixel 3 Foros de Google Pixel 3 XL

Foros de Google Pixel 3a Foros de Google Pixel 3a XL

Compatibilidad de partición lógica de Google Pixel 3 y Pixel 3a en Android Q

Para ayudar a los desarrolladores a probar las versiones de Android de AOSP en dispositivos existentes, Google lanza imágenes del sistema genérico (GSI) que pueden iniciarse en dispositivos compatibles con Project Treble (cualquier dispositivo que se lanzó con Android 9 Pie o posterior). La instalación de un GSI requiere desbloquear el gestor de arranque, lo que puede no ser posible en todos los dispositivos, y mostrar una imagen del sistema mediante fastboot después de borrar los datos del usuario. En Android Q, Google presenta una nueva característica llamada Actualizaciones dinámicas del sistema que permite a los desarrolladores iniciar un GSI sin desbloquear el gestor de arranque o borrar datos. Para admitir las actualizaciones dinámicas del sistema, un dispositivo debe tener particiones lógicas que puedan redimensionarse dinámicamente para hacer espacio para la instalación de GSI. Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a y Google Pixel 3a XL tienen particiones lógicas en las versiones beta de Android Q, aunque solo Pixel 3 y Pixel 3 XL admiten DSU. Sin embargo, es debido a este cambio radical en la estructura de partición que Magisk no estaba funcionando.

Cuando se determina topjohnwu, nada le impide obtener acceso a la raíz. Justo el otro día, anunció que había rooteado con éxito su Pixel 3 XL en Android Q beta 4. Su descripción de confirmación aquí explica los detalles técnicos de cómo logró el soporte de partición lógica, pero lo importante es que Magisk ahora se puede instalar en dispositivos con o sin particiones lógicas.

//twitter.com/topjohnwu/status/1144832417946984448

Soporte de sistema como raíz

Para dispositivos con particiones dobles A / B, la partición del sistema se monta como el directorio raíz (/), pero los dispositivos sin particiones dobles A / B tienen la partición del sistema montada en / system. Esto hace que las OTA solo del sistema sean imposibles en dispositivos que no sean A / B porque los archivos en el disco ram, que necesitan actualización, se encuentran en la partición de arranque. Es por eso que, para hacer posibles las OTA solo del sistema en Android Pie y superiores, Google exige que todos los dispositivos que se inicien con Android Pie admitan el diseño de partición del sistema como raíz. En el diseño del sistema como raíz, la imagen del disco ram se fusiona con la imagen del sistema, que se monta como rootfs.

Desde que Google introdujo el sistema como raíz, la solución para los dispositivos raíz fue revertir el sistema como raíz al diseño antiguo de la partición "initramfs rootfs". Eso funciona bien para Android 7.1 a Android 9 Pie, ya que Android tiene soporte heredado para este diseño anterior, pero Android Q elimina completamente el soporte ya que el sistema como raíz ahora es obligatorio para todos los dispositivos, incluso para aquellos dispositivos que se actualizan a Android Q. Las versiones anteriores de Magisk todavía funcionaban gracias a algunos "hacks realmente desagradables", pero topjohnwu no estaba satisfecho con esa solución, por lo que para admitir correctamente el sistema como raíz, introdujo "MagiskInit".

Un buen efecto secundario de soportar adecuadamente el diseño de la partición del sistema como raíz es que se ha eliminado una posible vía de detección de raíz. Como topjohnwu me explicó gentilmente, el viejo método "revertir a initramfs rootfs" era fácil de detectar para las aplicaciones porque Magisk montaba el sistema en '/ system_root' y vinculaba el montaje '/ system_root / system' a '/ system'. Todo lo que una aplicación debería hacer para detectar la presencia de root es verificar si '/ system_root' existe o si '/' es 'rootfs'. Sin embargo, no está claro si alguna aplicación realmente aprovechó esto para detectar la raíz. Aún así, es mejor prevenir que curar.

Cambios misceláneos

Android Q introduce soporte para algo llamado "grupo de blastula" para el ciclo de vida de la aplicación de Android. MagiskHide no pudo detectar aplicaciones para ocultar el acceso de root si la nueva función "pool de procesos" estaba habilitada. La última versión de Canary ahora es compatible con esta función. Según topjohnwu: "Para soportar adecuadamente la nueva optimización del conjunto de blastula introducida en Q, había reescrito una buena parte de la lógica de seguimiento para el monitoreo de procesos".


Si tienes un Pixel 3, Pixel 3 XL, Pixel 3a o Pixel 3a XL en la versión beta de Android Q, prueba la última versión de Magisk Canary y avísanos si logras rootear tu dispositivo.

Magisk Canary Channel