Saya melihat beberapa menyebutkan di sini tentang membuat kartu SD berformat ext4, tetapi tidak ada panduan. Pertanyaan yang berkaitan erat ini menyarankan tidak ada cara untuk melakukannya, tetapi pertanyaan saya berbeda karena ponsel saya secara khusus di-root.
Saya memformat kartu saya sebagai ext4 (GUID partisi-table); ponsel Cyanogenmod saya memasangnya di /mnt/fuse/sdcard1
. Saya mengikuti instruksi di sini untuk memasang kartu di /storage/sdcard1
, dengan membuat skrip berikut di/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 &
Saya memulai kembali dan mencoba menyalin file (menggunakan ES File Explorer) dan menempelkannya ke direktori induknya, yang gagal:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Saya benar-benar dapat memutar file dengan baik, jadi saya bisa membukanya. FWIW, ketika saya mencoba menyalin dari titik mount asli ( /mnt/fuse/sdcard1
), saya mendapatkan kesalahan yang sedikit berbeda:
Failed to copy the file bar.mp3
Saya menggunakan Samsung Galaxy S3 dengan Cyanogenmod 10.2.0-i9300.
== EDIT ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Itu saja. Tidak ada sdcard1_real
dalam direktori ini, jadi saya kira skripnya gagal?
== EDIT2 ==
Saya mencoba memodifikasi skrip untuk memecahkan masalah. Script dimulai dengan baik, tetapi kemudian gagal mkdir "$REALMNT"
dengan kesalahan /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Saya tahu bahwa skrip tidak berfungsi, jadi memperbaikinya dapat menyelesaikan pertanyaan saya, tetapi saya pikir yang berikut ini menarik. Saya memformat kartu SD saya di komputer Linux saya, dan mentransfer beberapa file ke dalamnya. Anehnya, kesalahan izin hanya terjadi di subdirektori yang saya buat. Di root partisi (via /storage/sdcard1
), saya sudah memiliki izin menulis.
su
terminal untuk mendapatkan root. Anda mungkin perlu mengonfirmasi pemberian izin di telepon, jika Anda melakukannya untuk pertama kalinya.
echo Script executed > /mnt/fuse/sdcard1/test.log
, dan memeriksa apakah itu berjalan sama sekali. Jika demikian, buat baris sebelum-ke-terakhir mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
dan periksa pesan kesalahan. Atau menjalankan script secara manual untuk melihat: su /data/local/userinit.sh
.
touch
menunjukkan bahwa skrip sedang berjalan. Saya mencoba menjalankan skrip secara manual su /data/local/userinit.sh
, tetapi ini gagal. Saya juga mencoba su echo foo
, dan mendapatkan kesalahan yang sama: Unknown id: echo
.
echo
untuk output setiap perintah sebelum dieksekusi, dan redirect output kesalahan dengan 2>>
.
ls -l /mnt/fuse/
danls -l /mnt/fuse/sdcard1_real
. Kemudian edit pertanyaan Anda untuk memasukkan hasilnya. Dugaan saya adalah "izin file yang salah" - baik untuk mount, atau untukfoo/
direktori pada kartu. Ingat, ext4 mendukung izin file * nix lengkap, termasuk. pengguna dan grup.