3 SYSTEM_RECOVERY_GUI="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery.gui"
4 SYSTEM_RECOVERY_NON_GUI="@SYSTEM_RECOVERY_LIBEXEC_DIR@/system-recovery.non_gui"
8 BLKID="/usr/sbin/blkid"
9 REBOOT="@INITRD_RECOVERY_LIBEXEC_DIR@/minireboot"
11 UMOUNT="/usr/bin/umount"
14 MKDIR="/usr/bin/mkdir"
15 RMDIR="/usr/bin/rmdir"
18 #------------------------------------------------
20 #------------------------------------------------
22 PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=ROOTFS -o device || "$BLKID" --match-token LABEL=rootfs -o device)
23 PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=SYSTEM-DATA -o device || "$BLKID" --match-token LABEL=system-data -o device)
24 PART_USER=$("$BLKID" --match-token PARTLABEL=USER -o device || "$BLKID" --match-token LABEL=user -o device)
27 #------------------------------------------------
28 # mount_usb_partitions
29 #------------------------------------------------
30 USB_MOUNTPOINT_PREFIX=${FAKE_ROOT}/opt/media/USBDrive
31 mount_usb_partitions() {
32 echo "mount USB partitions"
38 for DEVICE_TYPE in ${DEVICE_TYPE_LIST[@]}
40 DEVICES=$("$BLKID" /dev/sd?? -t TYPE="${DEVICE_TYPE}" -o device)
41 for DEVICE in ${DEVICES}
43 USB_MOUNTPOINT_INDEX=$(echo ${DEVICE} | "$CUT" -b 8- | "$TR" '[:lower:]' '[:upper:]')
44 USB_MOUNTPOINT=${USB_MOUNTPOINT_PREFIX}${USB_MOUNTPOINT_INDEX}
45 "$MKDIR" ${USB_MOUNTPOINT}
46 "$MOUNT" -t ${DEVICE_TYPE} ${DEVICE} ${USB_MOUNTPOINT}
51 #------------------------------------------------
53 #------------------------------------------------
55 echo "mount partitions"
58 "$MOUNT" -t ext4 ${PART_ROOTFS} ${FAKE_ROOT} -o ro
59 "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/opt
60 "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/opt/usr
62 "$MOUNT" -t proc none ${FAKE_ROOT}/proc
63 "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
64 "$MOUNT" -t smackfs smackfs ${FAKE_ROOT}/sys/fs/smackfs
65 "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
66 "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
67 "$MOUNT" -t tmpfs tmpfs ${FAKE_ROOT}/tmp -o mode=1777,smackfsroot=*
72 #------------------------------------------------
73 # umount_usb_partitions
74 #------------------------------------------------
75 umount_usb_partitions() {
76 echo "umount USB partitions"
77 USB_MOUNTPOINTS=$("$LS" -d ${USB_MOUNTPOINT_PREFIX}*)
78 for USB_MOUNTPOINT in ${USB_MOUNTPOINTS}
80 "$UMOUNT" ${USB_MOUNTPOINT}
81 "$RMDIR" ${USB_MOUNTPOINT}
85 #------------------------------------------------
87 #------------------------------------------------
89 echo "umount partitions"
94 "$UMOUNT" ${FAKE_ROOT}/opt/usr
95 "$UMOUNT" ${FAKE_ROOT}/opt
96 "$UMOUNT" ${FAKE_ROOT}
99 #------------------------------------------------
101 #------------------------------------------------
113 #------------------------------------------------
114 # system-recovery initrc
115 #------------------------------------------------
116 echo "Starting system recovery."
119 # For debugging - It should be deleted on Release
120 /sbin/agetty -l /bin/sh -n --keep-baud 115200,38400,9600 ttyS1 linux &
122 [ -x "${SYSTEM_RECOVERY_GUI}" ] && "${SYSTEM_RECOVERY_GUI}" || "${SYSTEM_RECOVERY_NON_GUI}"