1 votos

¿Cómo se monta system-as-root en Android 9?

En Android 9, system.img consta de system y ramdisk. Así que el kernel montará system.img directamente e implementará el programa init. Luego, init analizará el archivo init.rc y montará las particiones restantes según el archivo fstab. Sin embargo, hay algo en el archivo fstab que no entiendo:

/dev/block/by-name/system      /      ext4    ro,barrier=1

Aquí, system se monta como root en el archivo fstab. Pensé que system.img se montaba antes de ejecutar el programa init, pero aquí, system.img se vuelve a montar. ¿Alguien puede explicarme esto?

0voto

Jack Wade Puntos 231

init analizará el archivo init.rc y montará las particiones restantes basándose en el archivo fstab.

No todas las particiones en fstab son montadas por init al arrancar. Las excepciones incluyen particiones gestionadas por vold y aquellas solo destinadas para el modo de recuperación, particiones en bruto (no montables) y la partición root.

Hay algo en el archivo fstab que no entiendo :

/dev/block/by-name/system      /      ext4    ro,barrier=1

Esa entrada en fstab está incompleta porque no incluye las banderas de fs_mgr según el formato estándar. La entrada completa debería ser así:

/dev/block/by-name/system    /    ext4    ro,barrier=1    wait,recoveryonly

En dispositivos Treble (Android 8 y 9) “los dispositivos pueden especificar entradas fstab para particiones montadas tempranamente usando sobrecargas de árbol de dispositivos”. Una explicación sencilla se puede encontrar aquí. Sin embargo, “En Android 10 y superior, los dispositivos deben especificar entradas fstab para particiones montadas tempranamente usando un archivo fstab y “deben colocar el archivo fstab en el ramdisk y en la partición vendor.

DTB generalmente se adjunta como un blob al binario del kernel y las entradas en fstab se exponen en procfs:

~# cat /proc/device-tree/firmware/android/fstab/*/name
system
vendor

Entonces, en dispositivos donde las entradas en fstab para las particiones system, vendor y odm están en el Blob del Árbol de Dispositivos, init no realiza ninguna acción para estas particiones en mount_all porque las banderas de fs_mgr incluyen recoveryonly. Puedes comentar o eliminar la entrada y el dispositivo debería arrancar normalmente.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X