分享

提取安卓的Linux内核和驱动

 昵称3884271 2015-05-20
水平有限,中间可能有各种错误,欢迎拍砖指正。

大家最关心的一个问题是,平板电脑或手机要是安装Linux,驱动的问题怎么解决?
我们知道Linux的驱动是要加载在内核里的,而且驱动和内核要匹配才能加载。
如果我们能提取安卓的Linux内核和驱动模块,它们肯定是匹配的,为什么不能用于其它Linux系统呢?

于是我就去试了试,结果发现是可以用的。之前自己直接编译的触摸屏驱动用不了,声音、wifi、键鼠、屏幕休眠都正常,视频也可以软解。
这样,自己不用编译驱动和内核,我们只是提取内核和驱动,然后安装到microSD卡上,就能从卡上启动Linux或者安卓系统了。
(当然,要是各种驱动的问题都能解决,系统用着感觉好,不妨再改改u-boot并用dd命令把相应的镜像写入到内置存储里面)


1. 提取驱动
驱动提取很好办,在/system/vendor/modules里面,那一堆.ko文件就是。另外可能还需要固件,在/system/vendor/firmware里面。
代码:
cp -r /system/vendor/modules /sdcard/


2. 提取内核
提取内核稍微麻烦一点,首先要获取Android的boot分区镜像,这可以在android下做,或者直接从固件包里提取。前者是通用的,只需要找到你的nand分区里哪个是boot分区就好了。假设boot分区是nandb
代码:
dd if=/dev/nandb of=/sdcard/boot.img


获得boot分区镜像后,还要做的一件事就是分离内核。因为安卓的boot镜像由三部分组成:header,kernel和ramdisk,我们需要的只是kernel。
上面的事情都是安卓下的终端应用里或者用adb进行的操作,下面的必须在电脑上进行操作。
需要下载一个工具:
代码:
http://dl./users/arete74/tools.tar.gz

解压后:
代码:
cd tool
./split_bootimg.pl ../boot.img

然后你就能看到一个boot.img-kernel的文件,将它转换成可以从卡上引导的镜像:
代码:
mkimage -A arm -O linux -T kernel -C none -a 0x40008000 -e 0x40008000 -n "Linux 2.6" -d boot.img-kernel uImage



注意:
可能一些驱动在ramdisk里面,分离内核之后有个boot.img-ramdisk.gz的文件,两次解压,就可以看到里面有一些安卓启动的脚本,还有一个/system/目录,这个目录下也可能有驱动,如果有就一并提取出来。



最后放上全志系列芯片在SD卡上安装和启动安卓的教程,上面的这个分离安卓内核的工具和过程都来源于此(这个分离的工具是通用的,从ubuntu官方下载的ubuntu touch的各种boot镜像也能用它分离):
http:///Boot_Android_from_SdCard

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多