Тут я бачу деякі згадки про створення SD-форматів формату ext4, але ніякого керівництва. Це тісно пов’язане запитання говорить про те, що немає способу цього зробити, але моє запитання відрізняється тим, що мій телефон конкретно вкорінений.
Я відформатував свою картку як 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 File Explorer) і вставити його в батьківський каталог, який не вдався:
/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.
== EDIT ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Це було все. У sdcard1_real
цьому каталозі немає, тож, гадаю, сценарій не працює?
== EDIT2 ==
Я намагався змінити сценарій для усунення несправностей. Сценарій починається нормально, але потім не працює mkdir "$REALMNT"
з помилкою /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Я знаю, що сценарій не працює, тому його виправлення може вирішити моє питання, але я вважав, що наступне цікаве. Я відформатував свою SD-карту на своєму комп’ютері Linux і переніс на неї деякі файли. Як не дивно, помилки дозволу трапляються лише в створених мною підкаталогах. У корені розділу (via /storage/sdcard1
) у мене вже є дозвіл на запис.
su
термінал, щоб отримати root. Можливо, вам доведеться підтвердити надання дозволу по телефону, якщо ви це робите вперше.
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 для файлів, у т.ч. користувач та групи.