我一直用的一个三星手机,采用原厂的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)大了不少。
参考: