image 打包命令

小记:

ramdisk.img ramdisk-uboot.img打包

cd out/target/product/xxxx

../../../host/linux-x86/bin/mkbootfs root/ | ../../../host/linux-x86/bin/minigzip > ramdisk.img

mkimage -A arm -O linux -T ramdisk -C none -a 0x40800000 -n "ramdisk" -d ramdisk.img ramdisk-uboot.img

这样你可以修改root下面的文件,然后打包成ramdisk,通过fastboot flash ramdisk ramdisk-uboot.img 烧入设备。

查看帮助信息mkimage -h:

Usage: 

./mkimage -l image
             -l ==> list image header information 镜像头信息(0x40个字节的头)
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
             -A ==> set architecture to 'arch'
指定CPU的体系结构,取值 表示的体系结构:

                                                                                  alpha Alpha 
                                                                                   arm A RM 
                                                                                   x86 Intel x86
                                                                                   ia64 IA64
                                                                                   mips MIPS
                                                                                   mips64 MIPS 64 Bit
                                                                                   ppc PowerPC
                                                                                   s390 IBM S390
                                                                                   sh SuperH
                                                                                   sparc SPARC
                                                                                   sparc64 SPARC 64 Bit
                                                                                   m68k MC68000

             -O ==> set operating system to 'os' 指定操作系统类型,可以取以下值:
                                                                            openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、

                                                                            solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、

                                                                            u-boot、rtems、artos

             -T ==> set image type to 'type'  指定映象类型,可以取以下值:

                                                                       standalone、kernel、ramdisk、multi、firmware、script、filesystem

             -C ==> set compression type 'comp'  指定映象压缩方式,可以取以下值:

                                                                                 none 不压缩
                                                                                 gzip 用gzip的压缩方式
                                                                                 bzip2 用bzip2的压缩方式

             -a ==> set load address to 'addr' (hex)    指定映象在内存中的加载地址,映象下载到内存中时的始地址
             -e ==> set entry point to 'ep' (hex)          指定映象运行的入口点地址,就是-a参数指定的值加上0x40

                                                                                 因为前面有个mkimage添加的0x40个字节的头
             -n ==> set image name to 'name'                指定映象名
             -d ==> use image data from 'datafile'       指定制作映象的源文件
             -x ==> set XIP (execute in place)   即芯片内执行,指应用程序可以直接在flash闪存内运行

备注:

ramdisk解包

首先在linux终端下使用命令file ramdisk.img,打印出如下字符ramdisk.img: gzip compressed data, from Unix,可以看出,它是一个gzip压缩的格式,下面对其进行解压,使用fedora自带的工具进行解压,或者使用gunzip进行解压(可能需要将扩展名改为.gz),可以看到解压出一个新的ramdisk.img,这个ramdisk.img是使用cpio压缩的,可以使用cpio命令对其进行解压,cpio –i –F ramdisk.img,解压后可以看到生成了一些文件夹和文件。看到这些文件就会明白,它和root目录下的内容完全一样。说明了ramdisk.img其实是对root目录的打包和压缩。





system.img打包

使用mkyaffs2image或者make_ext4fs 根据build/core/Makefile里面的INTERNAL_USERIMAGES_USE_EXT标志位决定。(其他版本的Makefile可能不一样,标志位应该也不一样。)

mkyaffs2image参考网上的:

../../../host/linux-x86/bin/mkyaffs2image  system system.img

如果加入参数  -f fix file stat for devices,理论上用于修改文件状态而已,无法用于添加文件。

make_ext4fs,制作ext4 文件系统:

build/core/Makefile里面,找到build-systemimage-target,加入个echo “===============”用于定位,然后全编译一遍,根据输出的==============你就可以知道系统打包system.img所用的参数了,当然如果整个系统都是你负责,那参数你肯定知道啦。

我这边是
make_ext4fs -s -l 314572800 -a system out/target/product/mid_c1002/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/mid_c1002/system

-l 是len ,应该是分区的大小

-a 是android的挂载点

如果使用make_ext4fs -h可以看到:

make_ext4fs [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ] [ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ] [ -L <label> ]  [ -f ] [ -a <android mountpoint> ] <filename> [<directory>]

注意make_ext4fs 是在编译完源码后生成的,在out/host/linux-x86/bin/下面。


recovery 打包过程

http://blog.csdn.net/zjujoe/article/details/6230575

如果系统是用uboot启动,则打包是跟打包ramdisk一样,只是地址不同。

$(MKBOOTFS) $(TARGET_RECOVERYIMAGE_ROOT_OUT) | $(MINIGZIP)  > $(recovery_ramdisk)

mkimage -A arm -O linux -T ramdisk -C none -a 0x30800000 -n "ramdisk" -d $(ramdisk_recovery) $(recovery_ramdisk_uboot)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值