37 votos

¿Cuál es el equivalente en Android de /etc/fstab?

A veces me gustaría que no se hubieran metido tanto con Linux. Sé que hay un /etc/fstab en alguna parte, pero ¿dónde?

Me gustaría montar algunas particiones con sistemas de archivos alternativos (porque no me gusta FAT32).

23voto

Flow Puntos 14132

No pienses en Android como una distribución de Linux muy modificada. Porque no lo es. Lo casi único que Android comparte con una distribución Linux es el núcleo. E incluso este componente está modificado. También otros componentes básicos, como la libc, difieren.

Android no tiene /etc/fstab

No necesitas /etc/fstab para montar una partición. Pero no hay IIRC mount tampoco. dev_mount debería funcionar (Root required). Para responder a sus preguntas título: Todo el montaje del sistema de arranque se realiza con el /etc/vold.fstab script de ayuda.

0 votos

Supongo que soy un usuario de maemo deseoso entonces de verdad. Sí, supongo que está bastante lejos de linux. ¡Gracias por el apunte a vold.fstab !

4 votos

Vold.fstab sólo tiene cosas de la tarjeta sd en mi nexus one

11voto

Me doy cuenta de que este es un tema viejo, pero algunas de las respuestas aquí en realidad obstaculizado mis esfuerzos para aprender acerca de fstab y Android porque dan a entender que la fstab situación en Android es extremadamente diferente a la de otras distribuciones Linux. Por lo que yo sé, no lo es.

Sin embargo, la lectura de las diferentes respuestas aquí me hizo preguntarme: ¿qué fstab -el archivo o archivos equivalentes están en mi ¿dispositivo?

Dando un paso atrás por un momento, observando que " Android no tiene /etc/fstab "probablemente no ayude a la OP, puesto que ya debe saberlo. Si esto no fuera cierto, su pregunta (preguntando cuál es el equivalente en Android de /etc/fstab es) no tendría ningún sentido. Por otro lado, sabemos que @Flow no intentaba dar a entender que no existía un equivalente en Android, ya que mencionó uno de ellos, un "script de ayuda" llamado /etc/vold.fstab .

Con todo, creo que lo que se desprende del post de @Flow es que en algunos sistemas, hay un archivo (posiblemente un "script de ayuda" - no puedo verificarlo en mi teléfono) llamado /etc/vold.fstab y en esos sistemas, este archivo es el equivalente más cercano a /etc/fstab .

Volviendo a preguntarme sobre mi propio dispositivo, voy a publicar mis conclusiones aquí por varias razones, a pesar de la edad del OP:

  • En primer lugar, quiero documentar todos de la fstab -archivos de estilo que puedo encontrar en mi teléfono, un Pixel 2XL.
  • En segundo lugar, quiero mostrar a la gente, especialmente a los novatos en Linux/Android, que es bastante fácil encontrar estos archivos en tu propio dispositivo ("enséñales a pescar").
  • En tercer lugar, me resulta útil escribir mis hallazgos (ventaja: siempre podré volver a encontrarlos aquí, en StackExchange).
  • Por último, Google sigue publicando esta página, así que existe la posibilidad de que esto ayude a alguien más que a mí.

Así que permítanme intentar resumir todo lo que he aprendido de todo esto:

Android, o al menos sus variantes a las que tengo acceso, sí hace uso de fstab -archivos de estilo. Sin embargo, el nombre exacto, la ubicación y la función de estos archivos varían según la distribución, es decir, según la versión de Android y el dispositivo, y también según la ROM si utilizas una ROM personalizada.

Para encontrar estos archivos en su sistema, abra un emulador de terminal como termux o adb shell y ejecuta algo como esto: find / -type f -iname '*fstab*' 2>/dev/null . La redirección del fichero 2 ( stderr ) a /dev/null hará que su salida sea mucho más limpia ya que podrá ignorar la avalancha de mensajes de error que obtendrá de find incluso si eres root .

En mi sistema (un Pixel 2XL, nombre en clave "taimen"), he encontrado tres archivos candidatos:

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

Los dos primeros son archivos separados en el sentido de que ninguno es un enlace duro o simbólico al otro, pero si usted diff comprobará que son idénticos. Mirando un poco más profundo, si ejecuta stat en los archivos verás que tienen los mismos valores de Device e 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

stat informa de ambos nombres de archivo como archivos normales con un solo enlace cada uno (por lo que no hay enlaces duros ni simbólicos implicados). No soy un experto en sistemas de ficheros pero lo que ha ocurrido aquí es que el mismo dispositivo ha sido montado dos veces. Puedes ver esto en la salida del siguiente comando, donde las únicas diferencias entre las dos líneas de salida son los puntos de montaje (la parte inmediatamente después de "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)

El tercer archivo sólo es visible para mí si inicio sesión como Root, así que si tienes un dispositivo idéntico al mío, aún no encontrarás, o no tendrás acceso a este archivo a menos que tu teléfono esté rooteado. Ese archivo tiene que ver con un servicio llamado Open Mobile Alliance Device Management, pero es un servicio del que sé muy poco, así que me limitaré a mencionarlo aquí, y puedes buscar en Google para obtener más detalles al respecto si lo deseas.

8voto

atc Puntos 1553

El archivo fstab está en / .

Se llama /fstab.$systemname.rc donde $systemname se basa en la propiedad de la huella dactilar del terminal, ya sea identificada como categoría del chipset o del propio terminal.

3 votos

Eso depende y varía de una ROM a otra. En AOSP es /etc/vold.fstab . :)

0 votos

Y si bien es cierto para CM10 -- Tengo /fstab.p1c -- se sobrescribe en el reinicio por algo que aún no he descubierto.

3 votos

Según source.Android.com/devices/storage/config.html , en Android 4.2.2 y anteriores es vold.fstab y en 4.3 y posteriores es /fstab.<device> .

6voto

Mark Mikofski Puntos 151

Puedes volver a montar tu almacenamiento externo para que sea ejecutable ejecutando

mount -o remount, rw /mnt/sdcard

esto eliminará las banderas noexec, nosuid y nodev, pero seguirá siendo vfat fs. Puede hacer enlaces a este fs pero no desde dentro. El remontaje no sobrevive a un reinicio, porque se leerá el archivo vold.fstab y se volverán a montar en el reinicio con las banderas noexec.

Si reformateas cualquiera de tus dispositivos de almacenamiento externo a otro formato que no sea vfat, no se volverán a montar al reiniciar, y las aplicaciones que hayas movido a cualquier dispositivo de almacenamiento externo no se podrán utilizar. Si no tiene intención de utilizar el almacenamiento externo para aplicaciones, puede desmontarlo y utilizar busybox mke2fs DEVICE para hacerlo ext2. Utilice busybox newfs_msdos DEVICE para devolverlo a vfat y hacerlo utilizable de nuevo.

Nota busybox mkfs.vfat está roto, obtendrá algo como

lseek: Valor demasiado grande para el tipo de datos definido

así que no pierdas el tiempo. Todo esto supone que usted está rooteado, y tienen un trabajo busybox binario.

5voto

Matthew Read Puntos 35808

Veo información contradictoria. Un recurso dice que es hardcoded por lo que no es algo que pueda cambiar el usuario:

Los programas init específicos de Android se encuentran en device/system/init. Añade mensajes LOG para ayudarte a depurar posibles problemas con la macro LOG definida en device/system/init/init.c.

El programa init monta directamente todos los sistemas de archivos y dispositivos utilizando nombres de archivos codificados o nombres de dispositivos generados mediante el sondeo del sistema de archivos sysfs (eliminando así la necesidad de un archivo /etc/fstab en Android).

En otros lugares /etc/vold.fstab y /etc/vold.conf se mencionan. Los tengo en mi dispositivo bajo CM 7.1 pero no estoy seguro de cómo se utilizan.

3 votos

En cierto modo está codificado, pero en cierto modo no. Hay un init.rc que vive en su ramdisk, así que usted puede tirar de su boot.img, extraer su ramdisk, y luego modificar la init.rc y volver a empaquetarlo (brevemente discutido aquí y Fuente de Tiamat es un buen ejemplo de configuración de puntos de montaje en init.rc )

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