Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4281819
  • 博文数量: 241
  • 博客积分: 15936
  • 博客等级: 上将
  • 技术积分: 25293
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 11:22
个人简介

Fedora-ARM

文章分类
文章存档

2016年(3)

2014年(1)

2013年(3)

2012年(50)

2011年(61)

2010年(26)

2009年(27)

2008年(21)

2007年(49)

分类: LINUX

2011-01-02 21:15:04

      在上周五,我将最新android系统的Linux内核2.6.29下载下来,针对我的G1手机进行了打补丁(nand flash、多点触摸支持),并编译出了G1的Linux内核,使用Fastboot引导入G1,实践证明此内核可以使用。之后便开始了向mini2440移植的工作。


我的移植和之前的网上已有的人的移植方法有不同,之前的移植者都是向已经移植好S3C2440的内核里打Android补丁,这样补丁量大,出错的机会也大。而我经过考虑,决定使用反方法,先实现可以使用的Android内核,然后在这之上打上mini2440的补丁。这样避免了打大量的补丁产生大量的错误。而这个2440的补丁要实现LCD 、触摸屏和网卡等基本驱动。


我从Tekkaman Ninja处得到了他最新的Linux-2.6.29.4的补丁(Tekkaman Ninja会在近期发布此补丁)。在去除了内核中的fusion模块(用于DFB)和Yaffs模块(G1内核已经有了)后把这个补丁打在了我的android的Linux内核2.6.29上,很快,也很顺利(除了Makefile有问题之外,但很好解决,就是改一下交叉编译器)。


然后就是配置内核,这很关键,我一开始大部分按照G1去配置(除了system type和一些驱动的配置),可是用在启动到nfs文件系统的时候就挂了。后来我根据网上的文章,只是在原来mini2440的配置上稍作修改,添加必要的android系统特有的驱动,编译好后就可以引导最简单的文件系统,这说明这内核基本OK了。


要证明这个内核的可用性,只能使用android的文件系统来测试了。在此之前已经有高人搞了一个可以在ARMV4上使用的Android文件系统(armv4.tar.gz)。其实这个文件系统是从openmoko 的 freerunner 的文件系统中简化来的。现在暂时用拿来主义先测试一下内核,以后在自己做一个。


在下载文件系统armv4.tar.gz之后,根据网上的说明:


3.拷贝包中的system目录到nfs中rootfs根目录下的/system, data目录到nfs中rootfs根目录下的/data, root目录中的内容到nfs中rootfs根目录下
4.设置内核启动参数中的init=/init,既指向根目录下的init
5.删除init.rc中的部分内容,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外所有的mount命令

现在就可以开启mini2440,使用nfs作为根文件系统。以下是启动后的画面:

 

网上已有触摸屏的解决方法,请自己google下.


阅读(5495) | 评论(3) | 转发(6) |
给主人留下些什么吧!~~

tekkamanninja2012-05-02 10:00:05

wangfwk: 我看了你的移植经验,觉得这种方法很好,但是我试过了nfs挂载不了android系统就挂了,也不知道你 的会不会出现这样的问题,如果出现了该怎么解决。
VFS: Mounte.....
很明显是文件系统问题,你挂载的文件系统可能没有创建/dev下的重要节点,比如:console、null、zero等
然后,内核找到android的init程序,这个可能和你文件系统放置的init位置有关,或者你的内核启动参数应该指定init进程。init=???

wangfwk2012-05-02 09:52:37

我看了你的移植经验,觉得这种方法很好,但是我试过了nfs挂载不了android系统就挂了,也不知道你 的会不会出现这样的问题,如果出现了该怎么解决。
VFS: Mounted root (nfs filesystem) on device 0:11.
Freeing init memory: 128K
Warning: unable to open an initial console.
Kernel panic - not syncing: Attempted to kill init!

snowboy98592012-03-23 20:32:25

高手,您好,想请教您一个问题,我在移植android2.1系统到mini2440时,采用先移植linux内核再增加android功能的时候,发觉补丁量很大有150多M,记得您的博客上有一种方法是先移植android内核,再打mini2440的补丁,请问这个补丁是如何生成的呢?是通过diff -ruN kernel/ linux2.6.29 >android.patch生成的么?我发现您提供的补丁挺小的,想学习一下,请指教。