我在这里看到有关创建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 File Explorer)并将其粘贴到其父目录中,该操作失败:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
实际上,我可以正常播放该文件,因此可以打开它。FWIW,当我尝试从原始安装点(/mnt/fuse/sdcard1
)复制时,出现了稍微不同的错误:
Failed to copy the file bar.mp3
我正在使用带有Cyanogenmod 10.2.0-i9300的Samsung Galaxy S3。
==编辑==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
这就是全部了。sdcard1_real
此目录中没有,所以我想脚本失败了吗?
== EDIT2 ==
我尝试修改脚本进行故障排除。该脚本可以正常运行,但是随后失败mkdir "$REALMNT"
并显示error /data/local/userinit.sh[6]: : not found
。
== EDIT3 ==
我知道该脚本不起作用,因此修复它可能可以解决我的问题,但是我认为以下内容很有趣。我在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文件权限,包括。用户和组。