I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
#!/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的更多相关文章
- I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
#!/bin/sh # 参考文章: # . MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.gi ...
- 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(目录) ...
- I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking
<!-- * Copyright (C) 2010-2013, Freescale Semiconductor, Inc. All Rights Reserved. * The CFG elem ...
- JMeter Nmon Tool V2.0 插件
很早之前宝路已将nmon监控功能集成到了JMeter中,自己在使用旧版本时,也有诸多不满意的地方.趁着五一假期(基本都是晚上,白天要陪孩子),对插件底层代码进行了重构,自己还要反复测试调整,最晚的一次 ...
- AM335x Android eMMC mkmmc-android.sh hacking
# AM335x Android eMMC mkmmc-android.sh hacking # # . 有空解读一下android的分区文件. # . 代码来源:https://github.com ...
- I.MX6 mkuserimg.sh hacking
/*********************************************************************** * I.MX6 mkuserimg.sh hackin ...
- I.MX6 eMMC 中启动U-boot存放的首地址
/************************************************************************************ * I.MX6 eMMC 中 ...
- I.MX6 Linux U-boot 环境变量解析
/********************************************************************************** * I.MX6 Linux U- ...
- I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
/******************************************************************** * I.MX6 mfgtool2-android-mx6q- ...
随机推荐
- lvs原理及各种调度算法详解
LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 ...
- Java 和 Python 解析动态 key 的 JSON 数据
一.概述 解析JSON过程中,什么情况都可能遇到.遇到特殊的情况,不会怎么办?肯定不是设计的问题,一定是你的姿势不对. 有这样一种JSON需要解析: { "b3444533f6544&quo ...
- flask nginx+uwsgi超时设置
最近使用uwsgi+nginx经常程序执行一般就跳转到nginx报错页面,查看停止时程序日志还在写,nginx报错upstream timeout排查怀疑是超时的问题 设置nginx uwsgi_co ...
- Python中的MySQL接口:PyMySQL & MySQLdb
MySQLdb模块只支持MySQL-3.23到5.5之间的版本,只支持Python-2.4到2.7之间的版本 PyMySQL支持 Python3.0以后的版本 PyMySQL https://pypi ...
- Http请求中Content-Type
1. Content-Type MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求 ...
- mongodb的分片
分片是把大型数据集合进行分区成更小的可管理的片的过程. 副本集的每一个成员(仲裁节点除外)都一份数据的完整拷贝! 分片的目的:在节省硬件成本的基础上,提高系统的整体性能.但是却增加了管理和性能的开销. ...
- php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
在升级了php7.2.0版本之后,重新启动php-fpm过程中遇到一个报错. An another FPM instance seems to already listen on /tmp/php-c ...
- 20145105 《Java程序设计》第1周学习总结
20145105 <Java程序设计>第1周学习总结 教材学习内容总结 学习了教材的第一章后,我初步了解了Java的发展历程,以及什么是JCP,JSR,JVM.JCP是一个开放性国际组织, ...
- jz2440-uboot-201204版本移植【学习笔记】【原创】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 PC环境:ubuntu18.04 一.uboot ...
- hdu 6430 线段树 暴力维护
Problem E. TeaTree Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Oth ...