作者idisnothing ()
看板Android
标题[请益] 外置SD卡与内置虚拟SD卡无法并存
时间Sat Aug 18 23:49:30 2018
各位好:
小弟最近收了一支二手TWM Amazing A2 (Android 4.0.4,无另外插MicroSD记忆卡)
由於LINE使用上有点问题(图片开不起来,出现"SD卡无法使用"的错误讯息)
所以就想说把内置虚拟SD卡的那个分割区切成两个
切完後一个一样挂在内置虚拟SD卡下(/mnt/sdcard2/)
另一个多出来就挂在外置SD卡下(/mnt/sdcard/)
看这样能不能骗得过LINE
实际修改後LINE的确运作正常了
但内置虚拟SD卡却消失了
导致换相机故障
有办法让两者同时存在吗?谢谢。
以下是我的修改过程
这是原先的分割表
shell@android:/ # /data/local/tmp/busybox fdisk -l /dev/block/mmcblk0
Disk /dev/block/mmcblk0: 3909 MB, 3909091328 bytes
1 heads, 16 sectors/track, 477184 cylinders
Units = cylinders of 16 * 512 = 8192 bytes
Device Boot Start End Blocks Id System
/dev/block/mmcblk0p1 * 513 515 20 4d Unknown
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2 1025 1043 150 45 Unknown
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3 1537 11776 81920 c Win95 FAT32 (LBA)
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4 11777 477184 3723264 5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5 12289 12413 1000 46 Unknown
/dev/block/mmcblk0p6 12801 12925 1000 47 Unknown
/dev/block/mmcblk0p7 13313 13562 2000 5d Unknown
/dev/block/mmcblk0p8 13825 15872 16384 48 Unknown
/dev/block/mmcblk0p9 15873 16256 3072 58 Unknown
/dev/block/mmcblk0p10 16385 16768 3072 4a Unknown
/dev/block/mmcblk0p11 16897 17280 3072 4b Unknown
/dev/block/mmcblk0p12 17409 82944 524288 83 Linux
/dev/block/mmcblk0p13 82945 214016 1048576 83 Linux
/dev/block/mmcblk0p14 214017 216576 20480 83 Linux
/dev/block/mmcblk0p15 216577 249344 262144 83 Linux
/dev/block/mmcblk0p16 249345 251392 16384 60 Unknown
/dev/block/mmcblk0p17 251393 251517 1000 63 GNU HURD or SysV
/dev/block/mmcblk0p18 251905 252029 1000 4c Unknown
/dev/block/mmcblk0p19 252417 252928 4096 d1 Unknown
/dev/block/mmcblk0p20 252930 477184 1794032 83 Linux
这是原先的/system/etc/vold.fstab
dev_mount sdcard /mnt/sdcard auto /devices/platform/msm_sdcc.1/mmc_host
dev_mount sdcard2 /mnt/sdcard2 20 /devices/platform/msm_sdcc.3/mmc_host
/dev/block/mmcblk0p20原本有1.7GB左右,我把它切成两个(1GB & 0.7GB)并格式化
/dev/block/mmcblk0p20 252930 377930 1000008 83 Linux
/dev/block/mmcblk0p21 377932 477184 794024 83 Linux
并修改vold.fstab如下
dev_mount sdcard /mnt/sdcard
20 /devices/platform/msm_sdcc.
3/mmc_host
dev_mount sdcard2 /mnt/sdcard2
21 /devices/platform/msm_sdcc.3/mmc_host
修改完後重开机,内置虚拟SD卡消失,只剩外置SD卡
刚发现截图功能也坏了,只好拿别只手机来拍QQ
https://imgur.com/0mY5ABD
https://imgur.com/iYlX0ds
这是完全未修改前的样子(图片借自:
https://tinyurl.com/yd6yyv8f)
https://imgur.com/aiNbNSw
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.185.54
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Android/M.1534607372.A.DD4.html
1F:推 mainline: 强 竟然玩到这程度! 得推一个 08/19 02:20
2F:→ mainline: 这情况我想不是改漏东西 恐怕就是上层系统APK有锚抛死 08/19 02:22
3F:→ mainline: 了 要解决恐怕还得反编译自己改 08/19 02:22
4F:→ mainline: 对了 可往symlink方向摸索看看 安卓会用多个symlink跳 08/19 02:27
5F:→ mainline: 转到同一个mount 例如ext_sd之类的 这恐怕要重新接驳 08/19 02:27
6F:→ sam613: symlink不建议,很多app会认不到,可能跟权限有关 08/19 07:09
7F:→ sam613: 过去data和internal storage是分开的分区才能这样搞 08/19 07:10
目前用指令mount手动把它挂起来了,内置虚拟SD卡也已出现(但没显示空间使用状况bar)
相机可以拍照(透过adb shell进去/mnt/sdcard2/DCIM/Camera里头看是有照片的)
但相簿不能读相片,截取画面的功能也还不能用
还是不明白为何分割区都挂起来了 有些APP还不能正常使用
# mount -o rw,remount /
# mount -t ext2 /dev/block/mmcblk0p21 /mnt/sdcard2
# chmod 775 /mnt/sdcard2
# chown system.sdcard_rw /mnt/sdcard2
# ls -al /mnt
drwxr-xr-x root system 2018-08-19 00:16 asec
drwxr-xr-x root system 2018-08-19 00:16 obb
drwxrwxr-x system sdcard_rw 1970-01-01 08:00 sdcard
drwxrwxr-x system sdcard_rw 2018-08-19 00:29 sdcard2
drwx------ root root 2018-08-19 00:16 secure
# df
Filesystem Size Used Free Blksize
/dev 194M 48K 194M 4096
/mnt/asec 194M 0K 194M 4096
/mnt/obb 194M 0K 194M 4096
/system 503M 371M 132M 4096
/data 1007M 362M 644M 4096
/persist 19M 4M 14M 4096
/cache 251M 4M 247M 4096
/mnt/sdcard 974M 8M 965M 4096
/mnt/secure/asec 974M 8M 965M 4096
/mnt/sdcard2 763M 3M 760M 4096
https://imgur.com/5elv7tG
https://imgur.com/3rAspz3
8F:→ mainline: 晕 非关建议 而是安卓系统本来就是靠它来接驳的 没驳好 08/19 09:45
9F:→ mainline: 反倒会出事 举例:除原PO上头的原mount点外 大概还会有 08/19 09:45
10F:→ mainline: /storage/emulated/0 08/19 09:45
11F:→ mainline: /mnt/sdcard 08/19 09:45
12F:→ mainline: 这两者将视手机配置 主要差在有没有SD 可能是或非指向 08/19 09:51
13F:→ mainline: 同一个地方 上层的安卓系统不会直接读原mount点 藉以避 08/19 09:51
14F:→ mainline: 开储存节点的不定 08/19 09:51
15F:→ mainline: 然而有些symlink重叠指向同一地方的原因纯粹是在兼顾上 08/19 09:54
16F:→ mainline: 层安卓系统的新旧储存API 08/19 09:54
17F:→ mainline: 而我举例的那个0数字的意义不是第一张卡而是第一个use 08/19 09:57
18F:→ mainline: r 在原Po的手机是不会遇见的 08/19 09:57
19F:→ mainline: 这就是为何我提醒原Po要瞄一下symlinks看看 08/19 09:58
20F:→ mainline: 另外 我记忆中上层记录可用储存载点的地方应该是syste 08/19 10:02
21F:→ mainline: mui 08/19 10:03
22F:→ mainline: apk 或 framework.jar 这得自己反编译该才行 08/19 10:03
23F:→ sam613: 应该是说建新的symlink(或是覆写现有的)不建议 08/19 10:05
24F:→ sam613: 上头楼主手动挂载这个我用过,就是app抓不到 08/19 10:10
25F:→ sam613: mount -o bind可能成功的机会大一些 08/19 10:11
26F:→ idisnothing: android跟linux一样会有log可以看吗? 08/19 10:11
27F:→ idisnothing: 昨天也有爬到一篇文章说要用mount -o bind 08/19 10:12
28F:→ idisnothing: 但对bind不太了解 还在作功课中 08/19 10:12
29F:→ idisnothing: 谢谢两位热心回覆 你们说的我不太熟 努力消化中@@ 08/19 10:13
30F:推 Arbin: adb logcat应该就有即时log惹 08/19 10:16
31F:→ Arbin: 至於系统存在哪里我就不知道了Orz 08/19 10:17
32F:→ mainline: 对也 o bind应该是比较正确的方式 08/19 10:26
33F:推 mainline: 若原Po单纯只想要抛弃原本的地点 导向新存储地点 比较 08/19 10:30
34F:→ mainline: 好搞 08/19 10:30
35F:→ mainline: 但两个地点都要就必须新增重导向整理好symlink/bind目 08/19 10:36
36F:→ mainline: 标 上层安卓系统也必须反编译 手动添加可用储存清单才 08/19 10:36
37F:→ mainline: 行 不然安卓系统不会自动认多出来的那一个 那一部分是 08/19 10:36
38F:→ mainline: 半写死的 08/19 10:36
39F:→ sam613: 反编译太折腾,弄个cronjob就好 08/19 10:39
两个新发现:
1. vold.fstab里的那两行,只有第一行会有作用,不晓得是否跟两行都挂载同一个device有关
2. 内置虚拟SD卡的档案系统从ext2/ext3/ext4改为vfat後,相机、相簿、截图功能就正常了。
目前把分割表和vold.fstab都回复到原始状态,然後下指令:
# mount -o bind /mnt/sdcard2 /mnt/sdcard
# Filesystem Size Used Free Blksize
/dev 194M 48K 194M 4096
/mnt/asec 194M 0K 194M 4096
/mnt/obb 194M 0K 194M 4096
/system 503M 371M 132M 4096
/data 1007M 273M 734M 4096
/persist 19M 4M 14M 4096
/cache 251M 4M 247M 4096
/mnt/sdcard2 1G 2M 1G 4096
/mnt/sdcard 1G 2M 1G 4096
结果LINE还是不能开图
40F:→ idisnothing: 现在改用早上的作法 但档案系统换vfat 08/19 14:03
41F:→ idisnothing: 相机相簿截图还有LINE都运作正常 搞快一整天 累QQ 08/19 14:04
※ 编辑: idisnothing (220.132.185.53), 08/19/2018 14:06:36
42F:→ idisnothing: 再次感谢楼上几位的帮忙 虽然现在这样每次开机都要手 08/19 15:27
43F:→ idisnothing: 动挂载 但就将就着用吧 08/19 15:27
44F:推 mainline: 对也 看来我又想太远了 你没有要让app辨认内置或假外置 08/19 18:44
45F:→ mainline: SD 的确不需要反编译 将原有的路径bind成新的地点就好 08/19 18:44
46F:→ mainline: 认错名称就认错 写去你想要的地方就好 08/19 18:44
47F:→ mainline: 内置虚拟SD的文件系统被写死vfat才通 我想是因为还没转 08/19 18:51
48F:→ mainline: 用mtp 当时接PC是将整个分区mount storage全面丢给win 08/19 18:51
49F:→ mainline: dows读取 不过你目前接电脑应该只能自由选择mount一个 08/19 18:51
50F:→ mainline: 要解决应该就得去反编译我前面说的那地方了 08/19 18:51
51F:→ mainline: 其实应该能避开每回重开机重新手动挂在的窘境 root後 08/19 19:02
52F:→ mainline: 系统会有个貌似是以.d结尾的文件夹 里头会有个文件 名 08/19 19:02
53F:→ mainline: 称大略是00supersu 是份shell script 08/19 19:02
54F:→ mainline: 你可将你用来挂在分区的指令存成文档放在里头 文件名称 08/19 19:02
55F:→ mainline: 由00-99挑一个开头 开机後su工具会将那文件夹里头的脚 08/19 19:02
56F:→ mainline: 本按数序跑一遍 08/19 19:02
https://tinyurl.com/y7t2ym4a
前一阵子的疑问终於获得解答,vold没办法挂载同一装置里的多个partition
难怪vold.fstab都只有第一行有作用
※ 编辑: idisnothing (220.132.185.53), 09/30/2018 09:28:37