bdf53387f0667d7a38f06e45c1c970e163082591
[platform/core/system/system-recovery.git] / src / system-recovery / recovery-init.in
1 #!/bin/sh
2
3 SYSTEM_RECOVERY_GUI="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery.gui"
4 SYSTEM_RECOVERY_NON_GUI="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery.non_gui"
5 FAKE_ROOT=/system
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
13 #------------------------------------------------
14 #       get partition id
15 #------------------------------------------------
16 get_partition_id() {
17     PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=ROOTFS -o device || "$BLKID" --match-token LABEL=rootfs -o device)
18     PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=SYSTEM-DATA -o device || "$BLKID" --match-token LABEL=system-data -o device)
19     PART_USER=$("$BLKID" --match-token PARTLABEL=USER -o device || "$BLKID" --match-token LABEL=user -o device)
20 }
21
22 #------------------------------------------------
23 #       mount_partitions
24 #------------------------------------------------
25 mount_partitions() {
26     echo "mount partitions"
27     get_partition_id
28
29     "$MOUNT" -t ext4 ${PART_ROOTFS} ${FAKE_ROOT} -o ro
30     "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/opt
31     "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/opt/usr
32
33     "$MOUNT" -t proc none ${FAKE_ROOT}/proc
34     "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
35     "$MOUNT" -t smackfs smackfs ${FAKE_ROOT}/sys/fs/smackfs
36     "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
37     "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
38     "$MOUNT" -t tmpfs tmpfs ${FAKE_ROOT}/tmp -o mode=1777,smackfsroot=*
39 }
40
41 #------------------------------------------------
42 #       umount_partitions
43 #------------------------------------------------
44 umount_partitions() {
45     echo "umount partitions"
46    "$SYNC"
47
48     "$UMOUNT" ${FAKE_ROOT}/opt/usr
49     "$UMOUNT" ${FAKE_ROOT}/opt
50     "$UMOUNT" ${FAKE_ROOT}
51 }
52
53 #------------------------------------------------
54 #       do_reboot
55 #------------------------------------------------
56 do_reboot() {
57     echo "Reboot"
58     "$SYNC"
59     "$REBOOT"
60     while [ 1 ]
61     do
62         sleep 1
63         echo "."
64     done
65 }
66
67 #------------------------------------------------
68 #       system-recovery initrc
69 #------------------------------------------------
70 echo "Starting system recovery."
71 mount_partitions
72
73 # For debugging - It should be deleted on Release
74 /sbin/agetty -l /bin/sh -n --keep-baud 115200,38400,9600 ttyS1 linux &
75
76 [ -x "${SYSTEM_RECOVERY_GUI}" ] && "${SYSTEM_RECOVERY_GUI}" || "${SYSTEM_RECOVERY_NON_GUI}"
77
78 umount_partitions
79 do_reboot