Android5.0挂载NTFS为只读问题
来源:互联网 发布:邮政储蓄网络培训学院 编辑:程序博客网 时间:2024/06/10 06:07
一、问题描述
连接两个u盘;一个为NTFS,一个为FAT32;从NTFS可以向FAT32拷贝,反之报错“只读文件系统”。
二、问题原因
mount
/dev/block/vold/8:1 /mnt/usb/843E1E3A3E1E2628 ntfs ro,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,umask=02,nls=utf8,errors=continue,mft_zone_multiplier=1 0 0
ll /mnt/usb/
dr-xr-xr-x media_rw media_rw 2015-04-03 14:23 843E1E3A3E1E2628
问题有两个:
1.NTFS格式U盘挂载为READONLY;
2.挂载点目录权限问题
三、问题解决
1.修复问题1
移植fstype_support/android_external_ntfs-3g,使用ntfs-3g挂载。
NTFS_3G文件系统支持包
system/vold/Ntfs.cpp
#define NTFS_3G_PATH "/system/bin/ntfs-3g" //add by tankint Ntfs::doMount(const char *fsPath, const char *mountPoint, bool ro, bool remount, int ownerUid, int ownerGid, int permMask) { int rc; unsigned long flags; char mountData[255]; flags = MS_NODEV | MS_NOEXEC | MS_NOSUID | MS_DIRSYNC; flags |= (ro ? MS_RDONLY : 0); flags |= (remount ? MS_REMOUNT : 0);#if 0 char value[PROPERTY_VALUE_MAX]; property_get("persist.sampling_profiler", value, ""); if (value[0] == '1') { SLOGW("The SD card is world-writable because the" " 'persist.sampling_profiler' system property is set to '1'."); permMask = 0; } sprintf(mountData, "uid=%d,gid=%d,fmask=%o,dmask=%o,nls=utf8", ownerUid, ownerGid, permMask, permMask); rc = mount(fsPath, mountPoint, "ntfs3g", flags, mountData);#else SLOGI("mount ntfs block device by tcl ntfs ntfs-3g"); sprintf(mountData,"locale=utf8,uid=%d,gid=%d,fmask=%o,dmask=%o,inherit, atime",\ ownerUid, ownerGid, permMask, permMask); const char *args[16]; args[0] = NTFS_3G_PATH; args[1] = fsPath; args[2] = mountPoint; args[3] = "-o"; args[4] = mountData; args[5] = NULL; rc = logwrap(5, args, 1);#endif if (rc) { SLOGE("%s appears to be a read only filesystem - retrying mount RO", fsPath); flags |= MS_RDONLY; rc = mount(fsPath, mountPoint, "ntfs", flags, mountData); } return rc;}
2.修复问题2
system/vold/Volume.cpp
int Volume::mountVol() { if (isFatFs) { if (Fat::doMount(devicePath, getMountpoint(), false, false, false, /*AID_MEDIA_RW*/AID_SYSTEM, /*AID_MEDIA_RW*/AID_SDCARD_RW, /*permMask*/0002, true)) { //modify by tank SLOGE("%s failed to mount via VFAT (%s)\n", devicePath, strerror(errno)); isFatFs = false; } else { isExtFs = false; isExfatFs = false; } }}
0 0
- Android5.0挂载NTFS为只读问题
- Gentoo Linux下读写NTFS格式分区(ntfs-3g解决NTFS只读不可写的问题)
- 内存不能为只读问题的解决办法
- Android5.0启动Service问题
- CentOS6挂载NTFS分区问题
- 关于mac 挂载ntfs问题
- 挂载android只读文件系统为可读写
- xp下NTFS格式磁盘,发布asp程序access数据库不能更新,数据库或对象为只读
- 文件只读、禁删除[NTFS下有效]
- 解决IIS"数据库或对象为只读"的问题
- 解决Sql2005 附加数据库 为只读选项问题(引)
- SQL Server 2008 解决附加数据库为只读的问题
- 用ntfs-3g解决ntfs挂载,以及移动硬盘NTFS分区自动挂载问题
- android5.0新特性和适配性问题
- Android5.0自动调节亮度黑屏问题
- Centos6.3挂载NTFS分区问题
- 设置一列为只读
- 设置RadioButtonList 为只读
- Logistic Regression & softmax
- 冰川网络2015春招笔试题第四题
- 关于freemarker获取后台数值类型数据到前台出现逗号
- Linux中交叉编译libiio
- [LeetCode 65]Valid Number (通过率最低的一题)
- Android5.0挂载NTFS为只读问题
- Step-By-Step Guide to Get Started with Salesforce REST API using Java
- 关于面试官(3)
- JDBC批量操作
- PHP任意文件上传漏洞
- Android入门
- 写在最前面的
- 开发问题及解决 E/AndroidRuntime(15377): Caused by: java.lang.InstantiationException: can't instantiate clas
- Python开源项目大全