外置SD卡與內置虛擬SD卡無法並存 - Android

Table of Contents

各位好:

小弟最近收了一支二手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

--

All Comments

Blanche avatarBlanche2018-08-23
強 竟然玩到這程度! 得推一個
Linda avatarLinda2018-08-23
這情況我想不是改漏東西 恐怕就是上層系統APK有錨拋死
了 要解決恐怕還得反編譯自己改
Daniel avatarDaniel2018-08-27
對了 可往symlink方向摸索看看 安卓會用多個symlink跳
轉到同一個mount 例如ext_sd之類的 這恐怕要重新接駁
Caroline avatarCaroline2018-08-31
symlink不建議,很多app會認不到,可能跟權限有關
Gilbert avatarGilbert2018-09-05
過去data和internal storage是分開的分區才能這樣搞
Zanna avatarZanna2018-09-07
暈 非關建議 而是安卓系統本來就是靠它來接駁的 沒駁好
反倒會出事 舉例:除原PO上頭的原mount點外 大概還會有
/storage/emulated/0
/mnt/sdcard
Cara avatarCara2018-09-11
這兩者將視手機配置 主要差在有沒有SD 可能是或非指向
同一個地方 上層的安卓系統不會直接讀原mount點 藉以避
開儲存節點的不定
Kama avatarKama2018-09-15
然而有些symlink重疊指向同一地方的原因純粹是在兼顧上
層安卓系統的新舊儲存API
Mary avatarMary2018-09-20
而我舉例的那個0數字的意義不是第一張卡而是第一個use
r 在原Po的手機是不會遇見的
Anthony avatarAnthony2018-09-21
這就是為何我提醒原Po要瞄一下symlinks看看
Brianna avatarBrianna2018-09-23
另外 我記憶中上層記錄可用儲存載點的地方應該是syste
Anonymous avatarAnonymous2018-09-28
mui
apk 或 framework.jar 這得自己反編譯該才行
Selena avatarSelena2018-09-29
應該是說建新的symlink(或是覆寫現有的)不建議
George avatarGeorge2018-10-03
上頭樓主手動掛載這個我用過,就是app抓不到
Poppy avatarPoppy2018-10-04
mount -o bind可能成功的機會大一些
Hedda avatarHedda2018-10-05
android跟linux一樣會有log可以看嗎?
Jessica avatarJessica2018-10-08
昨天也有爬到一篇文章說要用mount -o bind
但對bind不太了解 還在作功課中
Sarah avatarSarah2018-10-12
謝謝兩位熱心回覆 你們說的我不太熟 努力消化中@@
Joseph avatarJoseph2018-10-12
adb logcat應該就有即時log惹
Hardy avatarHardy2018-10-16
至於系統存在哪裡我就不知道了Orz
Doris avatarDoris2018-10-16
對也 o bind應該是比較正確的方式
Agnes avatarAgnes2018-10-20
若原Po單純只想要拋棄原本的地點 導向新存儲地點 比較
好搞
Connor avatarConnor2018-10-24
但兩個地點都要就必須新增重導向整理好symlink/bind目
標 上層安卓系統也必須反編譯 手動添加可用儲存清單才
行 不然安卓系統不會自動認多出來的那一個 那一部分是
半寫死的
Joseph avatarJoseph2018-10-25
反編譯太折騰,弄個cronjob就好
Ida avatarIda2018-10-26
現在改用早上的作法 但檔案系統換vfat
Poppy avatarPoppy2018-10-29
相機相簿截圖還有LINE都運作正常 搞快一整天 累QQ
Kyle avatarKyle2018-10-30
再次感謝樓上幾位的幫忙 雖然現在這樣每次開機都要手
動掛載 但就將就著用吧
Enid avatarEnid2018-10-30
對也 看來我又想太遠了 你沒有要讓app辨認內置或假外置
SD 的確不需要反編譯 將原有的路徑bind成新的地點就好
認錯名稱就認錯 寫去你想要的地方就好
Rosalind avatarRosalind2018-11-01
內置虛擬SD的文件系統被寫死vfat才通 我想是因為還沒轉
用mtp 當時接PC是將整個分區mount storage全面丟給win
dows讀取 不過你目前接電腦應該只能自由選擇mount一個
要解決應該就得去反編譯我前面說的那地方了
Bennie avatarBennie2018-11-05
其實應該能避開每回重開機重新手動掛在的窘境 root後
系統會有個貌似是以.d結尾的文件夾 裡頭會有個文件 名
稱大略是00supersu 是份shell script
你可將你用來掛在分區的指令存成文檔放在裡頭 文件名稱
由00-99挑一個開頭 開機後su工具會將那文件夾裡頭的腳
本按數序跑一遍