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
  • 相关阅读:
    浅析匿名内部类
    Neo4j学习实录 下载-安装-springboot操作neo4j
    Objective-C内存管理教程和原理剖析2
    Objective-C内存管理教程和原理剖析
    Objective-C语法快速参考
    Objective-C语法
    一点基础的东西:Objective-C的类型和常量
    IOS开发之----异常处理
    UITextField的详细使用
    TextField知多少
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5623118.html
Copyright © 2011-2022 走看看