Quel est l'équivalent Android de / etc / fstab?

26

Parfois, je souhaite vraiment qu'ils ne se soient pas autant amusés avec Linux! Je sais qu'il /etc/fstaby en a quelque part, mais où?

Je voudrais monter quelques partitions avec des systèmes de fichiers alternatifs (parce que je n'aime pas FAT32).

barrymac
la source

Réponses:

19

Ne pensez pas à Android comme à une distribution Linux fortement modifiée. Parce que non. La seule chose qu'Android partage avec une distribution Linux est le noyau. Et même ce composant est modifié. D'autres composants de base, comme la libc, diffèrent également.

Android n'a pas /etc/fstab

Vous n'avez pas besoin /etc/fstabde monter une partition. Mais il n'y a pas non plus de mountcommandement de l' IIRC . dev_mountdevrait fonctionner (root requis). Pour répondre au titre de vos questions: Tout le montage du système de démarrage se fait avec le /etc/vold.fstabscript d'aide.

Couler
la source
Je suppose que je suis un utilisateur maemo désireux alors vraiment. Oui, c'est assez loin de Linux, je suppose. Merci pour le pointeur vers vold.fstab!
barrymac
3
Vold.fstab n'a que des trucs de carte SD sur mon Nexus One
GCB
7

Le fichier fstab est dans /.

Il s'appelle /fstab.$systemname.rc$systemnameest basé sur la propriété d'empreinte digitale du combiné, soit identifié comme catégorie de chipset ou combiné lui-même.

Phil Carswell
la source
3
Cela dépend et varie d'une ROM à l'autre. Dans l'AOSP, son /etc/vold.fstab. :)
t0mm13b
et même si c'est vrai pour CM10 - j'ai /fstab.p1c - il est écrasé au redémarrage par quelque chose que je n'ai pas encore compris.
jcomeau_ictx
3
Selon source.android.com/devices/storage/config.html , dans Android 4.2.2 et versions antérieures, c'est vold.fstab, et dans 4.3 et versions ultérieures, c'est /fstab.<device>.
LarsH
1
sur mon Moto E, ce fichier est sur le système de fichiers monté en lecture seule :(
Anton Krosnev
5

Je vois des informations contradictoires. Une ressource dit qu'elle est codée en dur , donc ce n'est pas quelque chose que vous pouvez changer côté utilisateur:

Les programmes d'initialisation spécifiques à Android se trouvent dans device / system / init. Ajoutez des messages LOG pour vous aider à déboguer les problèmes potentiels avec la macro LOG définie dans device / system / init / init.c.

Le programme init monte directement tous les systèmes de fichiers et périphériques à l'aide de noms de fichiers codés en dur ou de noms de périphériques générés par la vérification du système de fichiers sysfs (éliminant ainsi la nécessité d'un fichier / etc / fstab dans Android).

Ailleurs /etc/vold.fstabet /etc/vold.confsont mentionnés. Je les ai sur mon appareil sous CM 7.1 mais je ne sais pas comment ils sont utilisés.

Matthew Read
la source
3
Il est en quelque sorte codé en dur, mais ce n'est pas le cas. Il y a un init.rcfichier qui vit dans votre ramdisk, vous pouvez donc extraire votre boot.img, extraire votre ramdisk, puis le modifier init.rcet le remballer à nouveau (brièvement discuté ici , et la source de Tiamat est un bon exemple de définition de points de montage init.rc)
eldarerathis
5

Vous pouvez remonter votre stockage externe pour qu'il soit exécutable en exécutant

mount -o remount, rw /mnt/sdcard

cela supprimera les indicateurs noexec, nosuid et nodev, mais ce sera toujours vfat fs. Vous pouvez créer des liens vers ce fichier mais pas de l'intérieur. Le remontage ne survit pas à un redémarrage, car le fichier vold.fstab sera lu et ils seront remontés au redémarrage avec les drapeaux noexec.

Si vous reformatez l'un de vos stockages externes en autre chose que vfat, ils ne seront pas remontés au redémarrage et les applications que vous avez déplacées vers un stockage externe ne seront pas utilisables. Si vous n'avez pas l'intention d'utiliser le stockage externe pour les applications, vous pouvez démonter votre stockage externe et l'utiliser busybox mke2fs DEVICEpour le rendre ext2. Utilisez busybox newfs_msdos DEVICEpour le retourner à vfat et le rendre à nouveau utilisable.

La note busybox mkfs.vfatest cassée, vous obtiendrez quelque chose comme

lseek: valeur trop grande pour le type de données défini

alors ne perdez pas votre temps. Tout cela suppose que vous êtes enraciné et que votre binaire busybox fonctionne.

Mark Mikofski
la source
2

Je me rends compte que c'est un vieux sujet, mais certaines des réponses ici ont en fait gêné mes efforts pour en savoir plus sur fstabAndroid, car elles impliquent si fortement que la fstabsituation dans Android est extrêmement différente des autres distributions Linux. D'après ce que je peux dire, ce n'est pas le cas.

Cependant, la lecture de différentes réponses ici m'a fait me demander: quel fstabou plusieurs fichiers équivalents se trouvent sur mon appareil?

Prendre du recul pendant un moment, notant que " Android n'a pas / etc / fstab " n'est probablement pas utile à l'OP car ils doivent déjà le savoir. Si ce n'était pas vrai, leur question (demander quel est l'équivalent d'Android /etc/fstab) n'aurait aucun sens. D'un autre côté, nous savons que @Flow n'essayait pas d'impliquer qu'il n'y avait pas d'équivalent sur Android, car ils en ont mentionné un, un "script d'aide" nommé /etc/vold.fstab.

Dans l'ensemble, je pense que la leçon à retenir de la publication de @ Flow est que sur certains systèmes, il y a un fichier (peut-être un "script d'aide" - je ne peux pas le vérifier sur mon téléphone) appelé /etc/vold.fstab, et sur ces systèmes, ce fichier est l'équivalent le plus proche de /etc/fstab.

Pour en revenir à me poser des questions sur mon propre appareil, je vais poster mes résultats ici pour plusieurs raisons, malgré l'âge du PO:

  • Tout d'abord, je veux documenter tous les fstabfichiers de style que je peux trouver sur mon téléphone, un Pixel 2XL.
  • Deuxièmement, je veux montrer aux gens, en particulier aux débutants Linux / Android, qu'il est assez facile de trouver ces fichiers sur votre propre appareil ("leur apprendre à pêcher").
  • Troisièmement, il est utile pour moi d'écrire mes résultats (bonus: je pourrai toujours le retrouver ici sur StackExchange!).
  • Enfin, Google diffuse toujours cette page, il est donc possible que cela aide quelqu'un d'autre que moi.

Alors laissez-moi essayer de résumer tout ce que j'ai appris de tout cela:

Android, ou du moins ses variantes auxquelles j'ai accès, utilise des fstabfichiers -style. Cependant, le nom, l'emplacement et la fonction exacts de ces fichiers varient selon la distribution, c'est-à-dire selon la version et l'appareil Android, et également selon la ROM si vous utilisez une ROM personnalisée.

Pour trouver ces fichiers sur votre système, ouvrez un émulateur de terminal comme tmuxou adb shellet exécuter quelque chose comme ceci: find / -type f -iname '*fstab*' 2>/dev/null. La redirection du fichier 2 ( stderr) /dev/nullrendra votre sortie beaucoup plus propre car vous pourrez ignorer l'assaut des messages d'erreur que vous obtiendrez find, même si vous l'êtes root.

Sur mon système (un Pixel 2XL, nom de code "taimen"), j'ai trouvé trois fichiers candidats:

taimen:/ # find / -type f -iname '*fstab*' 2>/dev/null

/sbin/.core/mirror/vendor/etc/fstab.taimen
/vendor/etc/fstab.taimen
/data/data/com.android.omadm.service/files/dm/dmt_data/fstab

Les deux premiers sont des fichiers séparés en ce que ni l'un ni l'autre ne sont un lien dur ou symbolique vers l'autre, mais si vous diffles trouverez, ils seront identiques. En regardant un peu plus loin, si vous exécutez statsur les fichiers, vous verrez qu'ils ont les mêmes valeurs de périphérique et d'inode:

taimen:/ # stat /sbin/.core/mirror/vendor/etc/fstab.taimen /vendor/etc/fstab.taimen

  File: `/sbin/.core/mirror/vendor/etc/fstab.taimen'
  Size: 1326     Blocks: 16      IO Blocks: 512 regular file
Device: fc00h/64512d     Inode: 925      Links: 1
Access: (644/-rw-r--r--)        Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000

  File: `/vendor/etc/fstab.taimen'
  Size: 1326     Blocks: 16      IO Blocks: 512 regular file
Device: fc00h/64512d     Inode: 925      Links: 1
Access: (644/-rw-r--r--)        Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000

statsignale ces deux noms de fichiers comme des fichiers normaux avec un seul lien chacun (donc aucun lien matériel ou symbolique n'est impliqué). Je ne suis pas un expert du système de fichiers, mais ce qui s'est passé ici, c'est que le même périphérique a été monté deux fois. Vous pouvez le voir dans la sortie de la commande suivante, où les seules différences entre les deux lignes de sortie dans sont les points de montage (la partie immédiatement après "on"):

taimen:/ $ mount | grep vendor

/dev/block/dm-0 on /vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)
/dev/block/dm-0 on /sbin/.core/mirror/vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)

Le troisième fichier n'est visible que si je me connecte en tant que root, donc si vous avez un appareil identique au mien, vous ne trouverez toujours pas ce fichier, ou n'y aurez pas accès, à moins que votre téléphone ne soit rooté. Ce fichier a à voir avec un service appelé Open Mobile Alliance Device Management, mais c'est un service que je connais très peu, donc je vais le mentionner ici, et vous pouvez Google pour plus de détails à ce sujet si vous le souhaitez.

skye --- capitaine
la source
1
Ancien sujet en effet, et depuis lors, les choses ont beaucoup changé, dans la mesure où la plupart des appareils pour lesquels j'ai construit des ROMs auraient un fichier fstab autonome dans /system/etcou /vendor/etc. Merci d'avoir apporté de nouvelles informations.
Andy Yan
Trouvé ce message en recherchant la raison pour laquelle le montage renvoie l'erreur mount: bad /etc/fstab: No such file or directory. Avez-vous des idées ou une solution pour cela?
Michael