• post-image.sh hacking


    #*********************************************************************************
    #*                      post-image.sh hacking
    #* 说明:
    #*     分析i.MX6 post-images.sh合成SD card工作原理。
    #*
    #*                                              2018-1-23 深圳 宝安西乡 曾剑锋
    #********************************************************************************/
    
    # 一、参考文档:
    #    1. Linux mktemp命令
    #        http://www.runoob.com/linux/linux-comm-mktemp.html
    #    2. Genimage - The Image Creation Tool
    #        https://github.com/pengutronix/genimage
    
    #!/usr/bin/env bash
    
    #
    # dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME
    # in ${BR_CONFIG}, then prints the corresponding list of file names for the
    # genimage configuration file
    #
    dtb_list()
    {
        local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="([a-z0-9 -]*)"$/1/p' ${BR2_CONFIG})"
    
        for dt in $DTB_LIST; do
            echo -n ""$dt.dtb", "
        done
    }
    
    #
    # linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in
    # ${BR_CONFIG}, then prints the corresponding file name for the genimage
    # configuration file
    #
    linux_image()
    {
        if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
            echo ""uImage""
        else
            echo ""zImage""
        fi
    }
    
    main()
    {
        # 获取dtb和linux image
        local FILES="$(dtb_list) $(linux_image)"
        # 创建配置文件文件
        local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"
        local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
    
        # 替换掉cfg模板文件中的FILES字段
        sed -e "s/%FILES%/${FILES}/" 
            board/freescale/common/imx/genimage.cfg.template > ${GENIMAGE_CFG}
    
        # 可能存在上次的暂存目录,删除
        rm -rf "${GENIMAGE_TMP}"
    
        #
        # outputpath: default: images Mandatory path where all images are written to (must exist).
        # inputpath:  default: input This mandatory path is searched for input images, for example bootloader binaries, kernel images (must exist).
        # rootpath:   default: root Mandatory path to the root filesystem (must exist).
        # tmppath:    default: tmp Optional path to a temporary directory. There must be enough space available here to hold a copy of the root filesystem.
        # config:     default: genimage.cfg Path to the genimage config file.
        #
        # ${TARGET_DIR} = /home/zengjf/zengjf/Buildroot/buildroot/output/target
        # ${GENIMAGE_TMP} = /home/zengjf/zengjf/Buildroot/buildroot/output/build/genimage.tmp
        # ${BINARIES_DIR} = /home/zengjf/zengjf/Buildroot/buildroot/output/images
        # ${BINARIES_DIR} = /home/zengjf/zengjf/Buildroot/buildroot/output/images
        # ${GENIMAGE_CFG} = /tmp/tmp.1Kks4kDC5mgenimage.cfg
        #
        genimage 
            --rootpath "${TARGET_DIR}" 
            --tmppath "${GENIMAGE_TMP}" 
            --inputpath "${BINARIES_DIR}" 
            --outputpath "${BINARIES_DIR}" 
            --config "${GENIMAGE_CFG}"
    
        // 删除配置文件
        rm -f ${GENIMAGE_CFG}
    
        exit $?
    }
    
    main $@
  • 相关阅读:
    远程接入系统的问题
    FastReport
    通用FASTREPORT打印模块及接口方法
    cxGrid控件过滤筛选后如何获更新筛选后的数据集
    Oracle Data Integrator 12c (12.1.2)新特性
    ODI 12c 安装
    Kafka面试题
    Hadoop面试题
    Spark面试题
    JAVA面试题-数组字符串基础
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/8334889.html
Copyright © 2020-2023  润新知