Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1151162
  • 博文数量: 222
  • 博客积分: 5262
  • 博客等级: 大校
  • 技术积分: 3028
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-22 19:10
文章分类

全部博文(222)

文章存档

2012年(2)

2011年(192)

2010年(28)

分类: LINUX

2011-03-31 20:16:20

已经测试过在Fedora10上运行顺利,需要root权限才可以执行

  1. #! /bin/bash  
  2. # written by cpuwolf@gmail.com 2010  
  3. mountpt=/media/disk  
  4. devicename=sdb  
  5. sdcard=/dev/$devicename  
  6.   
  7. if test $# -le 0 ; then  
  8.     echo "Error: needs IROM image path"  
  9.     exit 1  
  10. fi  
  11. infile="$1"  
  12. if [ -e $infile ] ; then  
  13.     echo "IROM image: $infile"  
  14. else  
  15.     echo "IROM image: $infile does not existing"  
  16.     exit 1  
  17. fi  
  18. imagelen=`wc -c < $infile`  
  19. echo "IROM image Size: $imagelen bytes"  
  20.   
  21. if [ -e /sys/block/$devicename/removable ] ; then  
  22.         removable=$(cat /sys/block/$devicename/removable)  
  23. else  
  24.         echo "SD card: /dev/$devicename is not existing"  
  25.         exit 1;  
  26. fi  
  27. if [ ! $removable == "1" ]; then  
  28.         echo "/dev/$devicename is not removable"  
  29.     exit 1;  
  30. fi  
  31. if [ -e /sys/block/$devicename/queue/hw_sector_size ] ; then  
  32.     sectorsize=$(cat /sys/block/$devicename/queue/hw_sector_size)  
  33.     echo "SD card sector size: $sectorsize bytes"  
  34.     if ! test $sectorsize -eq 512 ; then  
  35.         echo "Warning: sector size is not 512"  
  36.     fi  
  37. fi  
  38. if [ -e /sys/block/$devicename/size ] ; then  
  39.     numsectors=$(cat /sys/block/$devicename/size)  
  40.     echo "SD card total size: $numsectors sectors"  
  41. fi  
  42. disksize=`expr $numsectors \* $sectorsize`  
  43. echo "SD card total size: $disksize bytes"  
  44. reservedsize=`expr $sectorsize \* 2`  
  45. endsize=`expr $reservedsize + $imagelen`  
  46. diskoffset=`expr $disksize - $endsize`  
  47. echo "IROM image is writen to offset: $diskoffset (bytes)"  
  48. diskoffsetsector=`expr $diskoffset / $sectorsize`  
  49. echo "IROM image is writen to offset: $diskoffsetsector (sectors)"  
  50. issectoralign=`expr $diskoffset % $sectorsize`  
  51. if ! test $issectoralign -eq 0 ; then  
  52.     echo "Warning: IROM image size is not align on sectors"  
  53. fi  
  54. echo "start flushing IROM image..."  
  55. dd if=$infile of=/dev/$devicename bs=$sectorsize seek=$diskoffsetsector > /dev/null 2>&1 && echo "flush successful" || echo "Error: flush"  

阅读(1781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~