背景说明:
上一篇博文讲述了使用linaro release 14.10的现成boot和android kernel版本制作SD启动卡,本文讲述如何使用linaro release 14.10 android源码编译pandaboard的SD卡启动包.
制作步骤:
(¥),到http://releases.linaro.org/14.10/android/panda下载linaro_android_build_cmds.sh,存放在ubantu系统的某个文件夹下面。打开终端,进入 该目录下。执行$sh linaro_android_build_cmds.sh,会先下载android源码包到该目录下,文件夹名称就是"android"。
在下载过程中,会出现如下几个文件包不能下载的错误提示,出现该错误的原因是linaro文件库上已经删除了这几个目录(具体原因不详),但出现这个问题后,会导致下面的下载无法继续完成,因此也就不会有编译的结果了。
Fetching projects: 18% (76/420) fatal: remote error: access denied or repository not exported: /people/harigopal.gollamudi/lava-blackbox
fatal: remote error: access denied or repository not exported: /people/harigopal.gollamudi/lava-blackbox
error: Cannot fetch people/harigopal.gollamudi/lava-blackbox
Fetching projects: 30% (126/420) fatal: remote error: access denied or repository not exported: /people/ragesh.radhakrishnan/libjpeg-turbo
fatal: remote error: access denied or repository not exported: /people/ragesh.radhakrishnan/libjpeg-turbo
error: Cannot fetch people/ragesh.radhakrishnan/libjpeg-turbo
Fetching projects: 46% (194/420) fatal: remote error: access denied or repository not exported: /people/harigopal.gollamudi/glmark2
fatal: remote error: access denied or repository not exported: /people/harigopal.gollamudi/glmark2
error: Cannot fetch people/harigopal.gollamudi/glmark2
Fetching projects: 100% (420/420), done.
Syncing work tree: 34% (143/420) fatal: failed to unpack tree object HEAD Traceback (most recent call last):
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/main.py", line 506, in
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/main.py", line 482, in _Main
result = repo._Run(argv) or 0
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/main.py", line 161, in _Run
result = cmd.Execute(copts, cargs)
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/subcmds/sync.py", line 681, in Execute project.Sync_LocalHalf(syncbuf)
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/project.py", line 1196, in Sync_LocalHalf self._InitWorkTree()
File "/home/wjt/u-boot/linaro_omap4/aosp2/android/.repo/repo/project.py", line 2298, in _InitWorkTree
raise GitError("cannot initialize work tree")
error.GitError: cannot initialize work tree
上述问题的解决办法是:到已经下载的开源安卓源码(AOSP)中找到.repo文件夹(隐藏文件夹),在该文件夹下面有manifest.xml,这个是repo(版本管理软件)用来创建本地目录的工具,根据上面的错误查找到相应的*.git文件,可以查看到其在本地目录中的位置,然后将这3个文件拷贝到对应的目录下面,就可以顺利完成安卓系统编译工作,整个下载编译大概需要6个小时左右(视网络与工作机的速度情况),生成的版本在android/out/target/product/pandaboard下面,有MLO、u-boot.bin、u-boot.img、boot.tar.bz2、system.tar.bz2、userdata.tar.bz2等。
(¥),执行如下脚本,用于下载配置linaro的版本制作工具包,
$ sudo add-apt-repository ppa:linaro-maintainers/tools $ sudo apt-get update $ sudo apt-get install linaro-image-tools
(¥),进入android/out/target/product/pandaboard目录下,执行如下脚本,先查看sd卡的分区情况,是否存在sdc1,sdc2,sdc3,sdc4,sdc5等分区,如果存在将生成的MLO,boot.bin,boot.img,kernel,android系统安装到相应的分区中,要注意分区的名称是sdc还是sdx(正常情况下,经过这一步后,会在SDX的system分区下生成一系列系统文件夹如app、bin、etc、framework、verdor灯,如果没有,则说明sd卡分区存在问题,需要先用gparted工具将原分区删除后,再执行如下命令,应该会正确生成分区文件系统)
$dmesg|tail
$linaro-android-media-create --mmc /dev/sdc --dev panda --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
(¥),进入android/out/target/product/pandaboard目录下,将install-binaries-4.0.4.sh(调用安装图形库并加载到SD卡中的脚本)和imgtec-panda-imm76i-67545da7.tgz(图形库安装脚本)拷贝到该目录下,在本目录下执行如下脚本(注意,如果执行过程中存在下载链接问题等,需要将所需要的文件单独下载,并需要单步执行脚本)
$ chmod a+x install-binaries-4.0.4.sh $ ./install-binaries-4.0.4.sh
(¥),将SVT制作的MLO,boot.bin,boot.img替换SD卡中boot目录下的文件,然后右键“弹出驱动器”,将SD卡从ubantu系统中卸载,并将SD卡装到pandaboard上,上电启动,就可以看到显示器上的android标志了。