Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- die( )
- {
- echo $1 >&2 ; exit 1
- }
- doit( )
- {
- echo "+ $*" >&2 ; $* || die "command failed"
- }
- unmount( )
- {
- for dev in `mount | grep ^$1 | cut -f 1 -d ' '` ; do doit umount $dev ; done
- }
- last( )
- {
- ls -d $* 2>/dev/null | tail -1
- }
- check( )
- {
- result=1
- partitions=( `sudo fdisk -l | grep ^$1 | cut -d " " -f 1` )
- if [ ${#partitions[@]} -eq 2 ]
- then
- file -sL ${partitions[0]} | grep \"System > /dev/null 2>&1 &&
- file -sL ${partitions[1]} | grep \"Storage\" > /dev/null 2>&1 &&
- result=0
- elif [ ${#partitions[@]} -eq 0 ]
- then
- die "Error: $1 is invalid"
- fi
- return $result
- }
- [ $# -ne 1 ] && die "Usage: sudo `basename $0` /dev/sdb"
- device=$1
- device1=${device}1
- device2=${device}2
- bootloader=`last build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*`
- system=`last target/OpenELEC-RPi.arm-devel-*.system`
- kernel=`last target/OpenELEC-RPi.arm-devel-*.kernel`
- mount="/tmp/media/System"
- [ -e "$device" ] || die "Error: $device is not found"
- [ "$bootloader" == "" ] && die "Error: Unable to find bootloader - you need to run this script in your openelectv build directory"
- [ "$system" == "" ] && die "Error: Unable to find system - you need to run this script in your openelectv build directory"
- [ "$kernel" == "" ] && die "Error: Unable to find kernel - you need to run this script in your openelectv build directory"
- echo "Updating $device with:"
- echo
- echo "bootloader = $bootloader"
- echo "system = $system"
- echo "kernel = $kernel"
- echo
- echo -n "Do you want to continue (y/n)? "
- read answer
- [ "$answer" != "y" ] && exit 0
- echo
- unmount $device
- if ! check $device
- then
- echo
- echo "This sd card has not be paritioned for openelec - continuing will destroy"
- echo "the contents of the disk."
- echo
- echo -n "Are you sure you want to continue (y/n)? "
- read answer
- [ "$answer" != "y" ] && exit 0
- echo
- doit parted -s $device mklabel msdos
- doit parted -s $device unit cyl mkpart primary fat32 -- 0 16
- doit parted -s $device set 1 boot on
- doit parted -s $device unit cyl mkpart primary ext2 -- 16 -2
- doit mkfs.vfat -n System $device1
- doit mkfs.ext4 -L Storage $device2
- doit partprobe
- fi
- doit mkdir -p $mount
- doit mount $device1 $mount
- doit cp $bootloader/arm128_start.elf $mount/start.elf
- doit cp $bootloader/bootcode.bin $mount
- doit cp $bootloader/loader.bin $mount
- doit cp $system $mount/SYSTEM
- doit cp $kernel $mount/kernel.img
- echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 ssh quiet" > cmdline.txt
- doit cp cmdline.txt $mount/cmdline.txt
- rm cmdline.txt
- doit sync
- doit umount $device1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement