ここでは、ext4フォーマットのSDカードの作成についていくつか言及されていますが、ガイドはありません。この密接に関連する質問はそれを行う方法がないことを示唆していますが、私の質問は私の電話が特に根付いているという点で異なります。
カードをext4(GUIDパーティションテーブル)としてフォーマットしました。私のCyanogenmod電話がそれをマウントしました/mnt/fuse/sdcard1
。次のスクリプトを作成して、ここで指示に従ってカードをマウントし/storage/sdcard1
ました。/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 &
再起動してファイルをコピーし(ESファイルエクスプローラーを使用)、親ディレクトリに貼り付けようとしましたが、失敗しました。
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
実際にファイルを再生できるので、開くことができます。FWIW、元のマウントポイント(/mnt/fuse/sdcard1
)からコピーしようとすると、少し異なるエラーが発生します。
Failed to copy the file bar.mp3
Samsung Galaxy S3とCyanogenmod 10.2.0-i9300を使用しています。
==編集==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
それだけでした。sdcard1_real
このディレクトリにはないので、スクリプトが失敗していると思いますか?
==編集2 ==
トラブルシューティングのためにスクリプトを変更してみました。スクリプトは正常に開始されますmkdir "$REALMNT"
が、エラーで失敗します/data/local/userinit.sh[6]: : not found
。
==編集3 ==
スクリプトが機能しないことはわかっているので、修正することで問題が解決する可能性がありますが、次の点は興味深いと思いました。LinuxコンピューターでSDカードをフォーマットし、いくつかのファイルを転送しました。奇妙なことに、権限エラーは私が作成したサブディレクトリでのみ発生します。パーティションのルート(を介して/storage/sdcard1
)には、すでに書き込み権限があります。
su
端末を入力してルートを取得します。初めて許可する場合は、電話で許可の付与を確認する必要がある場合があります。
echo Script executed > /mnt/fuse/sdcard1/test.log
、デバッグ出力を追加して、それが実行されているかどうかを確認することができます。その場合は、前から最後の行mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
を作成し、エラーメッセージを確認してください。または、スクリプトを手動で実行して以下を確認しますsu /data/local/userinit.sh
。
touch
は、スクリプトが実行中であることを示しています。で手動でスクリプトを実行しようとしましたsu /data/local/userinit.sh
が、失敗しました。私も試しましたsu echo foo
が、同様のエラーが発生しました:Unknown id: echo
。
echo
各コマンドを実行する前に出力して、エラー出力をリダイレクトする2>>
。
ls -l /mnt/fuse/
してくださいls -l /mnt/fuse/sdcard1_real
。次に、質問を編集して結果を含めます。私の推測では、「ファイルのアクセス権が間違っています」-マウントまたはfoo/
カード上のディレクトリのどちらかです。ext4は、* nixファイルの権限を含め、完全にサポートしていることを忘れないでください。ユーザーとグループ。