7c6cf17452f9a6cd81d681ef883e6bbc8d2f0e61
[platform/core/system/initrd-recovery.git] / src / initrd-recovery / init
1 #!/bin/sh
2
3 export PATH=/usr/bin:/bin:/usr/sbin:/sbin
4
5 FAKE_ROOT=/system
6 FAKE_ROOT_RO=/system-ro
7 INFORM_PATH=/mnt/inform
8
9 STATUS_DIR=${FAKE_ROOT}/opt/data/recovery
10 STATUS_FILE=${STATUS_DIR}/RW.STATUS
11 DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH
12
13 SYNC="/bin/sync"
14 MKDIR="/bin/mkdir"
15 MOUNT="/bin/mount"
16 UMOUNT="/bin/umount"
17 REBOOT="/sbin/reboot"
18 BLKID="/usr/sbin/blkid"
19
20 #------------------------------------------------
21 #       mount_partitions
22 #------------------------------------------------
23 mount_partitions() {
24     "$MOUNT" -t proc none /proc
25     "$MOUNT" -t sysfs none /sys
26     "$MOUNT" -t smackfs smackfs /smack
27     "$MOUNT" -t tmpfs tmpfs /run -o rw,nosuid,nodev,mode=755
28     "$MOUNT" -t tmpfs tmpfs /tmp -o mode=1777,smackfsroot=*
29
30     "$MKDIR" /dev/pts
31     "$MOUNT" -t devpts devpts /dev/pts
32 }
33
34 #------------------------------------------------
35 #       mount_inform
36 #------------------------------------------------
37 mount_inform() {
38     PART_INFORM=$("$BLKID" -L "inform" -o device)
39     if [ "z$PART_INFORM" != "z" ]; then
40         "$MKDIR" -p ${INFORM_PATH}
41         "$MOUNT" -t ext4 ${PART_INFORM} ${INFORM_PATH}
42     fi
43 }
44
45 #------------------------------------------------
46 #       do_reboot
47 #------------------------------------------------
48 do_reboot() {
49     echo "Reboot"
50     "$SYNC"
51     "$REBOOT"
52     while [ 1 ]
53     do
54         sleep 1
55         echo "."
56     done
57 }
58
59 #------------------------------------------------
60 #       Main Routine Start
61 #------------------------------------------------
62 echo "You entered into /sbin/init on initrd"
63
64 mount_partitions
65 mount_inform
66
67 cd /
68
69 # Manually parse /proc/cmdline to avoid additional tools on image
70 read cmdline </proc/cmdline
71 echo "Kernel command line: $cmdline"
72 set -- $cmdline
73 while [ $# -gt 0 ]; do
74     key="${1%%=*}"
75     if [ "$key" = "bootmode" ]; then
76         BOOT_MODE="${1#*=}"
77         break;
78     fi
79     shift
80 done
81
82 if [ "z$BOOT_MODE" = "z" ]; then
83     echo "BOOT_MODE was NOT defined!!"
84     echo "Do reboot!!"
85     do_reboot
86 fi
87 echo "BOOTMODE is ${BOOT_MODE}"
88
89 if [ -f /sbin/${BOOT_MODE}-init ]; then
90     exec "/sbin/${BOOT_MODE}-init"
91 else
92     echo "no ${BOOT_MODE}-init!!"
93     echo "Do reboot!!"
94     do_reboot
95 fi