Chinaunix首页 | 论坛 | 博客
  • 博客访问: 382244
  • 博文数量: 38
  • 博客积分: 3071
  • 博客等级: 中校
  • 技术积分: 423
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-15 11:11
文章分类

全部博文(38)

文章存档

2017年(1)

2011年(1)

2010年(5)

2009年(6)

2008年(3)

2007年(22)

我的朋友

分类: LINUX

2009-10-31 11:51:02

   买了一台摩托罗拉的A1200,看中的是使用Linux系统,网上资源多,可以自己玩玩。 当前最热门的就是Android,所以也想试试。网上搜索一下,很容易找到有一位的在一年前就成功porting android过,这里有连接: , 所以一开始我就是按照他的方法,一步一步在尝试,可是在做到用boot_usb load kernel 到手机上,开始run的时候,总是白屏。网上也有很多遇到同样问题,但一一尝试下来都不能解决。后来想想索性从头搞起。
   在之前有些准备工作,就是在A1200的ROM里面烧入一个gen-blob,就是在ROM的空隙中插入一个bootloader,其支持从SD卡启动,这样后面的调试工作就很安全了,不会使手机变砖头了。
   先是linux kernel,当然还是使用openezx. 在kernel 版本选择上,花了不少时间,因为openezx 最新版本是2.6.32-rc2, 可是目前android kernel稳定版本2.6.27,为了节省移植时间,openezx 最好也要拿到相对应的版本,
可是就是这一点就搞了我好几天,因为openezx/android现在都是用git管理代码,而我以前几乎没怎么用过git,加上openezx上还没有对历史版本做很清楚的TAG,只能根据时间和log的内容中,慢慢去找。
   Kernel本没有什么可说的,可是我碰到一个编译器问题,一开始我没有使用openezx推荐的openembedded toolchain, 而是直接用使用的arm-2007q3-51-arm-none-linux-gnueabi ,结果编译出来的kernel一运行就会白屏,通过调试竟然crash在 kmalloc_cache_alloc()函数里,找不到原因,后来换了openembedded编译器就好了。
   在openezx kernel基础上,打上android的patch。android patch要自己做, git android 在用的2.6.27 kernel, 然后和 vanilla 的2.6.27做diff。patch过程很顺,因为两边选的kernel基本上是相同,还是有几处冲突,自己修改一下就可以了。然后在kernel config上,把android需要的选项打开就可以。这个过程我是参考:
   接下来便是文件系统,我是现做了busybox,然后再把android的ramdisk/system/data放进来。先说说busybox,主要是先后解决几个问题,第一个是“unable to open initial console”,在/dev下创建null/console/tty1,几个设备节点,其中console是tty1的链接,因为这个平台上的输出是tty1 (kernel CMDLINE中,console=tty1)。然后是“sh: can't access tty...”,修改/etc/inittab中的相关行成:console::sysinit:/etc/init.d/rcS ,tty1::respawn:-/bin/ash ,即可解决。接下来是telnetd的问题,要做全几件事,kernel里打开 CONFIG_UNIX98_PTYS, fstab中要创建devpts文件系统, /dev/下创建pts的目录,还是创建ptms设备:mknod -m 666 ptmx c 5 2  ,最后在inittab启动telnetd: ::once:/sbin/telnetd -l /bin/ash 。
   Android的system/data,就是在android emulator跑起来的时候,放一个带tar的busybox进去,然后把/system 和/data压缩一下,取出来即可。
  系统启动init,从Android 自带的ramdisk.img中取出的init,拿到这里跑不起来,会出segement fault,
看起来可能是编译的问题。使用做的fs,可以跑起来,但是到后面的runtime也有问题。看起来还得自己编。
待续。。。。。。



  附录信息:
         gen-blob:
         openezx: git clone git://git.openezx.org/openezx.git
                 git checkout b924144088f9a2b77611ccb3b06927c667cd2b9f
         compiler: 

         android:  git clone git://android.git.kernel.org/kernel/common.git
                 git checkout android-2.6.27
         busybox-1.7.2
         android 1.5_r3 SDK
阅读(3645) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-25 08:43:40

最近在移植这个,遇到很多问题,希望可以请教,QQ292011912 方便的加一下QQ 谢谢