Vejo algumas menções aqui sobre a criação de um cartão SD no formato ext4, mas nenhum guia. Esta questão intimamente relacionada sugere que não há como fazê-lo, mas minha pergunta difere no fato de meu telefone estar especificamente enraizado.
Formatei meu cartão como ext4 (tabela de partição GUID); meu telefone Cyanogenmod o instalou em /mnt/fuse/sdcard1
. Segui as instruções aqui para montar o cartão em /storage/sdcard1
, criando o seguinte script em/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 &
Reiniciei e tentei copiar um arquivo (usando o ES File Explorer) e colá-lo no diretório pai, que falhou:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Na verdade, eu posso reproduzir bem o arquivo, para poder abri-lo. FWIW, quando tento copiar do ponto de montagem original ( /mnt/fuse/sdcard1
), recebo um erro ligeiramente diferente:
Failed to copy the file bar.mp3
Estou usando um Samsung Galaxy S3 com Cyanogenmod 10.2.0-i9300.
== EDIT ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Isso foi tudo. Não há sdcard1_real
neste diretório, então suponho que o script esteja falhando?
== EDIT2 ==
Tentei modificar o script para solucionar problemas. O roteiro começa bem, mas, em seguida, falha em mkdir "$REALMNT"
com o erro /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Sei que o script não funciona, portanto, corrigi-lo pode resolver minha pergunta, mas achei o seguinte interessante. Formatei meu cartão SD no meu computador Linux e transferi alguns arquivos para ele. Curiosamente, os erros de permissão ocorrem apenas nos subdiretórios que eu criei. Na raiz da partição (via /storage/sdcard1
), já tem permissão de escrita.
su
terminal para obter root. Pode ser necessário confirmar a concessão da permissão no telefone, se você estiver fazendo isso pela primeira vez.
echo Script executed > /mnt/fuse/sdcard1/test.log
, e verificar se está em execução. Nesse caso, faça a linha anterior para a última mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
e verifique a mensagem de erro. Ou executar o script manualmente para ver: su /data/local/userinit.sh
.
touch
mostra que o script está sendo executado. Tentei executar o script manualmente com su /data/local/userinit.sh
, mas isso falhou. Eu também tentei su echo foo
, e obter um erro semelhante: Unknown id: echo
.
echo
para emitir cada comando antes de ser executado e redirecionar a saída de erro com 2>>
.
ls -l /mnt/fuse/
els -l /mnt/fuse/sdcard1_real
. Em seguida, edite sua pergunta para incluir os resultados. Meu palpite é "permissões de arquivo incorretas" - para a montagem ou para ofoo/
diretório no cartão. Lembre-se, o ext4 suporta permissões de arquivo * nix completas, incl. usuário e grupos.