我一直用的一個三星手機,採用原廠的ROM就沒有問題,一旦刷成比較新的4.2版本,就會出現(常常性的)內置SD卡沒法自動加載的問題。這是一個很討厭的問題,由於一旦內置的SD卡沒法加載,不少應用就會出問題,比方說相機就會拒絕工做,其餘應用的配置就會丟失等,即便手機插了外部的SD卡,可是大多數應用只認內部的SD卡!html
上網搜了好久,貌似碰到該問題的人不是不少,一個比較靠譜的回答是內置的內存質量有問題,因此在啓動時加載的時候會出錯,奇怪的是用舊版本的(原機ROM,基於2.3版本)就很好。那麼有沒有可能在開機啓動後手動加載內置SD卡呢?網上搜了一下,有這方面的詳細講解,可是本人對Android內核不是很瞭解,並且手動掛載可能還得編寫一個Android APP,不然每次都要打開一個shell豈不是很麻煩?!這麼一考慮這個方法工做量比較大,實在不適合目前還不想折騰的我。android
還有另一個辦法,主要是針對內置SD卡損壞的問題。考慮到原ROM中,是沒有內置外置SD的概念的,一直到了android4.0以後可能纔有了所謂的內置SD卡,而新ROM的方法就是對內存進行從新分區,將一部份內存當作內置的SD卡來處理。會不會三星在設計這款機器的時候沒有考慮到內存分區帶來的問題,因此纔會產生這樣的問題?無論怎樣,假設內置的SD卡有問題,那怎麼辦呢?shell
網上有解決方案。其實也很簡單,就是交換SD卡,將外置的SD卡做爲內置的SD卡來用,而內置SD卡就成爲了外置SD卡。這樣只要保證外置的SD卡沒問題,就不會出現上面的故障。spa
在系統中有一個文件vold.fstab(/system/etc/vold.fstab),裏面記錄了SD卡的掛載配置。設計
## Vold 2.0 Generic fstab
## - San Mehat (san@android.com)
##orm#######################htm
## Regular device mountblog
##內存
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>get
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
# internal sdcard
dev_mount sdcard /storage/sdcard1 28 /devices/platform/msm_sdcc.2/mmc_host/mmc1
# externel sdcard
dev_mount external_sd /storage/sdcard0 auto /devices/platform/msm_sdcc.4/mmc_host/mmc2
# usb disk
dev_mount usbdisk /storage/usbdisk auto /devices/platform/msm_hsusb_host.0
注意裏面的internal sdcard和 external sdcard,其實要交換一下也很簡單,只要將二者的掛載點互換一下就行了,也就是把紅色的部分互換一下就行了。關機重啓,而後就不會出現SD卡加載不了的狀況了。
個人狀況是,交換的SD卡後,原先沒法掛載的內置SD卡,如今成了外置的SD卡了,並且很好用,沒什麼問題;並且如今內置的SD卡有4G,比原先(1G)大了不少。
參考: