Adroid操作系统的移植(基于TX2440A开发板)

    今天一天一直在网上搜索关于Adroid操作系统的移植,在网上也找到了一些资料,但很多都有一些问题,根据自己整合后,整理如下:

    一、安装交叉编译器

    http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,可以在以上网站上下载编译器。我想应该也可以用arm920t-eabi-4.1.2这个交叉编译器,没有试过,有机会可以试试。交叉编译器具体的安装步骤就算了。

    二、下载android Linux内核

    http://code.google.com/p/android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount
Kernel : linux-2.6.23-android-m5-rc14.tar.gz,在以上网站上可以下载到。
解压文件
$ tar -xf linux-2.6.23-android-m5-rc14.tar.gz

解压后等到后面从模拟器里到处config再来编译

 

    三、安装Android SDK
从网上下载linux 版本的Android SDK,如下
http://dl.google.com/android/android-sdk_m5-rc15_linux-x86.zip
下载后解压,获得android-sdk_m5-rc15_linux-x86 文件

在这个sdk里面有emulator模拟器,通过模拟器与busybox,我们可以获得Android的根文件系统。

    四、获得root file system

⑴下载busybox 工具从下面地址
http://benno.id.au/blog/2007/11/14/android-busybox(linux 环境中下载)

⑵运行emulator 获取root file system
$ cd <目录>/ android-sdk_m5-rc15_linux-x86/tools
$ ./emulator&
等待emulator 启动,看到出现Android 系统画面,进入菜单ALL/Dev Tools/Development Settings 下,将Wait for debugger,Show running processes,Show screen updates 这三项打勾,然后回到命令输入终端。
#./adb push <local-path> /data/busybox
#./adb shell
# /data/busybox tar -cvf system.tar  /system
# /data/busybox tar -cvf data.tar /data
# /data/busybox tar -cvf etc.tar  /etc
# /data/busybox tar -cvf sbin.tar  /sbin
# exit
    从网上查看的资料中,在我电脑上运行有错误,他提供的资料是:/data/busybox tar -czf system.tar.gz /system,由于我的busybox中tar命令在压缩时不能调用gzip程序,所以我用上述tar -cvf 命令只打包不压缩。但是在拷贝时需要时间长点。

# ./adb pull /system.tar.gz ./
# ./adb pull /data.tar.gz ./
# ./adb pull /etc.tar.gz ./
# ./adb pull /sbin.tar.gz ./
# ./adb pull /init ./
    通过以上五条命令就把Adroid模拟器里的文件系统给pull到本地目录里了,现在就可以制作android的根文件系统了。

# mkdir initial_ram_disk
# cd initial_ram_disk
# mkdir cache d dev proc root sdcard sys tmp var
$ tar -xvf <local-path>/system.tar ./
$ tar -xvf <local-path>/data.tar  ./
$ tar -xvf <local-path>/etc.tar ./
$ tar -xvf <local-path>/sbin.tar  ./
$ cp  <local-path> /init ./
包含Android root 文件系统的initial_ram_disk 做好
    五、配置编译Linux内核
首先从运行着的模拟器中pull出config.gz文件。

#./adb pull /proc/config.gz ./

然后再解压:

#gunzip config.gz

将解压后的config拷贝到Linux内核的主目录,并改名为.config

可以配置内核了,配置方法跟普通Linux内核配置方法一样:

#make  CROSS_COMPILE=arch-none-linux-gnueabi- ARCH=arm menuconfig

 

配置好就可以编译了,在编译前一定要将Makefile里的

LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,/
$(call ld-option, -Wl$(comma)–build-id,))
这行去掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下:
LDFLAGS_BUILD_ID =

如果不去掉编译出来的内核会有4.3M大。

---------------------------------------------------------------------------------

把它注释掉的原因是目前android的内核还不支持这个选项。--build-id选项,主要是用于在生成的elf

可执行文件中加入一个内置的id,这样在core dump,或者debuginfo的时候就可以很快定位这个模块是

哪次build的时候弄出来的。这样就可以避免,每次都把整个文件做一遍效验,然后才能得到该文件的是由

哪次build产生的。对于内核开发者来说,这是很不错的想法,可以节约定位模块版本和其影响的时间。

目前,该功能还出于early stage的状态,未来的android或许会支持,但至少目前的版本是不支持的。

所以,用#注释掉即可,或者害怕不保险的话,就加入LDFLAGS_BUILD_ID=空,这样即使编译的时候用了,也只是一个空格而已。

 

---------------------------------------------------------------------------------

开始编译内核:

#make  CROSS_COMPILE=arch-none-linux-gnueabi- ARCH=arm zImage

这样就生成了内核镜像文件,可以下载到开发板上调试,也可以用模拟器调试

--------------------------------------------------------------------------------

    六、用模拟器模拟内核运行

#./emulator -avd myavd -kernel <目录>kernel/arch/arm/boot/zImage

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值