#!/bin/bash

# 参考文章:
# . Shell特殊变量:Shell $, $#, $*, $@, $?, $$和命令行参数
# http://c.biancheng.net/cpp/view/2739.html # <CMD state="Updater" type="push" body="send" file="mksdcard-android.sh.tar">Sending partition shell</CMD>
# <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
# <CMD state="Updater" type="push" body="$ sh mksdcard-android.sh /dev/mmcblk0"> Partitioning...</CMD>
# <CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd partition</CMD> # partition size in MB
BOOTLOAD_RESERVE= # bootload 8MB
BOOT_ROM_SIZE= # 启动rom 8MB
SYSTEM_ROM_SIZE= # 系统rom 512MB
CACHE_SIZE= # 缓存 512MB
RECOVERY_ROM_SIZE= # 恢复rom 8MB
VENDER_SIZE= # 供货商 8MB
MISC_SIZE= # 杂项 8MB help() { # basename String [ Suffix ]
# basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,
# 并将剩余的基本文件名称写至标准输出。
bn=`basename $`
cat << EOF
usage $bn <option> device_node options:
-h displays this help message
-s only get partition size
-np not partition.
-f flash android image.
EOF } # check the if root?
# 检查当前是否拥有root权限
userid=`id -u`
if [ $userid -ne "" ]; then
echo "you're not root?"
exit
fi # parse command line
# 解析命令行参数
moreoptions=
node="na"
cal_only=
flash_images=
not_partition=
not_format_fs=
# $#: 传递给脚本或函数的参数个数。
#
# $ sh mksdcard-android.sh /dev/mmcblk0
# $: /dev/mmcblk0
#
# moreoptions:
# node: /dev/mmcblk0
while [ "$moreoptions" = -a $# -gt ]; do
case $ in
-h) help; exit ;;
-s) cal_only= ;;
-f) flash_images= ;;
-np) not_partition= ;;
-nf) not_format_fs= ;;
*) moreoptions=; node=$ ;;
esac
[ "$moreoptions" = ] && [ $# -gt ] && help && exit
[ "$moreoptions" = ] && shift
done # 如果node设备节点不存在,那么就退出程序
if [ ! -e ${node} ]; then
help
exit
fi # call sfdisk to create partition table
# 调用sfdisk来创建分区表
# get total card size
# extend_size 增加了这个分量,同时data_size减小了这个分量,所以磁盘总量不变
seprate=
# -s [or --show-size]: 显示一个分区的大小,单位是KB。
total_size=`sfdisk -s ${node}`
total_size=`expr ${total_size} / ` # 重新计算,将单位换算成MB
boot_rom_sizeb=`expr ${BOOT_ROM_SIZE} + ${BOOTLOAD_RESERVE}`
extend_size=`expr ${SYSTEM_ROM_SIZE} + ${CACHE_SIZE} + ${VENDER_SIZE} + ${MISC_SIZE} + ${seprate}`
data_size=`expr ${total_size} - ${boot_rom_sizeb} - ${RECOVERY_ROM_SIZE} - ${extend_size} + ${seprate}` # create partitions
if [ "${cal_only}" -eq "" ]; then
cat << EOF
BOOT : ${boot_rom_sizeb}MB
RECOVERY: ${RECOVERY_ROM_SIZE}MB
SYSTEM : ${SYSTEM_ROM_SIZE}MB
CACHE : ${CACHE_SIZE}MB
DATA : ${data_size}MB
MISC : ${MISC_SIZE}MB
EOF
exit
fi # destroy the partition table
# 删除以前的分区表,从这里可以看出,分区表的大小貌似是1024字节
dd if=/dev/zero of=${node} bs= count= sfdisk --force -uM ${node} << EOF
,${boot_rom_sizeb},
,${RECOVERY_ROM_SIZE},
,${extend_size},
,${data_size},
,${SYSTEM_ROM_SIZE},
,${CACHE_SIZE},
,${VENDER_SIZE},
,${MISC_SIZE},
EOF # adjust the partition reserve for bootloader.
# if you don't put the uboot on same device, you can remove the BOOTLOADER_ERSERVE
# to have 8M space.
# the minimal sylinder for some card is 4M, maybe some was 8M
# just 8M for some big eMMC 's sylinder
# -N# : 只改变分区的编号 #
sfdisk --force -uM ${node} -N1 << EOF
${BOOTLOAD_RESERVE},${BOOT_ROM_SIZE},
EOF # For MFGTool Notes:
# MFGTool use mksdcard-android.tar store this script
# if you want change it.
# do following:
# tar xf mksdcard-android.sh.tar
# vi mksdcard-android.sh
# [ edit want you want to change ]
# rm mksdcard-android.sh.tar; tar cf mksdcard-android.sh.tar mksdcard-android.sh

I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking的更多相关文章

  1. I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking

    #!/bin/sh # 参考文章: # . MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.gi ...

  2. I.MX6 Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide translate

    Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide Contents(目录) Contents(目录)     ...

  3. I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking

    <!-- * Copyright (C) 2010-2013, Freescale Semiconductor, Inc. All Rights Reserved. * The CFG elem ...

  4. JMeter Nmon Tool V2.0 插件

    很早之前宝路已将nmon监控功能集成到了JMeter中,自己在使用旧版本时,也有诸多不满意的地方.趁着五一假期(基本都是晚上,白天要陪孩子),对插件底层代码进行了重构,自己还要反复测试调整,最晚的一次 ...

  5. AM335x Android eMMC mkmmc-android.sh hacking

    # AM335x Android eMMC mkmmc-android.sh hacking # # . 有空解读一下android的分区文件. # . 代码来源:https://github.com ...

  6. I.MX6 mkuserimg.sh hacking

    /*********************************************************************** * I.MX6 mkuserimg.sh hackin ...

  7. I.MX6 eMMC 中启动U-boot存放的首地址

    /************************************************************************************ * I.MX6 eMMC 中 ...

  8. I.MX6 Linux U-boot 环境变量解析

    /********************************************************************************** * I.MX6 Linux U- ...

  9. I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking

    /******************************************************************** * I.MX6 mfgtool2-android-mx6q- ...

随机推荐

  1. pip 解决 ImportError: cannot import name 'main'

    当 pip 更新至最新版的时候,不管是执行 pip list 还说 pip install packageName 安装包,都会抛出一个异常 Traceback (most recent call l ...

  2. Linux系统——FTP

    FTP连接及传输模式1. 控制连接:TCP21,用于发送FTP命令信息2. 数据连接:TCP20,用于上传.下载数据3. 数据连接的建立类型:(1)主动模式:服务器制动发起数据连接首先由客户端向服务端 ...

  3. A Practical Guide to Support Vector Classi cation

    <A Practical Guide to Support Vector Classication>是一篇libSVM使用入门教程以及一些实用技巧. 1. Basic Kernels: ( ...

  4. EditPlus 4.3.2473 中文版已经发布(10月21日更新)

    新的 EditPlus 修复了如下问题: * Ctrl+鼠标拖放文本功能异常 * 上传文件到 FTP 服务器失败后将弹出对话框,可重试上传 * 列选模式下粘贴到现存的选中内容时文本错乱的问题 本博客已 ...

  5. PDO的三种连接数据库的方式

    PDO的三种连接数据库的方式   PDO的出现是为了解决PHP与各个数据库的连接处理都有各自的函数的问题,它的高度抽象,使得使用起来极其的方便.由于最常用的搭配就是PHP+Mysql,所以这里就以连接 ...

  6. Ubuntu16.04下配置pip国内镜像源加速安装【转】

    本文转载自:https://blog.csdn.net/yucicheung/article/details/79095742 问题描述 基于国内网速的问题,我们直接pip安装包通常速度非常慢,而且经 ...

  7. linux下如何kill tty终端

    答:一共有两个步骤,如下: 1.列出打开的终端 who 2.kill需要kill的tty终端 pkill -kill -t pts/2

  8. [参考]用递归的方法获取 字符 对应的 二进制字符串 (C/C++)

    将字符转换为16进制字符串.十进制字符串可以参考这里:https://www.cnblogs.com/stxs/p/8846545.html 代码及调试结果 举例:字符'a',查ASCII码表它对应的 ...

  9. 解决Tomcat端口被占用 及 启用失败等其它错误整理册

    使用管理员模式启动命令行工具. netstat -ano|findstr 获取了pid号 taskkill /pid /f 其中6428为pid号,可能有不同. -------- 有时遇到其它问题可以 ...

  10. POJ 2337 Catenyms

    http://poj.org/problem?id=2337 题意: 判断给出的单词能否首尾相连,输出字典序最小的欧拉路径. 思路: 因为要按字典序大小输出路径,所以先将字符串排序,这样加边的时候就会 ...