加载中…
个人资料
Steven天天Helloworld
Steven天天Helloworld
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,491
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

手机烧录自己编译的linux kernel

(2012-07-10 10:55:35)
标签:

杂谈

分类: Android驱动学习笔记
编译linux kernel :
首先,要编译手机平台上的内核镜像,需要交叉编译工具,而一般主流的手机上的交叉编译环境都很完备了,只要把它纳入PATH目录,基本都可以make成功。
假设交叉编译环境工具路径:~/ANDROID_CROSS_TOOL/

把交叉编译环境的bin目录加入/etc/profile
PATH=~/ANDROID_CROSS_TOOL/bin:PATH
使得开机时自动运行。

把交叉编译环境加入PATH环境变量以后,就可以make。

make成功以后,在kernel/kernel/arch/arm/boot/目录下会生成一个zImage的镜像文件,这个就是编译内核生成的内核镜像。
然后,通过./out/host/linux-x86/bin/目录下的mkbootimg命令制作boot镜像:
$./out/host/linux-x86/bin/mkbootimg --kernel kernel/arch/arm/boot/zImage --ramdisk out/target/product/kt501/ramdisk.img --output out/target/product/kt501/boot.img
可见在这里,通过mkbooting命令把kernel和ramdisk打包成了一个boot镜像。
有了boot.img镜像,就可以在手机中烧录编译好的内核了。

烧录手机,有两种烧录方式:
1.卡烧
2.机烧

1.卡烧
卡烧相对容易,首先要熟悉一下手机烧录SD卡和普通SD卡的区别。烧录所用的SD卡是有一个标志文件,文件名为:“auto_flag.txt”(也许不同的手机型号标志文件不同),而且我们可以打开这个文件,其实里面是空的,说明,这个文件只起标志作用。当手机检测到了这个标志文件,就开检索需要烧录的系统文件,因为我只是重新编译了kernel,因此只需要重新烧录kernel。这时,把当时编译内核时打包生成的boot.img烧录到SD卡上。然后把SD卡装到手机上,只要开机,因为该SD卡含有“auto_flag.txt”标志文件,所以检测需要烧录的系统镜像,接着把我们自己编译的boot.img烧录到手机系统中。

2.机烧
机烧相对麻烦,而且不能被打断,曾经有一个工程师在烧录手机的时候碰了以下连接线,于是,手机的FLASH被洗空,然后就怎么都烧不上去了。
机烧的话,先进入手机的fast_boot模式,用USB连接手机和电脑,执行烧录脚本burn_linux.sh。下面是butn_linux脚本的内容:
#!/bin/bash
TARGET_PATH=.

echo "$TARGET_PATH"

./fastboot devices
./fastboot flash xloader $TARGET_PATH/MLO
./fastboot flash bootloader $TARGET_PATH/u-boot.bin
./fastboot flash environment $TARGET_PATH/u-boot.env
./fastboot flash boot $TARGET_PATH/boot.img
./fastboot flash logo $TARGET_PATH/logo.bmp
./fastboot flash userdata $TARGET_PATH/userdata.img
./fastboot erase cache
./fastboot flash system $TARGET_PATH/system.img
./fastboot flash recovery $TARGET_PATH/recovery.img
./fastboot flash auto_install $TARGET_PATH/auto_install.iso
./fastboot reboot

可见,它就是把编译好的kernel,system等等用fastboot命令烧录到手机上。所以像我这样,只是烧录内核的话,就只要执行:
$./fastboot flash boot $TARGET_PATH/boot.img
就可以了,可以节省时间。

最后提醒,在烧录过程中,尽量不要打断它。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有