Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env bash
  2.  
  3. die( )
  4. {
  5.     echo $1 >&2 ; exit 1
  6. }
  7.  
  8. doit( )
  9. {
  10.     echo "+ $*" >&2 ; $* || die "command failed"
  11. }
  12.  
  13. unmount( )
  14. {
  15.     for dev in `mount | grep ^$1 | cut -f 1 -d ' '` ; do doit umount $dev ; done
  16. }
  17.  
  18. last( )
  19. {
  20.     ls -d $* 2>/dev/null | tail -1
  21. }
  22.  
  23. check( )
  24. {
  25.     result=1
  26.     partitions=( `sudo fdisk -l | grep ^$1 | cut -d " " -f 1` )
  27.     if [ ${#partitions[@]} -eq 2 ]
  28.     then
  29.         file -sL ${partitions[0]} | grep \"System > /dev/null 2>&1 &&
  30.         file -sL ${partitions[1]} | grep \"Storage\" > /dev/null 2>&1 &&
  31.         result=0
  32.     elif [ ${#partitions[@]} -eq 0 ]
  33.     then
  34.         die "Error: $1 is invalid"
  35.     fi
  36.    
  37.     return $result
  38. }
  39.  
  40. [ $# -ne 1 ] && die "Usage: sudo `basename $0` /dev/sdb"
  41.  
  42. device=$1
  43. device1=${device}1
  44. device2=${device}2
  45.  
  46. bootloader=`last build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*`
  47. system=`last target/OpenELEC-RPi.arm-devel-*.system`
  48. kernel=`last target/OpenELEC-RPi.arm-devel-*.kernel`
  49.  
  50. mount="/tmp/media/System"
  51.  
  52. [ -e "$device" ] || die "Error: $device is not found"
  53. [ "$bootloader" == "" ] && die "Error: Unable to find bootloader - you need to run this script in your openelectv build directory"
  54. [ "$system" == "" ] && die "Error: Unable to find system - you need to run this script in your openelectv build directory"
  55. [ "$kernel" == "" ] && die "Error: Unable to find kernel - you need to run this script in your openelectv build directory"
  56.  
  57. echo "Updating $device with:"
  58. echo
  59. echo "bootloader = $bootloader"
  60. echo "system     = $system"
  61. echo "kernel     = $kernel"
  62. echo
  63. echo -n "Do you want to continue (y/n)? "
  64.  
  65. read answer
  66.  
  67. [ "$answer" != "y" ] && exit 0
  68.  
  69. echo
  70.  
  71. unmount $device
  72.  
  73. if ! check $device
  74. then
  75.     echo
  76.     echo "This sd card has not be paritioned for openelec - continuing will destroy"
  77.     echo "the contents of the disk."
  78.     echo
  79.     echo -n "Are you sure you want to continue (y/n)? "
  80.  
  81.     read answer
  82.  
  83.     [ "$answer" != "y" ] && exit 0
  84.  
  85.     echo
  86.  
  87.     doit parted -s $device mklabel msdos
  88.     doit parted -s $device unit cyl mkpart primary fat32 -- 0 16
  89.     doit parted -s $device set 1 boot on
  90.     doit parted -s $device unit cyl mkpart primary ext2 -- 16 -2
  91.  
  92.     doit mkfs.vfat -n System $device1
  93.     doit mkfs.ext4 -L Storage $device2
  94.     doit partprobe
  95. fi
  96.  
  97. doit mkdir -p $mount
  98. doit mount $device1 $mount
  99.  
  100. doit cp $bootloader/arm128_start.elf $mount/start.elf
  101. doit cp $bootloader/bootcode.bin $mount
  102. doit cp $bootloader/loader.bin $mount
  103.  
  104. doit cp $system $mount/SYSTEM
  105. doit cp $kernel $mount/kernel.img
  106.  
  107. echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 ssh quiet" > cmdline.txt
  108. doit cp cmdline.txt $mount/cmdline.txt
  109. rm cmdline.txt
  110.  
  111. doit sync
  112.  
  113. doit umount $device1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement