8. 生成MLO
编译x-loader以后需要将x-load.bin文件转换成MLO文件,使用的工具是signGP。
signGP这个工具可以在第一步下载的Devkit包里找到,在Tools/signGP目录中。将这个文件拷贝到Ubuntu的x-loader目录上,执行以下命令生成MLO文件
$ ./signGP ./x-load.bin
$ mv x-load.bin.ift MLO
9. 编译u-boot.bin:
进入TI_Android_GingerBread_2_3_4Sources下的u-boot目录
$ cd u-boot
注意,《DeveloperGuide》原文是$ cd u-boot-omap3,目录名不对
通过以下命令编译u-boot.bin
$ make CROSS_COMPILE=arm-eabi- distclean
$ make CROSS_COMPILE=arm-eabi- omap3_beagle_config
$ make CROSS_COMPILE=arm-eabi-
注意,使用的config是omap3_beagle_config
编译成功会在该目录找到u-boot.bin文件
10. 编译Linux 核心
进入TI_Android_GingerBread_2_3_4Sources下的kernel目录,通过以下命令编译uImage,执行前注意测试一下mkimage命令是否可以正常执行,该命令在生成uImage文件时要使用到。
$ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage
注意! 使用的config是omap3_beagle_android_defconfig
编译成功的话可以在kernel/arch/arm/boot目录找到uImage文件
11. 生成Android文件系统
进入TI_Android_GingerBread_2_3_4Sources目录,执行一下命令开始编译生成Android文件系统:
$ make TARGET_PRODUCT=beagleboard OMAPES=5.x -j8
注意你的BeagleBoard版本,如果是Beagleboard Rev Cx的话,要使用OMAPES=3.x选项,如果是Beagleboard XM A/B/C 则使用OMAPES=5.x。我的是beagleBoard XM C,所以使用OMAPES=5.x。
-j8选项是指定使用多少个CPU进行编译,如果你的Ubuntu只有一个CPU就不用这个参数了。
编译需要很长时间,请耐心等待。
如果编译过程中出现ld terminated with signal 7,ld terminated with signal 11的错误,特别是编译libwebcore.so 时出错,注意调整你的Ubuntu的硬盘空间和内存。我使用40G硬盘,2G内存编译通过。
编译成功后可以在out/target/product/beagleboard目录找到生成的文件系统。
12. 打包Android文件系统
编译完成后进入out/target/product/beagleboard目录,新建一个目录(本例是android_rootfs)将需要的文件拷贝进去,然后通过mktarball.sh命令将文件系统打包,命令如下:
$ cd out/target/product/beagleboard
$ mkdir android_rootfs
$ cp -r root/* android_rootfs
$ cp -r system android_rootfs
$ sudo ../../../../build/tools/mktarball.sh
../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
所生成的是rootfs.tar.bz2文件。