View difference between Paste ID: iWijRbvT and 7yCBqcFh
SHOW: | | - or go back to the newest paste.
1
#!/usr/bin/env bash
2
3
die( )
4
{
5
	echo $1 ; exit 1
6
}
7
8
doit( )
9
{
10
	echo "+ $*"
11
	$* || die "command failed"
12
}
13
14
unmount( )
15
{
16
	devices=`mount | grep ^$1 | cut -f 1 -d ' '`
17
	for dev in $devices ; do doit umount $dev ; done
18
}
19
20
last( )
21
{
22
	ls -d $* | tail -1
23
}
24
25
check( )
26
{
27
	result=1
28
	partitions=( `sudo fdisk -l | grep ^$1 | cut -d " " -f 1` )
29
	if [ ${#partitions[@]} -eq 2 ]
30
	then
31
		file -sL ${partitions[0]} | grep \"System > /dev/null 2>&1 &&
32
		file -sL ${partitions[1]} | grep \"Storage\" > /dev/null 2>&1 &&
33
		result=0
34
	fi
35
	return $result
36
}
37
38
[ $# -ne 1 ] && die "Usage: sudo `basename $0` /dev/sdb"
39
40
device=$1
41
device1=${device}1
42
device2=${device}2
43
44
bootloader=`last build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*`
45
system=`last target/OpenELEC-RPi.arm-devel-*.system`
46
kernel=`last target/OpenELEC-RPi.arm-devel-*.kernel`
47
48
echo "Updating $device with:"
49
echo
50
echo "bootloader = $bootloader"
51
echo "system     = $system"
52
echo "kernel     = $kernel"
53
echo
54
echo -n "Do you want to continue (y/n)? "
55
56
read answer
57
58
[ "$answer" != "y" ] && exit 0
59
60
echo
61
62
unmount $device
63
64
if ! check $device
65
then
66
	doit parted -s $device mklabel msdos
67-
doit cp `last target/OpenELEC-RPi.arm-devel-*.system` /tmp/media/System/SYSTEM
67+
68-
doit cp `last target/OpenELEC-RPi.arm-devel-*.kernel` /tmp/media/System/kernel.img
68+
69
	doit parted -s $device unit cyl mkpart primary ext2 -- 16 -2
70
71
	doit mkfs.vfat -n System $device1
72
	doit mkfs.ext4 -L Storage $device2
73
	doit partprobe
74
fi
75
76
doit mkdir -p /tmp/media/System
77
doit mount $device1 /tmp/media/System
78
79
doit cp $bootloader/arm128_start.elf /tmp/media/System/start.elf
80
doit cp $bootloader/bootcode.bin /tmp/media/System/
81
doit cp $bootloader/loader.bin /tmp/media/System/
82
83
doit cp $system /tmp/media/System/SYSTEM
84
doit cp $kernel /tmp/media/System/kernel.img
85
86
echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 ssh quiet" > /tmp/media/System/cmdline.txt
87
88
doit sync
89
90
doit umount $device1