Si se pasa por Cómo funciona Magisk y Cómo rootear manualmente un teléfono sería fácil que se diera cuenta de la imposibilidad de lograr lo que busca.
init
es el primer proceso iniciado por el kernel, que en su etapa inicial establece SELinux enforcing
(si no es ya enforcing
). Antes de que eso ocurra, necesitamos modificar la política de SELinux para que no restrinja el demonio Root ( magiskd
) de la ejecución. También init.rc
necesita ser parcheado para inyectar magiskd
servicio.
Una opción sencilla es parchear /sepolicy
y modificar /init.rc
al rootear el dispositivo y guardar los archivos en el dispositivo. Pero en system-as-root
dispositivos en los que se encuentran ambos archivos system.img
(y posiblemente vendor.img
), no en boot.img
. Así que modificarlos rompería " sin sistema "y otras cosas relacionadas, en particular dm-verity
y OTAs.
Otra opción es ejecutar un proceso incluso antes de init
que parchea la política de SELinux y cambia init.rc
sobre la marcha. Y la manera más fácil de conseguirlo es sustituir el original init
archivo con Magisk init
para que el núcleo ejecute este último. Sin embargo, en los dispositivos SAR init
también está en system.img
así que no podemos reemplazarlo. Pero siempre podemos arrancar en modo recovery que sí tiene un ramdisk
donde Magisk's init
puede colocarse y ejecutarse antes que cualquier otro proceso. En A/B
Recuperación de dispositivos SAR ramdisk
está en boot.img
Así, Magisk siempre arranca en recuperación forzando al kernel a ignorar skip_initramfs
Parámetro cmdline recibido del gestor de arranque.
¿Hay alguna forma de conseguir el Root en un reinicio normal?
En dispositivos SAR no A/B (como el suyo) no hay ramdisk
en boot.img
por lo que la única opción para mantener el enfoque sin sistema es colocar Magisk init
en recuperación ramdisk
en recovery
partición, y arrancar siempre en modo de recuperación . A partir de ahí system.img
está montado en /system_root
por Magisk init
El contenido de ramdisk
se copian en /
limpiando todo lo existente anteriormente, se añaden / modifican archivos en rootfs /
, /system_root/system
está montado en /system
y finalmente [/system]/init
se ejecuta para el arranque normal.
Sin embargo las cosas han cambiado con Android 10, ahora system.img
está montado en /
pero los archivos a añadir / modificar como /init.rc
y /sbin
se superponen con los montajes de los enlaces como tuiteó por el desarrollador de Magisk.
1 votos
forum.xda-developers.com/t/