1. #!/bin/bash
  2.  
  3. # 参考文章:
  4. # . Shell特殊变量:Shell $, $#, $*, $@, $?, $$和命令行参数
  5. # http://c.biancheng.net/cpp/view/2739.html
  6.  
  7. # <CMD state="Updater" type="push" body="send" file="mksdcard-android.sh.tar">Sending partition shell</CMD>
  8. # <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
  9. # <CMD state="Updater" type="push" body="$ sh mksdcard-android.sh /dev/mmcblk0"> Partitioning...</CMD>
  10. # <CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd partition</CMD>
  11.  
  12. # partition size in MB
  13. BOOTLOAD_RESERVE= # bootload 8MB
  14. BOOT_ROM_SIZE= # 启动rom 8MB
  15. SYSTEM_ROM_SIZE= # 系统rom 512MB
  16. CACHE_SIZE= # 缓存 512MB
  17. RECOVERY_ROM_SIZE= # 恢复rom 8MB
  18. VENDER_SIZE= # 供货商 8MB
  19. MISC_SIZE= # 杂项 8MB
  20.  
  21. help() {
  22.  
  23. # basename String [ Suffix ]
  24. # basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,
  25. # 并将剩余的基本文件名称写至标准输出。
  26. bn=`basename $`
  27. cat << EOF
  28. usage $bn <option> device_node
  29.  
  30. options:
  31. -h displays this help message
  32. -s only get partition size
  33. -np not partition.
  34. -f flash android image.
  35. EOF
  36.  
  37. }
  38.  
  39. # check the if root?
  40. # 检查当前是否拥有root权限
  41. userid=`id -u`
  42. if [ $userid -ne "" ]; then
  43. echo "you're not root?"
  44. exit
  45. fi
  46.  
  47. # parse command line
  48. # 解析命令行参数
  49. moreoptions=
  50. node="na"
  51. cal_only=
  52. flash_images=
  53. not_partition=
  54. not_format_fs=
  55. # $#: 传递给脚本或函数的参数个数。
  56. #
  57. # $ sh mksdcard-android.sh /dev/mmcblk0
  58. # $: /dev/mmcblk0
  59. #
  60. # moreoptions:
  61. # node: /dev/mmcblk0
  62. while [ "$moreoptions" = -a $# -gt ]; do
  63. case $ in
  64. -h) help; exit ;;
  65. -s) cal_only= ;;
  66. -f) flash_images= ;;
  67. -np) not_partition= ;;
  68. -nf) not_format_fs= ;;
  69. *) moreoptions=; node=$ ;;
  70. esac
  71. [ "$moreoptions" = ] && [ $# -gt ] && help && exit
  72. [ "$moreoptions" = ] && shift
  73. done
  74.  
  75. # 如果node设备节点不存在,那么就退出程序
  76. if [ ! -e ${node} ]; then
  77. help
  78. exit
  79. fi
  80.  
  81. # call sfdisk to create partition table
  82. # 调用sfdisk来创建分区表
  83. # get total card size
  84. # extend_size 增加了这个分量,同时data_size减小了这个分量,所以磁盘总量不变
  85. seprate=
  86. # -s [or --show-size]: 显示一个分区的大小,单位是KB。
  87. total_size=`sfdisk -s ${node}`
  88. total_size=`expr ${total_size} / ` # 重新计算,将单位换算成MB
  89. boot_rom_sizeb=`expr ${BOOT_ROM_SIZE} + ${BOOTLOAD_RESERVE}`
  90. extend_size=`expr ${SYSTEM_ROM_SIZE} + ${CACHE_SIZE} + ${VENDER_SIZE} + ${MISC_SIZE} + ${seprate}`
  91. data_size=`expr ${total_size} - ${boot_rom_sizeb} - ${RECOVERY_ROM_SIZE} - ${extend_size} + ${seprate}`
  92.  
  93. # create partitions
  94. if [ "${cal_only}" -eq "" ]; then
  95. cat << EOF
  96. BOOT : ${boot_rom_sizeb}MB
  97. RECOVERY: ${RECOVERY_ROM_SIZE}MB
  98. SYSTEM : ${SYSTEM_ROM_SIZE}MB
  99. CACHE : ${CACHE_SIZE}MB
  100. DATA : ${data_size}MB
  101. MISC : ${MISC_SIZE}MB
  102. EOF
  103. exit
  104. fi
  105.  
  106. # destroy the partition table
  107. # 删除以前的分区表,从这里可以看出,分区表的大小貌似是1024字节
  108. dd if=/dev/zero of=${node} bs= count=
  109.  
  110. sfdisk --force -uM ${node} << EOF
  111. ,${boot_rom_sizeb},
  112. ,${RECOVERY_ROM_SIZE},
  113. ,${extend_size},
  114. ,${data_size},
  115. ,${SYSTEM_ROM_SIZE},
  116. ,${CACHE_SIZE},
  117. ,${VENDER_SIZE},
  118. ,${MISC_SIZE},
  119. EOF
  120.  
  121. # adjust the partition reserve for bootloader.
  122. # if you don't put the uboot on same device, you can remove the BOOTLOADER_ERSERVE
  123. # to have 8M space.
  124. # the minimal sylinder for some card is 4M, maybe some was 8M
  125. # just 8M for some big eMMC 's sylinder
  126. # -N# : 只改变分区的编号 #
  127. sfdisk --force -uM ${node} -N1 << EOF
  128. ${BOOTLOAD_RESERVE},${BOOT_ROM_SIZE},
  129. EOF
  130.  
  131. # For MFGTool Notes:
  132. # MFGTool use mksdcard-android.tar store this script
  133. # if you want change it.
  134. # do following:
  135. # tar xf mksdcard-android.sh.tar
  136. # vi mksdcard-android.sh
  137. # [ edit want you want to change ]
  138. # 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. JDBC连接数据库(一)

    原文地址http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步 ...

  2. [环境配置] 如何为Apache绑定多IP多域名

    在Apache服务器上绑定方法比较简单,主要因为Apache是个开源独立的服务器软件,而且支持跨平台安装和配置,支持丰富的API扩展,所以很多人对Apache的好感要甚于IIS,Apache的优点就不 ...

  3. Linux 基础 —— Linux 进程的管理与监控

    这篇文章主要讲 Linux 中进程的概念和进程的管理工具.原文:http://liaoph.com/inux-process-management/ 进程的概念 什么是进程 进程(Process)是计 ...

  4. INNODB索引与算法

    在之前的博文中简单提到了索引的分类与索引的可选择性查看:Click HERE 这片博客主要包含内容:索引组织表,索引算法B+树简单介绍 索引组织表 在innodb存储引擎中,表都是根据主键顺序组织存放 ...

  5. object类之toString方法

    object是所有类的基类 如果没有使用extends关键字指明其基类,则默认基类为object类 public class Person{ ........ } 等价于: public class ...

  6. Element-UI中Upload上传文件前端缓存处理

    Element-UI对于文件上传组件的功能点着重于文件传递到后台处理,所以要求action为必填属性.但是如果需要读取本地文件并在前端直接处理,文件就没有必要传递到后台,比如在本地打开一个JSON文件 ...

  7. JAVA面试题整理(6)-JVM

    JVM 1.详细jvm内存模型 2.讲讲什么情况下回出现内存溢出,内存泄漏? 3.说说Java线程栈 4.JVM 年轻代到年老代的晋升过程的判断条件是什么呢? 5.JVM 出现 fullGC 很频繁, ...

  8. linux及安全第八周总结——20135227黄晓妍

    实验部分 实验环境搭建 -rm menu -rf git clone https://github.com/megnning/menu.git cd menu make rootfs qemu -ke ...

  9. luogu P1605 迷宫

    https://www.luogu.org/problem/show?pid=1605 就很实在的深搜  我就是模拟的地图搜索  没想到竟然1A了   给了我很大的信心 #include<bit ...

  10. Codeforces Beta Round #57 (Div. 2) A,B,C,D,E

    A. Ultra-Fast Mathematician time limit per test 2 seconds memory limit per test 256 megabytes input ...