Я вижу некоторые упоминания о создании 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 и перенес на нее некоторые файлы. Как ни странно, ошибки прав доступа возникают только в созданных мной подкаталогах. В корне раздела (через /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, в т.ч. пользователь и группы.