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

26

¡A veces desearía que no se hubieran metido tanto con Linux! Sé que hay un lugar /etc/fstaben alguna parte, pero ¿dónde?

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

barrymac
fuente

Respuestas:

19

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

Android no tiene /etc/fstab

No necesita /etc/fstabmontar una partición. Pero el IIRC tampoco tiene mountcomando. dev_mountdebería funcionar (se requiere root). Para responder el título de sus preguntas: Todo el montaje del sistema de inicio se realiza con el /etc/vold.fstabscript de ayuda.

Fluir
fuente
Supongo que soy un usuario maemo deseoso entonces realmente. Sí, está bastante lejos de Linux, supongo. Gracias por el puntero a vold.fstab!
barrymac
3
Vold.fstab solo tiene material de tarjeta SD en mi nexus one
gcb
7

El archivo fstab está adentro /.

Se llama /fstab.$systemname.rcdonde $systemnamese basa en la propiedad de huella digital del teléfono, ya sea identificada como categoría de conjunto de chips o el propio teléfono.

Phil Carswell
fuente
3
Eso depende y varía de ROM a ROM. En AOSP es /etc/vold.fstab. :)
t0mm13b
y si bien es cierto para CM10, tengo /fstab.p1c, se sobrescribe al reiniciar por algo que aún no he descubierto.
jcomeau_ictx
3
De acuerdo con source.android.com/devices/storage/config.html , en Android 4.2.2 y versiones anteriores vold.fstab, y en 4.3 y versiones posteriores /fstab.<device>.
LarsH
1
en mi Moto E, este archivo está en el sistema de archivos montado de solo lectura :(
Anton Krosnev
5

Estoy viendo información contradictoria. Un recurso dice que está codificado , por lo que no es algo que pueda cambiar del lado del usuario:

Los programas init específicos de Android se encuentran en dispositivo / sistema / init. Agregue mensajes LOG para ayudarlo 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 al sondear el sistema de archivos sysfs (eliminando así la necesidad de un archivo / etc / fstab en Android).

En otros lugares /etc/vold.fstaby /etc/vold.confse mencionan. Los tengo en mi dispositivo bajo CM 7.1 pero no estoy seguro de cómo se usan.

Matthew Read
fuente
3
Es un poco codificado, pero no lo es. Hay un init.rcarchivo que vive en su ramdisk, por lo que puede extraer su boot.img, extraer su ramdisk y luego modificarlo init.rcy volver a empaquetarlo (discutido brevemente aquí , y la fuente de Tiamat es un buen ejemplo de establecer puntos de montaje init.rc)
eldarerathis
5

Puede volver a montar su almacenamiento externo para que sea ejecutable ejecutando

mount -o remount, rw /mnt/sdcard

esto eliminará los indicadores noexec, nosuid y nodev, pero seguirá siendo vfat fs. Puede hacer enlaces a esta fs pero no desde dentro. El remontaje no sobrevive al reinicio, porque el archivo vold.fstab se leerá y se remontará al reiniciar con los indicadores noexec.

Si vuelve a formatear cualquiera de su almacenamiento externo a otra cosa que no sea vfat, no se volverán a montar al reiniciar, y las aplicaciones que haya movido a cualquier almacenamiento externo no serán utilizables. Si no tiene la intención de usar almacenamiento externo para aplicaciones, puede desmontar su almacenamiento externo y usarlo busybox mke2fs DEVICEpara hacerlo ext2. Use busybox newfs_msdos DEVICEpara devolverlo a vfat y volver a usarlo.

La nota busybox mkfs.vfatestá rota, obtendrás algo como

lseek: valor demasiado grande para el tipo de datos definido

así que no pierdas tu tiempo. Todo esto supone que está rooteado y que tiene un binario busybox que funciona.

Mark Mikofski
fuente
2

Me doy cuenta de que este es un tema antiguo, pero algunas de las respuestas aquí realmente obstaculizaron mis esfuerzos para aprender sobre fstabAndroid, ya que implican fuertemente que la fstabsituación en Android es extremadamente diferente de otras distribuciones de Linux. Por lo que puedo decir, no lo es.

Sin embargo, leer diferentes respuestas aquí me hizo preguntarme: ¿qué fstabarchivo o archivos equivalentes hay en mi dispositivo?

Retrocediendo por un momento, notando que " Android no tiene / etc / fstab " probablemente no sea útil para el OP ya que ya deben haberlo sabido. Si esto no fuera cierto, su pregunta (preguntar cuál es el equivalente de Android /etc/fstab) no tendría ningún sentido. Por otro lado, sabemos que @Flow no estaba tratando de dar a entender que no había un equivalente en Android, ya que mencionaron uno de ellos, un "script de ayuda" llamado /etc/vold.fstab.

En general, creo que la conclusión de la publicación de @ Flow es que en algunos sistemas, hay un archivo (posiblemente un "script de ayuda", no puedo verificar eso 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 acerca de mi propio dispositivo, voy a publicar mis hallazgos aquí por varias razones, a pesar de la antigüedad del OP:

  • Primero, quiero documentar todos los fstabarchivos de estilo que puedo encontrar en mi teléfono, un Pixel 2XL.
  • En segundo lugar, quiero mostrarle a la gente, especialmente a los novatos de Linux / Android, que es bastante fácil encontrar estos archivos en su propio dispositivo ("enséñeles a pescar").
  • Tercero, es útil para mí escribir mis hallazgos (bonificación: ¡siempre podré encontrarlo nuevamente aquí en StackExchange!).
  • Finalmente, Google todavía está publicando esta página, por lo que existe la posibilidad de que esto ayude a alguien que no sea yo.

Así que déjame intentar resumir todo lo que he aprendido de todo esto:

Android, o al menos sus variantes a las que tengo acceso, utilizan fstabarchivos 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 y el dispositivo de Android, y también según la ROM si usa una ROM personalizada.

Para encontrar estos archivos en el sistema, abrir un emulador de terminal como tmuxo adb shelly ejecutar algo como esto: find / -type f -iname '*fstab*' 2>/dev/null. La redirección del archivo 2 ( stderr) /dev/nullhará que su salida sea mucho más limpia, ya que podrá ignorar la avalancha de mensajes de error que recibirá find, incluso si lo es root.

En mi sistema (un Pixel 2XL, nombre en clave "taimen"), encontré 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, ya que ninguno de los dos es un enlace duro o simbólico con el otro, pero si difflos encuentra, encontrará que son idénticos. Mirando un poco más profundo, si ejecuta staten los archivos verá que tienen los mismos valores de Dispositivo 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

statinforma ambos nombres de archivo como archivos normales con un solo enlace cada uno (por lo que no hay enlaces duros o simbólicos). No soy un experto en sistemas de archivos, pero lo que sucedió aquí es que el mismo dispositivo se ha montado dos veces. Puede 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 solo es visible para mí si inicio sesión como root, por lo que si tiene un dispositivo idéntico al mío, aún no encontrará ni tendrá acceso a este archivo a menos que su teléfono esté rooteado. Ese archivo tiene que ver con un servicio llamado Open Mobile Alliance Device Management, pero ese es un servicio que conozco muy poco, por lo que solo lo mencionaré aquí, y puede buscarlo en Google si lo desea.

skye --- capitán
fuente
1
Viejo tema de hecho, y desde entonces las cosas han cambiado un poco, en la medida en que la mayoría de los dispositivos que he construido para ROMs tendría un archivo fstab independiente, ya sea en /system/etco /vendor/etc. Gracias por traer información fresca.
Andy Yan
Encontré esta publicación buscando la razón por la cual mount devuelve el error mount: bad /etc/fstab: No such file or directory. ¿Tienes alguna idea o una solución para esto?
Michael