zoukankan      html  css  js  c++  java
  • I.MX6 mkuserimg.sh hacking

    /***********************************************************************
     *                  I.MX6 mkuserimg.sh hacking
     * 说明:
     *     上次发现Android源码使用mkuserimg.sh来打包Android文件系统,现在来
     * 跟踪一下其内部的工作机制。
     *
     *                                   2016-6-28 深圳 南山平山村 曾剑锋
     **********************************************************************/
    
    
    #!/bin/bash -x
    #
    # To call this script, make sure make_ext4fs is somewhere in PATH
    
    function usage() {
    cat<<EOT
    Usage:
    mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [FILE_CONTEXTS]
    EOT
    }
    
    # 显示环境变量
    echo "in mkuserimg.sh PATH=$PATH"
    
    # 获取第一个命令行参数,用完之后移除第一个命令行参数
    ENABLE_SPARSE_IMAGE=
    if [ "$1" = "-s" ]; then
      ENABLE_SPARSE_IMAGE="-s"
      shift
    fi
    
    # 这里是检查除了-s第一参数以外,还剩下的参数个数
    if [ $# -ne 4 -a $# -ne 5 -a $# -ne 6 ]; then
      usage
      exit 1
    fi
    
    # 获取并检查源目录
    SRC_DIR=$1
    if [ ! -d $SRC_DIR ]; then
      echo "Can not find directory $SRC_DIR!"
      exit 2
    fi
    
    # 获取相应的数据
    OUTPUT_FILE=$2
    EXT_VARIANT=$3
    MOUNT_POINT=$4
    SIZE=$5
    FC=$6
    
    # 目前仅仅支持ext4的制作,其他类型的文件都会直接退出
    case $EXT_VARIANT in
      ext4) ;;
      *) echo "Only ext4 is supported!"; exit 3 ;;
    esac
    
    # 接下来也是检查各个参数的正确性
    if [ -z $MOUNT_POINT ]; then
      echo "Mount point is required"
      exit 2
    fi
    
    if [ -z $SIZE ]; then
        SIZE=128M
    fi
    
    if [ -n "$FC" ]; then
        FCOPT="-S $FC"
    fi
    
    # 生成命令,显示命令,执行命令,检查命令执行结果
    MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
    echo $MAKE_EXT4FS_CMD
    $MAKE_EXT4FS_CMD
    if [ $? -ne 0 ]; then
      exit 4
    fi
    
    # mkuserimg.sh out/target/product/sabresd_6dq/system out/target/product/sabresd_6dq/obj/PACKAGING/systemimage_intermediates/system.img ext4 system 293601280
  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5623118.html
Copyright © 2011-2022 走看看