init
analysera init.rc
et monter les partitions restantes en fonction de fstab
fichier.
Toutes les partitions dans fstab
sont montés par init
au démarrage. Exemptions incluent les partitions gérées par vold
et ceux qui ne sont destinés qu'au mode de récupération, aux partitions brutes (non montables) et à la partition racine.
Il y a quelque chose dans fstab
que je ne comprends pas :
/dev/block/by-name/system / ext4 ro,barrier=1
Ce fstab
est incomplète car elle ne comprend pas fs_mgr
drapeaux selon format standard . L'entrée complète devrait être comme :
/dev/block/by-name/system / ext4 ro,barrier=1 wait,recoveryonly
Sur les appareils Treble (Android 8 et 9) "les dispositifs peuvent spécifier Entrées fstab pour les partitions montées précocement en utilisant des superpositions d'arbres de dispositifs" . Une explication simple peut être trouvée ici . Cependant "Dans Android 10 et plus, les appareils doivent spécifier fstab
pour les partitions montées en avance en utilisant un fstab
fichier" y "doit placer le fstab
dans le fichier ramdisk
et dans le vendor
partition" .
La DTB est généralement ajoutée sous forme de blob au binaire du noyau et à la base de données. fstab
sont exposés dans procfs
:
~# cat /proc/device-tree/firmware/android/fstab/*/name
system
vendor
Ainsi, sur les appareils où fstab
entrées pour les partitions system
, vendor
y odm
sont dans le Device Tree Blob, init
ne prend aucune action pour ces partitions sur mount_all
parce que fs_mgr
Les drapeaux comprennent recoveryonly
. Vous pouvez commenter ou supprimer l'entrée et l'appareil devrait démarrer normalement.