sd无法挂载及无法安装apk的问题(2)

问题原因及原理讲解:

由于android系统(这样叫可能不对应该叫android应用系统吧)在安装APK时,默认会使用在/sdcard或者/mnt/sdcard目录下设备,由于没有挂载那就不能对sd卡进行操作了。

下面我们来看一个特别的例子来更好地理解问题,假如你的板子是通过sd启动的(sd必须分成boot和android_fs两个分区),那么当你的os运行起来时,android应用系统会先挂载boot分区读取里面的MLO、u-boot.bin、uimage文件,然后再读取android_fs分区里面的文件系统,等os跑起来了以后,os会自动卸载boot分区。

我们先来看看android里面的dev/block下有哪些与sd卡相关的,ls你会发现有3个文件。前提是sd成功驱动成功加载,如果把sd卡插入设备,在 /dev/block/ 目录下面也会多出几个设备节点,就证明sd卡的驱动已经成功加载。 我自己测试的目录下面会形成 mmcblk0 和 mmcblk0p1 和mmcblk0p2节点,注意:这三个节点的意思,mmcblk0代表第一个SD卡设备,mmcblk0p1代表第一个SD卡设备的第一个分区,mmcblkp2代表第二个分区,真正挂载到系统中的是mmcblk0p1和mmcblk0p2而不是mmcblk0,这一点很重要。

但是为什么系统还是会提示sd damage或者sd umount呢?原因是android只会去/sdcard目录下寻找sd设备,你没有挂载sd的某一个分区在/sdcard目录,当然就会报前面的错,既然没有空间来容纳APK那么也就不能安装APK了,


解决方法:

通过是用android调试工具adb shell使pc连上板子,手动挂载mmcblk0p1到/sdcard下(这时只能挂载1分区,因为这时1分区是卸载状态可以挂载,2分区是文件系统正在被os调用,当你挂载2分区时会报出the devices busy的问题),这样操作的话,mmcblk0p1就挂载成功了,sdcard目录下就会自动多出Android目录,里面包含了一些文件如APP之类的等,查看权限如果权限不够时就使用chmod修改它,这时就退出adb shell使用adb install安装apk ,adb pull从pc传入文件到板子,具体adb使用和adb安装及其相关操作请查看此我的目录(Android移植及调试)系列的adb命令详解等几篇文章,你可以在这些文章中学会adb的使用,接下来apk就可以成功在板子安装成功了,也可以通过板子从晚上下载apk进行安装了,这样就解决了sd无法挂载及无法安装apk的问题

本文只是我自己在玩omap4430 pandaboard板子遇到问题的一些解决方法,本人很菜,希望大拿们不小心看到此文章后就当路过,要是能指点一下那就更好了!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值