美文网首页代码改变世界
Android 系统启动分析(一)

Android 系统启动分析(一)

作者: songwenbin | 来源:发表于2015-02-19 10:23 被阅读0次

    Boot.img 分析

    Boot.img 组成

    Boot.img = uImage + ramdisk.img

    Boot.img 制作

    工具源码位置: system/core/mkbootimg/
    工具源码文件:

    • bootimg.h
    • makebootimg.c

    Boot.img 的内存布局

    +-----------------+ 
    | boot header     | 1 page
    +-----------------+
    | kernel          | n pages  
    +-----------------+
    | ramdisk         | m pages  
    +-----------------+
    | second stage    | o pages
    +-----------------+
    

    Boot.img 头结构

    struct boot_img_hdr
    {
        unsigned char magic[BOOT_MAGIC_SIZE];
    
        unsigned kernel_size;  /* size in bytes */
        unsigned kernel_addr;  /* physical load addr */
    
        unsigned ramdisk_size; /* size in bytes */
        unsigned ramdisk_addr; /* physical load addr */
    
        unsigned second_size;  /* size in bytes */
        unsigned second_addr;  /* physical load addr */
    
        unsigned tags_addr;    /* physical addr for kernel tags */
        unsigned page_size;    /* flash page size we assume */
        unsigned unused[2];    /* future expansion: should be 0 */
    
        unsigned char name[BOOT_NAME_SIZE]; /* asciiz product name */
    
        unsigned char cmdline[BOOT_ARGS_SIZE];
    
        unsigned id[8]; /* timestamp / checksum / sha1 / etc */
    };
    

    ramdisk.img 分析

    使用file命令查看ramdisk.img的类型

    # file ramdisk.img
    ramdisk.img: gzip compressed data, from Unix 
    

    ramdisk.img是gzip类型的压缩文件,修改文件名ramdisk.img为ramdisk.img.gz

    # gzip -d ramdisk.img.gz
    

    解压后,获得一个ramdisk.img的文件,继续使用file查看这个文件类型

    # file ramdisk.img
    ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
    

    ramdisk 是cpio类型的文件

    # cpio -i -F ramdisk.img
    

    解压后获得的就是root目录下文件

    out/target/product/your_product_name/root
    

    相关文章

      网友评论

        本文标题:Android 系统启动分析(一)

        本文链接:https://www.haomeiwen.com/subject/qkiyxttx.html