此处省略三千字 2010-08-09
此帖发布的目的是让更多爱好者加入进来,共同开发和移植 AAndroid,奉行Linux开源的宗旨,大家共同努力和进步吧!
此帖发布的是Android的Linux内核章节。
发布之前,先感谢一下我的老师 mephistoph! mephistoph 默默的做着代码移植工作。
为了调试方便,目前的版本是在TF卡内运行,内核用u-boot和uImage跑,暂时不刷机。
一. 准备工作
1.toolchain建立
下载和解压toochain: $ wget http://www.codesourcery.com/sgpp/lite/arm/portal/package5383/public/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xvjf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C 你要解压的目录
设置toolchain: $ export PATH=/toolchain文件夹位置/bin:$PATH
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ export ARCH=arm
2.安装git # apt-get install git-core
二. u-boot 编绎
1. 下载master分支的源码 $ git clone git://h1.pargon.nl/srv/git-h1/u-boot.git
$ cd u-boot
2. 获取nowplus分支的代码更新(nowplus就是I8320的别名) $ git checkout nowplus
/*如果不成功,请用这个命令: $ git checkout -b nowplus origin/nowplus */
3. 修改u-boot/include/configs/omap3_nowplus.h
CONFIG_BOOTDELAY,CONFIG_EXTRA_ENV_SETTINGS和 CONFIG_BOOTCOMMAND #define CONFIG_BOOTDELAY 0
#define CONFIG_EXTRA_ENV_SETTINGS \
"loadaddr=0x82000000\0" \
"console=ttyS2,115200n8\0" \
"usbtty=cdc_acm\0"\
"stdout=usbtty\0" \
"stdin=usbtty\0" \
"stderr=usbtty\0" \
"bootargs=root=/dev/mmcblk0p1 rw init=/init rootdelay=1 rootfstype=ext3 rootwait debug\0" \
#define CONFIG_BOOTCOMMAND \
"bootm 0x86C30000"
4. 编绎u-boot $ make omap3_nowplus_config
$ make
三. Linux 内核,版本为2.6.32.9
1. 下载master分支的源码 $ cd u-boot前一级目录 /*注意: u-boot和I8320Kernel应该在同一级目录下方便生成boot.bin*/
(git仓库搬家了,旧的: git://github.com/mephistophilis/I8320Kernel.git)
$ git clone git://gitorious.org/h1droid/i8320kernel.git
$ cd I8320Kernel
2. 获取i8320分支的代码更新 (现在没有i8320分支了$ git checkout i8320 /*如果不成功,请用这个命令: $ git checkout -b i8320 origin/i8320 */$ git pull origin i8320)
暂时只需要执行:
$ git pull origin master #更新代码
3. 为生成uImage设置工具路径 $ export PATH=u-boot目录/tools:$PATH
4. 编绎uImage $ cp arch/arm/configs/omap_nowplus_defconfig .config
$ make uImage
四. 生成 boot.bin
boot.bin目的是合成u-boot.bin和uImage.
1. 获取makeboot工具 $ cd kernel和u-boot前一级目录
$ wget http://h1droid.googlecode.com/files/makeboot.sh
$ chmod +x makeboot.sh
2. 生成boot.bin $ ./makeboot.sh ./u-boot/u-boot.bin ./I8320Kernel/arch/arm/boot/uImage
五. 运行 内核
1. 下载工具 $ git clone git://h1.pargon.nl/srv/git-h1/odin.git
$ cd odin
2. 编绎 $ make brick
3. 将I8320进入download状态,然后插上USB线,下载boot.bin $ ./odin ../boot.bin
/*boot.bin在前一级目录*/
这时屏幕会发白或花屏几秒,然后出来企鹅以及一些字符信息。
系统工作了。