免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2253 | 回复: 0
打印 上一主题 下一主题

Run Android on Motorola A1200 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-31 11:51 |只看该作者 |倒序浏览

                   买了一台摩托罗拉的A1200,看中的是使用Linux系统,网上资源多,可以自己玩玩。 当前最热门的就是Android,所以也想试试。网上搜索一下,很容易找到有一位
androidezx
的在一年前就成功porting android过,这里有连接:http://www.motorolafans.com/forums/android-os/21887-porting-andoid-a1200-ming.html , 所以一开始我就是按照他的方法,一步一步在尝试,可是在做到用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, 而是直接用
androidezx
使用的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需要的选项打开就可以。这个过程我是参考: http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget
   接下来便是文件系统,我是现做了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里打开 [color="#555555"]CONFIG_UNIX98_PTYS, fstab中要创建devpts文件系统, /dev/下创建pts的目录,还是创建ptms设备:[color="#555555"]mknod -m 666 ptmx c 5 2  ,最后在inittab启动telnetd: ::once:/sbin/telnetd -l /bin/ash 。
   Android的system/data,就是在android emulator跑起来的时候,放一个带tar的busybox进去,然后把/system 和/data压缩一下,取出来即可。
  待续。。。。
  附录信息:
         gen-blob: http://wiki.openezx.org/Dual_Boot_GEN2
         openezx: git clone git://git.openezx.org/openezx.git
                 git checkout b924144088f9a2b77611ccb3b06927c667cd2b9f
         compiler:  http://people.openezx.org/ao2/tmp/openezx-i686-20090818-armv5te-arm-oe-linux-gnueabi-toolchain.tar.bz
[color="#555555"]         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

               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31934/showart_2083385.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP