[請益] 外置SD卡與內置虛擬SD卡無法並存

看板Android作者時間7年前 (2018/08/18 23:49), 7年前編輯推噓4(4052)
留言56則, 4人參與, 7年前最新討論串1/1
各位好: 小弟最近收了一支二手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://www.ptt.cc/bbs/Android/M.1534607372.A.DD4.html

08/19 02:20, 7年前 , 1F
強 竟然玩到這程度! 得推一個
08/19 02:20, 1F

08/19 02:22, 7年前 , 2F
這情況我想不是改漏東西 恐怕就是上層系統APK有錨拋死
08/19 02:22, 2F

08/19 02:22, 7年前 , 3F
了 要解決恐怕還得反編譯自己改
08/19 02:22, 3F

08/19 02:27, 7年前 , 4F
對了 可往symlink方向摸索看看 安卓會用多個symlink跳
08/19 02:27, 4F

08/19 02:27, 7年前 , 5F
轉到同一個mount 例如ext_sd之類的 這恐怕要重新接駁
08/19 02:27, 5F

08/19 07:09, 7年前 , 6F
symlink不建議,很多app會認不到,可能跟權限有關
08/19 07:09, 6F

08/19 07:10, 7年前 , 7F
過去data和internal storage是分開的分區才能這樣搞
08/19 07:10, 7F
目前用指令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

08/19 09:45, 7年前 , 8F
暈 非關建議 而是安卓系統本來就是靠它來接駁的 沒駁好
08/19 09:45, 8F

08/19 09:45, 7年前 , 9F
反倒會出事 舉例:除原PO上頭的原mount點外 大概還會有
08/19 09:45, 9F

08/19 09:45, 7年前 , 10F
/storage/emulated/0
08/19 09:45, 10F

08/19 09:45, 7年前 , 11F
/mnt/sdcard
08/19 09:45, 11F

08/19 09:51, 7年前 , 12F
這兩者將視手機配置 主要差在有沒有SD 可能是或非指向
08/19 09:51, 12F

08/19 09:51, 7年前 , 13F
同一個地方 上層的安卓系統不會直接讀原mount點 藉以避
08/19 09:51, 13F

08/19 09:51, 7年前 , 14F
開儲存節點的不定
08/19 09:51, 14F

08/19 09:54, 7年前 , 15F
然而有些symlink重疊指向同一地方的原因純粹是在兼顧上
08/19 09:54, 15F

08/19 09:54, 7年前 , 16F
層安卓系統的新舊儲存API
08/19 09:54, 16F

08/19 09:57, 7年前 , 17F
而我舉例的那個0數字的意義不是第一張卡而是第一個use
08/19 09:57, 17F

08/19 09:57, 7年前 , 18F
r 在原Po的手機是不會遇見的
08/19 09:57, 18F

08/19 09:58, 7年前 , 19F
這就是為何我提醒原Po要瞄一下symlinks看看
08/19 09:58, 19F

08/19 10:02, 7年前 , 20F
另外 我記憶中上層記錄可用儲存載點的地方應該是syste
08/19 10:02, 20F

08/19 10:03, 7年前 , 21F
mui
08/19 10:03, 21F

08/19 10:03, 7年前 , 22F
apk 或 framework.jar 這得自己反編譯該才行
08/19 10:03, 22F

08/19 10:05, 7年前 , 23F
應該是說建新的symlink(或是覆寫現有的)不建議
08/19 10:05, 23F

08/19 10:10, 7年前 , 24F
上頭樓主手動掛載這個我用過,就是app抓不到
08/19 10:10, 24F

08/19 10:11, 7年前 , 25F
mount -o bind可能成功的機會大一些
08/19 10:11, 25F

08/19 10:11, 7年前 , 26F
android跟linux一樣會有log可以看嗎?
08/19 10:11, 26F

08/19 10:12, 7年前 , 27F
昨天也有爬到一篇文章說要用mount -o bind
08/19 10:12, 27F

08/19 10:12, 7年前 , 28F
但對bind不太了解 還在作功課中
08/19 10:12, 28F

08/19 10:13, 7年前 , 29F
謝謝兩位熱心回覆 你們說的我不太熟 努力消化中@@
08/19 10:13, 29F

08/19 10:16, 7年前 , 30F
adb logcat應該就有即時log惹
08/19 10:16, 30F

08/19 10:17, 7年前 , 31F
至於系統存在哪裡我就不知道了Orz
08/19 10:17, 31F

08/19 10:26, 7年前 , 32F
對也 o bind應該是比較正確的方式
08/19 10:26, 32F

08/19 10:30, 7年前 , 33F
若原Po單純只想要拋棄原本的地點 導向新存儲地點 比較
08/19 10:30, 33F

08/19 10:30, 7年前 , 34F
好搞
08/19 10:30, 34F

08/19 10:36, 7年前 , 35F
但兩個地點都要就必須新增重導向整理好symlink/bind目
08/19 10:36, 35F

08/19 10:36, 7年前 , 36F
標 上層安卓系統也必須反編譯 手動添加可用儲存清單才
08/19 10:36, 36F

08/19 10:36, 7年前 , 37F
行 不然安卓系統不會自動認多出來的那一個 那一部分是
08/19 10:36, 37F

08/19 10:36, 7年前 , 38F
半寫死的
08/19 10:36, 38F

08/19 10:39, 7年前 , 39F
反編譯太折騰,弄個cronjob就好
08/19 10:39, 39F
兩個新發現: 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還是不能開圖

08/19 14:03, 7年前 , 40F
現在改用早上的作法 但檔案系統換vfat
08/19 14:03, 40F

08/19 14:04, 7年前 , 41F
相機相簿截圖還有LINE都運作正常 搞快一整天 累QQ
08/19 14:04, 41F
※ 編輯: idisnothing (220.132.185.53), 08/19/2018 14:06:36

08/19 15:27, 7年前 , 42F
再次感謝樓上幾位的幫忙 雖然現在這樣每次開機都要手
08/19 15:27, 42F

08/19 15:27, 7年前 , 43F
動掛載 但就將就著用吧
08/19 15:27, 43F

08/19 18:44, 7年前 , 44F
對也 看來我又想太遠了 你沒有要讓app辨認內置或假外置
08/19 18:44, 44F

08/19 18:44, 7年前 , 45F
SD 的確不需要反編譯 將原有的路徑bind成新的地點就好
08/19 18:44, 45F

08/19 18:44, 7年前 , 46F
認錯名稱就認錯 寫去你想要的地方就好
08/19 18:44, 46F

08/19 18:51, 7年前 , 47F
內置虛擬SD的文件系統被寫死vfat才通 我想是因為還沒轉
08/19 18:51, 47F

08/19 18:51, 7年前 , 48F
用mtp 當時接PC是將整個分區mount storage全面丟給win
08/19 18:51, 48F

08/19 18:51, 7年前 , 49F
dows讀取 不過你目前接電腦應該只能自由選擇mount一個
08/19 18:51, 49F

08/19 18:51, 7年前 , 50F
要解決應該就得去反編譯我前面說的那地方了
08/19 18:51, 50F

08/19 19:02, 7年前 , 51F
其實應該能避開每回重開機重新手動掛在的窘境 root後
08/19 19:02, 51F

08/19 19:02, 7年前 , 52F
系統會有個貌似是以.d結尾的文件夾 裡頭會有個文件 名
08/19 19:02, 52F

08/19 19:02, 7年前 , 53F
稱大略是00supersu 是份shell script
08/19 19:02, 53F

08/19 19:02, 7年前 , 54F
你可將你用來掛在分區的指令存成文檔放在裡頭 文件名稱
08/19 19:02, 54F

08/19 19:02, 7年前 , 55F
由00-99挑一個開頭 開機後su工具會將那文件夾裡頭的腳
08/19 19:02, 55F

08/19 19:02, 7年前 , 56F
本按數序跑一遍
08/19 19:02, 56F
https://tinyurl.com/y7t2ym4a 前一陣子的疑問終於獲得解答,vold沒辦法掛載同一裝置裡的多個partition 難怪vold.fstab都只有第一行有作用 ※ 編輯: idisnothing (220.132.185.53), 09/30/2018 09:28:37
文章代碼(AID): #1RU40CtK (Android)