280c96856312337266df7f1e517d3cca8a14d1e1
[platform/core/system/system-recovery.git] / scripts / recovery-init.in
1 #!/bin/sh
2
3 PATH=/bin:/usr/bin:/sbin:/usr/sbin
4 SYSTEM_RECOVERY="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery"
5 SYSTEM_RECOVERY_GUI="/usr/bin/system-recovery_gui"
6
7 MOUNT="/usr/bin/mount"
8 BLKID="/usr/sbin/blkid"
9 REBOOT="@INITRD_RECOVERY_LIBEXEC_DIR@/minireboot"
10 SYNC="/usr/bin/sync"
11 UMOUNT="/usr/bin/umount"
12 CUT="/usr/bin/cut"
13 LS="/usr/bin/ls"
14 MKDIR="/usr/bin/mkdir"
15 RMDIR="/usr/bin/rmdir"
16 TR="/usr/bin/tr"
17
18 #------------------------------------------------
19 #       mount_usb_partitions
20 #------------------------------------------------
21 USB_MOUNTPOINT_PREFIX=@USB_MOUNTPOINT_ROOT@/@USB_MOUNTPOINT_PREFIX@
22 mount_usb_partitions() {
23     echo "mount USB partitions"
24     DEVICE_TYPE_LIST=(
25         ext4
26         vfat
27     )
28
29     LAST_MOUNTED_DEVICE=""
30     for DEVICE_TYPE in ${DEVICE_TYPE_LIST[@]}
31     do
32         DEVICES=""
33         for ((i=0; i<10; i++))
34         do
35             DEVICES=$("$BLKID" /dev/sd* -t TYPE="${DEVICE_TYPE}" -o device)
36             if [ ! -z "${DEVICES}" ]
37             then
38                 for DEVICE in ${DEVICES}
39                 do
40                     USB_MOUNTPOINT_INDEX=$(echo ${DEVICE} | "$CUT" -b 8- | "$TR" '[:lower:]' '[:upper:]')
41                     USB_MOUNTPOINT=${USB_MOUNTPOINT_PREFIX}${USB_MOUNTPOINT_INDEX}
42                     "$MKDIR" -p ${USB_MOUNTPOINT}
43                     "$MOUNT" -t ${DEVICE_TYPE} ${DEVICE} ${USB_MOUNTPOINT}
44
45                     LAST_MOUNTED_DEVICE=${DEVICE}
46                 done
47                 break
48             fi
49
50             sleep 1
51         done
52     done
53
54     if [ -z "${LAST_MOUNTED_DEVICE}" ]
55     then
56         echo "WARNING : USB not mounted"
57     fi
58 }
59
60 #------------------------------------------------
61 #       umount_usb_partitions
62 #------------------------------------------------
63 umount_usb_partitions() {
64     echo "umount USB partitions"
65     USB_MOUNTPOINTS=$("$LS" -d ${USB_MOUNTPOINT_PREFIX}*)
66     for USB_MOUNTPOINT in ${USB_MOUNTPOINTS}
67     do
68         "$UMOUNT" ${USB_MOUNTPOINT}
69         "$RMDIR" ${USB_MOUNTPOINT}
70     done
71 }
72
73 #------------------------------------------------
74 #       do_reboot
75 #------------------------------------------------
76 do_reboot() {
77     echo "Reboot"
78     "$SYNC"
79     "$REBOOT"
80     while [ 1 ]
81     do
82         sleep 1
83         echo "."
84     done
85 }
86
87 #------------------------------------------------
88 #       system-recovery initrc
89 #------------------------------------------------
90 echo "Starting system recovery."
91 mount_usb_partitions
92
93 # For debugging - It should be deleted on Release
94 /sbin/agetty -l /bin/sh -n --keep-baud 115200,38400,9600 ttyS1 linux &
95
96 [ -x "${SYSTEM_RECOVERY_GUI}" ] && "${SYSTEM_RECOVERY_GUI}" &
97 [ -x "${SYSTEM_RECOVERY}" ] && "${SYSTEM_RECOVERY}"
98
99 umount_usb_partitions
100 do_reboot