KEYWORDS: SD卡上创建创建ext2、ext3、ext4文件 挂载SD卡上的EXT分区文件
最近换了张SD卡,由于某些原因不能分区,老卡用了link2sd,很多程序装在了ext分区里,为了在新卡中继续使用link2sd,于是有了这篇文章。
一开始想的很简单,在SD卡中建立一个sdext文件用loop挂载到/data/sdext就行了,后来发现这种做法因为绕过了Android的vold导致Framework上层无法识别SD卡,最直接的影响就是相机提示未插入SD卡。于是对脚本改进等待vold挂载sd后再挂载loop,发现此时已经太晚,已经错过了Framework识别apk的过程,虽然sdext挂载上了,程序依然无法运行,一个临时的解决办法是使用link2sd的快速重启功能(即只重启UI),这样程序和SD卡都可以正常使用了,美中不足的是安到ext分区程序的桌面widget就显示不正常了。几经周折,查阅android源码,终于弄明白了SD卡的挂载流程,于是有了以下的完美解决方案:
/etc/init.d 中建立启动脚本20sdext
#!/system/bin/sh
#init.d中的脚本是在vold启动之前执行的(参见init.rc、/system/bin/sysinit),所以要nohup
nohup /data/sdsh/sd.sh > /data/sdsh/sd.log
/data/sdsh/sd.sh
#!/system/bin/sh