Qual è l'equivalente Android di / etc / fstab?


26

A volte vorrei davvero che non avessero fatto tanto casino con Linux! So che c'è un /etc/fstabposto dentro da qualche parte, ma dove?

Vorrei montare alcune partizioni con filesystem alternativi (perché non mi piace FAT32).

Risposte:


19

Non pensare ad Android come a una distribuzione Linux fortemente modificata. Perché non lo è. L'unica cosa che Android condivide con una distribuzione Linux è il kernel. E anche questo componente viene modificato. Anche altri componenti principali, come la libc, differiscono.

Android non ha /etc/fstab

Non è necessario /etc/fstabmontare una partizione. Ma non c'è nemmeno IIRC nessun mountcomando. dev_mountdovrebbe funzionare (richiesto root). Per rispondere al titolo delle domande: tutto il montaggio del sistema di avvio viene eseguito con lo /etc/vold.fstabscript helper.


Immagino di essere un utente desideroso di maemo allora davvero. Sì, credo sia abbastanza lontano da Linux. Grazie per il puntatore a vold.fstab!
Barrymac,

3
Vold.fstab ha solo roba sd card sul mio nexus one
gcb

7

Il file fstab è in /.

Si chiama /fstab.$systemname.rcdove $systemnamesi basa sulla proprietà dell'impronta digitale del telefono, identificata come categoria di chipset o telefono stesso.


3
Ciò dipende e varia da ROM a ROM. In AOSP è /etc/vold.fstab. :)
t0mm13b,

e mentre è vero per CM10 - ho /fstab.p1c - viene sovrascritto al riavvio da qualcosa che non ho ancora capito.
jcomeau_ictx,

3
Secondo source.android.com/devices/storage/config.html , in Android 4.2.2 e versioni precedenti è vold.fstab, e in 4.3 e versioni successive è /fstab.<device>.
LarsH,

1
sulla mia Moto E, questo file è sul file system montato in sola lettura :(
Anton Krosnev,

5

Sto vedendo informazioni contrastanti. Una risorsa dice che è hardcoded , quindi non qualcosa che puoi cambiare dal lato utente:

I programmi init specifici per Android si trovano nel dispositivo / sistema / init. Aggiungi messaggi LOG per aiutarti a eseguire il debug di potenziali problemi con la macro LOG definita in device / system / init / init.c.

Il programma init monta direttamente tutti i filesystem e dispositivi usando nomi di file hardcoded o nomi di dispositivi generati sondando il filesystem sysfs (eliminando così la necessità di un file / etc / fstab in Android).

Altrove /etc/vold.fstabe /etc/vold.confsono menzionati. Li ho sul mio dispositivo con CM 7.1 ma non sono sicuro di come vengono utilizzati.


3
È un po 'codificato, ma non lo è. C'è un init.rcfile che vive nel tuo ramdisk, quindi puoi estrarre il tuo boot.img, estrarre il tuo ramdisk, quindi modificarlo init.rce reimballarlo di nuovo (brevemente discusso qui , e la fonte di Tiamat è un buon esempio di impostazione dei mountpoint in init.rc)
eldarerathis

5

È possibile reinstallare la memoria esterna in modo che sia eseguibile eseguendo

mount -o remount, rw /mnt/sdcard

questo rimuoverà i flag noexec, nosuid e nodev, ma sarà comunque vfat fs. Puoi creare collegamenti a questo fs ma non dall'interno. Il rimontaggio non sopravvive al riavvio, perché il file vold.fstab verrà letto e verranno rimontati al riavvio con i flag noexec.

Se riformatti uno dei tuoi archivi esterni su qualcosa di diverso da vfat, non verranno rimontati al riavvio e tutte le app che hai spostato su qualsiasi archivio esterno non saranno utilizzabili. Se non si intende utilizzare la memoria esterna per le app, è possibile smontare la memoria esterna e utilizzarla busybox mke2fs DEVICEper renderla ext2. Utilizzare busybox newfs_msdos DEVICEper restituirlo a vfat e renderlo nuovamente utilizzabile.

La nota busybox mkfs.vfatè rotta, otterrai qualcosa di simile

Cerca: valore troppo grande per il tipo di dati definito

quindi non perdere tempo. Tutto questo presuppone che tu sia rootato e che abbia un binario busybox funzionante.


2

Mi rendo conto che questo è un vecchio argomento, ma alcune delle risposte qui in realtà hanno ostacolato i miei sforzi per conoscere fstabe Android perché implicano così fortemente che la fstabsituazione in Android è estremamente diversa dalle altre distribuzioni Linux. Da quello che posso dire, non lo è.

Tuttavia, leggere diverse risposte qui mi ha fatto meravigliare: quali fstabfile o file equivalenti sono sul mio dispositivo?

Fare un passo indietro per un momento, notando che " Android non ha / etc / fstab " probabilmente non è utile all'OP poiché devono averlo già saputo. Se ciò non fosse vero, la loro domanda (chiedendo quale sia l'equivalente Android /etc/fstab) non avrebbe alcun senso. D'altra parte, sappiamo che @Flow non stava cercando di implicare che non esistesse un equivalente su Android, dal momento che ne citavano uno, uno "script di supporto" chiamato /etc/vold.fstab.

Tutto sommato, penso che il take away dal post di @ Flow sia che su alcuni sistemi, c'è un file (possibilmente uno "script di supporto" - non posso verificarlo sul mio telefono) chiamato /etc/vold.fstab, e su quei sistemi, questo file è l'equivalente più vicino a /etc/fstab.

Tornando alle domande sul mio dispositivo, pubblicherò i miei risultati qui per diversi motivi, nonostante l'età del PO:

  • Innanzitutto, voglio documentare tutti i fstabfile in stile che posso trovare sul mio telefono, un Pixel 2XL.
  • In secondo luogo, voglio mostrare alle persone, in particolare ai neofiti di Linux / Android, che è abbastanza facile trovare questi file sul proprio dispositivo ("insegnare loro a pescare").
  • Terzo, è utile per me scrivere i miei risultati (bonus: potrò sempre ritrovarli qui su StackExchange!).
  • Infine, Google sta ancora pubblicando questa pagina, quindi c'è una possibilità che possa aiutare qualcuno diverso da me.

Quindi lasciami provare a riassumere tutto ciò che ho imparato da tutto questo:

Android, o almeno le sue varianti a cui ho accesso, fanno uso di fstabfile in stile. Tuttavia, il nome esatto, la posizione e la funzione di questi file variano in base alla distribuzione, ovvero alla versione e al dispositivo Android e anche alla ROM se si utilizza una ROM personalizzata.

Per trovare questi file sul sistema, aprire un emulatore di terminale come tmuxo adb shelled eseguire qualcosa di simile a questo: find / -type f -iname '*fstab*' 2>/dev/null. Il reindirizzamento del file 2 ( stderr) per /dev/nullrenderà il tuo output molto più pulito in quanto sarai in grado di ignorare l'assalto dei messaggi di errore che riceverai find, anche se lo sei root.

Sul mio sistema (un Pixel 2XL, nome in codice "taimen"), ho trovato tre file candidati:

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

I primi due sono file separati in quanto nessuno dei due è un collegamento rigido o simbolico all'altro, ma se diffli trovi scoprirai che sono identici. Guardando un po 'più a fondo, se esegui stati file vedrai che hanno gli stessi valori 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

statriporta entrambi questi nomi di file come file regolari con un solo collegamento ciascuno (quindi non sono coinvolti collegamenti fissi o simbolici). Non sono un esperto di filesystem ma quello che è successo qui è che lo stesso dispositivo è stato montato due volte. Puoi vederlo nell'output del seguente comando, dove le uniche differenze tra le due linee di output sono i punti di mount (la parte immediatamente dopo "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)

Il terzo file è visibile a me solo se eseguo l'accesso come root, quindi se hai un dispositivo identico al mio, non potrai ancora trovare o accedere a questo file a meno che il tuo telefono non sia rootato. Quel file ha a che fare con un servizio chiamato Open Mobile Alliance Device Management, ma è un servizio di cui conosco molto poco, quindi lo citerò qui e puoi Google per i dettagli se lo desideri.


1
Vecchio argomento in effetti, e da allora le cose sono cambiate un po ', nella misura in cui la maggior parte dei dispositivi per i quali ho creato ROM avrebbe un file fstab autonomo in uno /system/etco entrambi /vendor/etc. Grazie per aver portato nuove informazioni.
Andy Yan,

Ho trovato questo post cercando il motivo per cui mount restituisce l'errore mount: bad /etc/fstab: No such file or directory. Hai qualche pensiero o una soluzione per questo?
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.