blob: 280c96856312337266df7f1e517d3cca8a14d1e1 (
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
SYSTEM_RECOVERY="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery"
SYSTEM_RECOVERY_GUI="/usr/bin/system-recovery_gui"
MOUNT="/usr/bin/mount"
BLKID="/usr/sbin/blkid"
REBOOT="@INITRD_RECOVERY_LIBEXEC_DIR@/minireboot"
SYNC="/usr/bin/sync"
UMOUNT="/usr/bin/umount"
CUT="/usr/bin/cut"
LS="/usr/bin/ls"
MKDIR="/usr/bin/mkdir"
RMDIR="/usr/bin/rmdir"
TR="/usr/bin/tr"
#------------------------------------------------
# mount_usb_partitions
#------------------------------------------------
USB_MOUNTPOINT_PREFIX=@USB_MOUNTPOINT_ROOT@/@USB_MOUNTPOINT_PREFIX@
mount_usb_partitions() {
echo "mount USB partitions"
DEVICE_TYPE_LIST=(
ext4
vfat
)
LAST_MOUNTED_DEVICE=""
for DEVICE_TYPE in ${DEVICE_TYPE_LIST[@]}
do
DEVICES=""
for ((i=0; i<10; i++))
do
DEVICES=$("$BLKID" /dev/sd* -t TYPE="${DEVICE_TYPE}" -o device)
if [ ! -z "${DEVICES}" ]
then
for DEVICE in ${DEVICES}
do
USB_MOUNTPOINT_INDEX=$(echo ${DEVICE} | "$CUT" -b 8- | "$TR" '[:lower:]' '[:upper:]')
USB_MOUNTPOINT=${USB_MOUNTPOINT_PREFIX}${USB_MOUNTPOINT_INDEX}
"$MKDIR" -p ${USB_MOUNTPOINT}
"$MOUNT" -t ${DEVICE_TYPE} ${DEVICE} ${USB_MOUNTPOINT}
LAST_MOUNTED_DEVICE=${DEVICE}
done
break
fi
sleep 1
done
done
if [ -z "${LAST_MOUNTED_DEVICE}" ]
then
echo "WARNING : USB not mounted"
fi
}
#------------------------------------------------
# umount_usb_partitions
#------------------------------------------------
umount_usb_partitions() {
echo "umount USB partitions"
USB_MOUNTPOINTS=$("$LS" -d ${USB_MOUNTPOINT_PREFIX}*)
for USB_MOUNTPOINT in ${USB_MOUNTPOINTS}
do
"$UMOUNT" ${USB_MOUNTPOINT}
"$RMDIR" ${USB_MOUNTPOINT}
done
}
#------------------------------------------------
# do_reboot
#------------------------------------------------
do_reboot() {
echo "Reboot"
"$SYNC"
"$REBOOT"
while [ 1 ]
do
sleep 1
echo "."
done
}
#------------------------------------------------
# system-recovery initrc
#------------------------------------------------
echo "Starting system recovery."
mount_usb_partitions
# For debugging - It should be deleted on Release
/sbin/agetty -l /bin/sh -n --keep-baud 115200,38400,9600 ttyS1 linux &
[ -x "${SYSTEM_RECOVERY_GUI}" ] && "${SYSTEM_RECOVERY_GUI}" &
[ -x "${SYSTEM_RECOVERY}" ] && "${SYSTEM_RECOVERY}"
umount_usb_partitions
do_reboot
|