blob: 0fc3a0fe1a6007b0a01f09db25aafe62074ccd7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#!/sbin/busybox sh
set +x
_PATH="$PATH"
export PATH=/sbin
busybox cd /
busybox date >>boot.txt
exec >>boot.txt 2>&1
busybox rm /init
# include device specific vars
source /sbin/bootrec-device
# create directories
busybox mkdir -m 755 -p /dev/block
busybox mkdir -m 755 -p /dev/input
busybox mkdir -m 555 -p /proc
busybox mkdir -m 755 -p /sys
# create device nodes
busybox mknod -m 600 /dev/block/mmcblk0 b 179 0
busybox mknod -m 600 ${BOOTREC_EVENT_NODE}
busybox mknod -m 666 /dev/null c 1 3
# mount filesystems
busybox mount -t proc proc /proc
busybox mount -t sysfs sysfs /sys
# trigger amber LED
busybox echo 255 > ${BOOTREC_LED_RED}
busybox echo 0 > ${BOOTREC_LED_GREEN}
busybox echo 255 > ${BOOTREC_LED_BLUE}
# keycheck
busybox cat ${BOOTREC_EVENT} > /dev/keycheck&
busybox sleep 3
# android ramdisk
load_image=/sbin/ramdisk.cpio
# boot decision
if [ -s /dev/keycheck ] || busybox grep -q warmboot=0x77665502 /proc/cmdline ; then
busybox echo 'RECOVERY BOOT' >>boot.txt
# orange led for recoveryboot
busybox echo 255 > ${BOOTREC_LED_RED}
busybox echo 100 > ${BOOTREC_LED_GREEN}
busybox echo 0 > ${BOOTREC_LED_BLUE}
# recovery ramdisk
busybox mknod -m 600 ${BOOTREC_FOTA_NODE}
busybox mount -o remount,rw /
busybox ln -sf /sbin/busybox /sbin/sh
extract_elf_ramdisk -i ${BOOTREC_FOTA} -o /sbin/ramdisk-recovery.cpio -t / -c
busybox rm /sbin/sh
load_image=/sbin/ramdisk-recovery.cpio
else
busybox echo 'ANDROID BOOT' >>boot.txt
# poweroff LED
busybox echo 0 > ${BOOTREC_LED_RED}
busybox echo 0 > ${BOOTREC_LED_GREEN}
busybox echo 0 > ${BOOTREC_LED_BLUE}
fi
# kill the keycheck process
busybox pkill -f "busybox cat ${BOOTREC_EVENT}"
# unpack the ramdisk image
busybox cpio -i < ${load_image}
busybox umount /proc
busybox umount /sys
busybox rm -fr /dev/*
busybox date >>boot.txt
export PATH="${_PATH}"
exec /init
|