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.