Vedo alcune menzioni qui sulla creazione di una scheda SD in formato ext4, ma nessuna guida. Questa domanda strettamente correlata suggerisce che non c'è modo di farlo, ma la mia domanda differisce in quanto il mio telefono è specificamente radicato.
Ho formattato la mia carta come ext4 (tabella delle partizioni GUID); il mio telefono Cyanogenmod l'ha montato su /mnt/fuse/sdcard1
. Ho seguito le istruzioni qui per montare la scheda su /storage/sdcard1
, creando il seguente script su/data/local/userinit.sh
#!/system/bin/sh
REALMNT=/mnt/fuse/sdcard1_real
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023 &
Ho riavviato e ho tentato di copiare un file (utilizzando ES File Explorer) e incollarlo nella directory principale, che non è riuscita:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Posso davvero riprodurre il file bene, quindi posso aprirlo. FWIW, quando provo a copiare dal punto di montaggio originale ( /mnt/fuse/sdcard1
), ottengo un errore leggermente diverso:
Failed to copy the file bar.mp3
Sto usando un Samsung Galaxy S3 con Cyanogenmod 10.2.0-i9300.
== EDIT ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Questo era tutto. Non ce n'è sdcard1_real
in questa directory, quindi suppongo che lo script non riesca?
== EDIT2 ==
Ho provato a modificare lo script per risolvere. Lo script inizia bene, ma poi non riesce mkdir "$REALMNT"
con l'errore /data/local/userinit.sh[6]: : not found
.
== Edit3 ==
So che lo script non funziona, quindi correggerlo potrebbe risolvere la mia domanda, ma ho pensato che il seguente fosse interessante. Ho formattato la mia scheda SD nel mio computer Linux e trasferito alcuni file su di essa. Stranamente, gli errori di autorizzazione si verificano solo nelle sottodirectory che ho creato. Nella radice della partizione (via /storage/sdcard1
), ho già il permesso di scrittura.
su
terminale per ottenere il root. Potrebbe essere necessario confermare la concessione dell'autorizzazione sul telefono, se lo stai facendo per la prima volta.
echo Script executed > /mnt/fuse/sdcard1/test.log
, e verificare se è in esecuzione. In tal caso, crea la riga precedente all'ultima mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
e controlla il messaggio di errore. O eseguire lo script manualmente per vedere: su /data/local/userinit.sh
.
touch
mostra che lo script è in esecuzione. Ho provato a eseguire lo script manualmente con su /data/local/userinit.sh
, ma questo non è riuscito. Ho anche provato su echo foo
, e ottenere un errore simile: Unknown id: echo
.
echo
per generare ciascun comando prima che venga eseguito e reindirizzare l'output dell'errore con 2>>
.
ls -l /mnt/fuse/
els -l /mnt/fuse/sdcard1_real
. Quindi modifica la tua domanda per includere i risultati. La mia ipotesi è "permessi per i file errati" - sia per il mount, sia per lafoo/
directory sulla scheda. Ricorda, ext4 supporta le autorizzazioni complete per i file * nix, incl. utente e gruppi.