九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 2929|回复: 0
打印 上一主题 下一主题

PC端自动烧写脚本,s5pv210-burn-android.sh

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-27 11:58:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此脚本在ubuntu系统中可以直接烧写镜像update.bin至外部SD卡中,基于xboot的镜像升级系统

脚本如下:
  1. #!/bin/sh
  2. # burn script

  3. INAND_DEVICE=/dev/sdb

  4. BURN_DIR=/tmp/burn
  5. UPDATE_DIR=$BURN_DIR/update
  6. SYSTEM_DIR=$BURN_DIR/system
  7. DATA_DIR=$BURN_DIR/data
  8. CACHE_DIR=$BURN_DIR/cache

  9. do_setup_environment()
  10. {
  11.         mkdir -p $BURN_DIR || { return 1; }
  12.         mkdir -p $UPDATE_DIR || { return 1; }
  13.         mkdir -p $SYSTEM_DIR || { return 1; }
  14.         mkdir -p $DATA_DIR || { return 1; }
  15.         mkdir -p $CACHE_DIR || { return 1; }

  16.         umount ${INAND_DEVICE}1;
  17.         umount ${INAND_DEVICE}2;
  18.         umount ${INAND_DEVICE}3;
  19.         umount ${INAND_DEVICE}4;
  20.         umount ${UPDATE_DIR};

  21.         sync; sync; sync;

  22.         return 0;
  23. }

  24. do_fdisk_del_partition()
  25. {
  26.         [ -z "$1" ] && { return 1; }
  27.         [ -b $1 ] || { return 1; }

  28. fdisk $1 << EOF
  29. d
  30. 1
  31. d
  32. 2
  33. d
  34. 3
  35. d
  36. 4
  37. w
  38. EOF
  39.        
  40.         sync;
  41.         sync;
  42.         sync;

  43.         return 0;
  44. }

  45. do_fdisk_new_partition()
  46. {
  47.         [ -z "$1" ] && { return 1; }
  48.         [ -b $1 ] || { return 1; }

  49. fdisk $1 << EOF
  50. n
  51. p
  52. 1
  53. +256M
  54. +256M
  55. n
  56. p
  57. 2
  58. +544M
  59. +256M
  60. n
  61. p
  62. 3
  63. +832M
  64. +256M
  65. n
  66. p
  67. +1120M

  68. w
  69. EOF
  70.        
  71.         sync;
  72.         sync;
  73.         sync;

  74.         return 0;
  75. }

  76. do_mkfs_vfat()
  77. {
  78.         [ -z "$1" ] && { return 1; }

  79.         mkfs.vfat $1 || { return 1; }
  80.         return 0;
  81. }

  82. do_mkfs_ext4()
  83. {
  84.         [ -z "$1" ] && { return 1; }

  85.         mkfs.ext4 -q $1 || { return 1; }
  86.         return 0;
  87. }

  88. do_mount_updatebin()
  89. {
  90.         [ -z "$1" -o -z "$2" ] && { return 1; }
  91.         [ -f $1 ] || { return 1; }
  92.         [ -d $2 ] || { return 1; }

  93.         mount -t romfs -o loop $1 $2 || { return 1; }
  94.         return 0;
  95. }

  96. do_umount_updatebin()
  97. {
  98.         [ -d $1 ] || { return 1; }

  99.         umount $1 || { return 1; }
  100.         return 0;
  101. }

  102. do_check_updatebin()
  103. {
  104.         [ -d $1 ] || { return 1; }
  105.         cd $1 || { return 1; }

  106.         md5sum -c md5sum.txt || { return 1; }
  107.         return 0;
  108. }

  109. do_mount_system()
  110. {
  111.         [ -z "$1" -o -z "$2" ] && { return 1; }
  112.         [ -b $1 ] || { return 1; }
  113.         [ -d $2 ] || { return 1; }

  114.         mount -t ext4 $1 $2 || { return 1; }
  115.         return 0;
  116. }

  117. do_umount_system()
  118. {
  119.         [ -d $1 ] || { return 1; }

  120.         umount $1 || { return 1; }
  121.         return 0;
  122. }

  123. do_mount_data()
  124. {
  125.         [ -z "$1" -o -z "$2" ] && { return 1; }
  126.         [ -b $1 ] || { return 1; }
  127.         [ -d $2 ] || { return 1; }

  128.         mount -t ext4 $1 $2 || { return 1; }
  129.         return 0;
  130. }

  131. do_umount_data()
  132. {
  133.         [ -d $1 ] || { return 1; }

  134.         umount $1 || { return 1; }
  135.         return 0;
  136. }

  137. do_mount_cache()
  138. {
  139.         [ -z "$1" -o -z "$2" ] && { return 1; }
  140.         [ -b $1 ] || { return 1; }
  141.         [ -d $2 ] || { return 1; }

  142.         mount -t ext4 $1 $2 || { return 1; }
  143.         return 0;
  144. }

  145. do_umount_cache()
  146. {
  147.         [ -d $1 ] || { return 1; }

  148.         umount $1 || { return 1; }
  149.         return 0;
  150. }

  151. do_burn_system()
  152. {
  153.         [ -z "$1" -o -z "$2" ] && { return 1; }
  154.         [ -f $1 ] || { return 1; }
  155.         [ -d $2 ] || { return 1; }

  156.         rm -fr $2/* || { return 1; }
  157.         tar xvf $1 -C $2 || { return 1; }
  158.         return 0;
  159. }

  160. do_burn_data()
  161. {
  162.         [ -z "$1" -o -z "$2" ] && { return 1; }
  163.         [ -f $1 ] || { return 1; }
  164.         [ -d $2 ] || { return 1; }

  165.         rm -fr $2/* || { return 1; }
  166.         tar xvf $1 -C $2 || { return 1; }
  167.         return 0;
  168. }

  169. do_burn_xboot()
  170. {
  171.         [ -z "$1" -o -z "$2" ] && { return 1; }
  172.         [ -f $1 ] || { return 1; }
  173.         [ -b $2 ] || { return 1; }

  174.         dd if=$1 of=$2 bs=512 seek=1 conv=sync || { return 1; }
  175.         return 0;
  176. }

  177. do_burn_kernel_android()
  178. {
  179.         [ -z "$1" -o -z "$2" ] && { return 1; }
  180.         [ -f $1 ] || { return 1; }
  181.         [ -b $2 ] || { return 1; }

  182.         dd if=$1 of=$2 bs=512 seek=40960 conv=sync || { return 1; }
  183.         return 0;
  184. }

  185. do_burn_kernel_initrd()
  186. {
  187.         [ -z "$1" -o -z "$2" ] && { return 1; }
  188.         [ -f $1 ] || { return 1; }
  189.         [ -b $2 ] || { return 1; }

  190.         dd if=$1 of=$2 bs=512 seek=81920 conv=sync || { return 1; }
  191.         return 0;
  192. }

  193. do_error()
  194. {
  195.         if [ ! -z "$1" ]; then
  196.                 echo $1;
  197.         fi

  198.         sync;
  199.         exit 0;
  200. }

  201. burnxboot=no;
  202. burnkernel=no;
  203. burnsystem=no;
  204. burncache=no;
  205. burndata=no;

  206. if [ -z $1 ]; then
  207.         burnxboot=yes;
  208.         burnkernel=yes;
  209.         burnsystem=yes;
  210.         burncache=yes;
  211.         burndata=yes;
  212. fi

  213. while [ "$1" ]; do
  214.     case "$1" in
  215.         -b|--bootloader)
  216.                 burnxboot=yes;
  217.             ;;
  218.         -k|--kernel)
  219.                 burnkernel=yes;
  220.             ;;
  221.         -s|--system)
  222.                 burnsystem=yes;
  223.             ;;
  224.         -d|--data)
  225.                 burndata=yes;
  226.             ;;
  227.         -c|--cache)
  228.                 burncache=yes;
  229.             ;;
  230.         -a|--all)
  231.                 burnxboot=yes;
  232.                 burnkernel=yes;
  233.                 burnsystem=yes;
  234.                 burncache=yes;
  235.                 burndata=yes;
  236.             ;;
  237.         -h|--help)
  238.             cat >&2 <<EOF
  239. Usage: burn [OPTION]
  240. burn script for burn system image.

  241.   -b, --bootloader     burn bootloader
  242.   -k, --kernel         burn kernel
  243.   -s, --system         burn system
  244.   -d, --data           burn data
  245.   -c, --cache          burn cache
  246.   -a, --all            burn all, include anything
  247.   -h, --help           display this help and exit
  248. EOF
  249.             exit 0
  250.             ;;
  251.         *)
  252.             echo "burn: Unrecognised option $1" >&2
  253.             exit 1
  254.             ;;
  255.     esac
  256.     shift
  257. done

  258. echo "setup environment ..."
  259. do_setup_environment || { do_error "fail to setup environment"; }

  260. echo "mount update.bin ..."
  261. [ -f ./update.bin ] || { echo "update.bin does not exist"; exit 1; }
  262. do_mount_updatebin ./update.bin ${UPDATE_DIR} || { do_error "fail to mount update.bin"; }

  263. echo "check update.bin ..."
  264. do_check_updatebin ${UPDATE_DIR} || { do_error "update.bin not correct"; }

  265. echo "re-partition inand";
  266. do_fdisk_del_partition ${INAND_DEVICE} || { do_error "fail to delete partition of inand"; }
  267. do_fdisk_new_partition ${INAND_DEVICE} || { do_error "fail to create partition of inand"; }

  268. echo "waiting 3 second ..."
  269. sleep 3;

  270. echo "format ${INAND_DEVICE}1 ..."
  271. do_mkfs_ext4 ${INAND_DEVICE}1 || { do_error "fail to format ${INAND_DEVICE}1"; }

  272. echo "format ${INAND_DEVICE}2 ..."
  273. do_mkfs_ext4 ${INAND_DEVICE}2 || { do_error "fail to format ${INAND_DEVICE}2"; }

  274. echo "format ${INAND_DEVICE}3 ..."
  275. do_mkfs_ext4 ${INAND_DEVICE}3 || { do_error "fail to format ${INAND_DEVICE}3"; }

  276. echo "format ${INAND_DEVICE}4 ..."
  277. do_mkfs_ext4 ${INAND_DEVICE}4 || { do_error "fail to format ${INAND_DEVICE}4"; }

  278. if [ "${burnxboot}" = yes ]; then
  279.         echo "write bootloader ...";
  280.         do_burn_xboot ${UPDATE_DIR}/xboot.bin ${INAND_DEVICE} || { do_error "fail to write bootloader"; }
  281. fi

  282. if [ "${burnkernel}" = yes ]; then
  283.         echo "write kernel ...";
  284.         do_burn_kernel_android ${UPDATE_DIR}/zImage-android ${INAND_DEVICE} || { do_error "fail to write android kernel"; }
  285.         do_burn_kernel_initrd ${UPDATE_DIR}/zImage-initrd ${INAND_DEVICE} || { do_error "fail to write initrd kernel"; }
  286. fi

  287. if [ "${burnsystem}" = yes ]; then
  288.         echo "write system ...";
  289.         do_mount_system ${INAND_DEVICE}2 ${SYSTEM_DIR} || { do_error "fail to mount system"; }
  290.         do_burn_system ${UPDATE_DIR}/system.tar ${SYSTEM_DIR} || { do_error "fail to write system"; }
  291.         do_umount_system ${SYSTEM_DIR} || { do_error "fail to umount system"; }
  292. fi

  293. if [ "${burncache}" = yes ]; then
  294.         echo "write cache ...";
  295.         do_mount_cache ${INAND_DEVICE}3 ${CACHE_DIR} || { do_error "fail to mount cache"; }
  296.         do_umount_cache ${CACHE_DIR} || { do_error "fail to umount cache"; }
  297. fi

  298. if [ "${burndata}" = yes ]; then
  299.         echo "write data ...";
  300.         do_mount_data ${INAND_DEVICE}4 ${DATA_DIR} || { do_error "fail to mount data"; }
  301.         do_burn_data ${UPDATE_DIR}/data.tar ${DATA_DIR} || { do_error "fail to write data"; }
  302.         do_umount_data ${DATA_DIR} || { do_error "fail to umount data"; }
  303. fi

  304. echo "umount some resource ..."
  305. cd /;
  306. do_umount_updatebin ${UPDATE_DIR};

  307. sync; sync; sync;
  308. do_error "update successed";
  309. exit 0;
复制代码
升级步骤:
1) 将update.bin拷贝至脚本当前目录;
2) 插入待烧写的系统卡,运行命令 sudo ./s5pv210-burn-android.sh -a
3) 等待至烧写完成,可更换另一张系统卡继续烧写;


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2024-5-4 14:50 , Processed in 0.035621 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表