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 |