Risposte:
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/fstab
montare una partizione. Ma non c'è nemmeno IIRC nessun mount
comando. dev_mount
dovrebbe funzionare (richiesto root). Per rispondere al titolo delle domande: tutto il montaggio del sistema di avvio viene eseguito con lo /etc/vold.fstab
script helper.
Il file fstab è in /
.
Si chiama /fstab.$systemname.rc
dove $systemname
si basa sulla proprietà dell'impronta digitale del telefono, identificata come categoria di chipset o telefono stesso.
/etc/vold.fstab
. :)
vold.fstab
, e in 4.3 e versioni successive è /fstab.<device>
.
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.fstab
e /etc/vold.conf
sono menzionati. Li ho sul mio dispositivo con CM 7.1 ma non sono sicuro di come vengono utilizzati.
init.rc
file che vive nel tuo ramdisk, quindi puoi estrarre il tuo boot.img, estrarre il tuo ramdisk, quindi modificarlo init.rc
e reimballarlo di nuovo (brevemente discusso qui , e la fonte di Tiamat è un buon esempio di impostazione dei mountpoint in init.rc
)
È 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 DEVICE
per renderla ext2. Utilizzare busybox newfs_msdos DEVICE
per 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.
Mi rendo conto che questo è un vecchio argomento, ma alcune delle risposte qui in realtà hanno ostacolato i miei sforzi per conoscere fstab
e Android perché implicano così fortemente che la fstab
situazione 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 fstab
file 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:
fstab
file in stile che posso trovare sul mio telefono, un Pixel 2XL.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 fstab
file 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 tmux
o adb shell
ed eseguire qualcosa di simile a questo: find / -type f -iname '*fstab*' 2>/dev/null
. Il reindirizzamento del file 2 ( stderr
) per /dev/null
renderà 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 diff
li trovi scoprirai che sono identici. Guardando un po 'più a fondo, se esegui stat
i 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
stat
riporta 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.
/system/etc
o entrambi /vendor/etc
. Grazie per aver portato nuove informazioni.
mount: bad /etc/fstab: No such file or directory
. Hai qualche pensiero o una soluzione per questo?