summaryrefslogtreecommitdiff
path: root/reinstall-recovery/recovery.sh
diff options
context:
space:
mode:
Diffstat (limited to 'reinstall-recovery/recovery.sh')
-rw-r--r--reinstall-recovery/recovery.sh193
1 files changed, 193 insertions, 0 deletions
diff --git a/reinstall-recovery/recovery.sh b/reinstall-recovery/recovery.sh
new file mode 100644
index 0000000..2131c95
--- /dev/null
+++ b/reinstall-recovery/recovery.sh
@@ -0,0 +1,193 @@
+#! /bin/sh
+
+#Enviroment variables
+boot_part=/dev/mtd4
+rootfs_mtd_num=5
+rootfs_part=/dev/mtd${rootfs_mtd_num}
+ubuntu_dir=/nand_previous
+kernel_image=/sd_card/uzImage.bin
+ramdisk_image=/sd_card/initrd.img
+
+
+#This is the recovery script used to re-install or recover the FOSSEE-OS.
+
+#This is initial function which is called, also this is the first screen that comes up in this process.
+#Seq-1
+image()
+{
+echo ""
+echo ""
+echo " ==========================================================================================================================="
+echo "|| ||"
+echo "|| ||"
+echo "|| ||"
+echo "|| FOSSEE NOTEBOOK ||"
+echo "|| INSTALLER ||"
+echo "|| ||"
+echo "|| ||"
+echo "|| ||"
+echo " ==========================================================================================================================="
+echo ""
+echo ""
+echo ""
+}
+
+init()
+{
+printf "\t\tPress [A/a] to go to advanced options or [I/i] to re-install the FOSSEE-OS?"
+read -s -n 1 choose_key
+if [ $choose_key = "A" ] || [ $choose_key = "a" ]; then
+ advanced
+elif [ $choose_key = "I" ] || [ $choose_key = "i" ]; then
+ install
+elif [ $choose_key = "" ] || [ $choose_key = " " ]; then
+ echo ""
+ echo -e "\t\tPlease enter a valid choice"
+ init
+else
+ echo ""
+ echo -e "\t\tPlease enter a valid choice"
+ init
+fi
+}
+
+#This function validates the users choice of re-installation.
+#Seq- 1->I->2
+
+install()
+{
+echo ""
+echo ""
+printf "\t\tDo you want to continue with the installation?\n"
+printf "\t\tPress [Y/y] to continue, [N/n] to go back to the previous menu."
+read -s -n 1 key
+if [ $key = "Y" ] || [ $key = "y" ]; then
+ installation
+elif [ $key = "N" ] || [ $key = "n" ]; then
+ /mnt/busybox clear
+ image
+ init
+else
+ echo ""
+ echo -e "\t\tPlease enter a valid choice"
+ install
+fi
+}
+
+#This function is where the actual installation is done.
+#Seq- 1->I->2->3
+
+installation()
+{
+
+ echo ""
+ echo ""
+ echo -e "\t\tThe installation is underway, do not exit..."
+ # exit 0
+ mkdir $ubuntu_dir
+
+ mkdir /sd_card
+ mount /dev/mmcblk0p1 /sd_card
+
+ if [ $(echo $?) -eq 0 ]; then
+ flash_erase $rootfs_part 0 0 > /dev/null
+ else
+ echo -e"\t\tSD card not mounted"
+ sleep 3
+ exit 0
+ fi
+ ubiattach /dev/ubi_ctrl -m $rootfs_mtd_num > /dev/null
+ ubimkvol /dev/ubi0 -N ubuntu-rootfs -m > /dev/null
+ if [ $(echo $?) -eq 0 ]; then
+ mount -t ubifs ubi0_0 $ubuntu_dir
+ else
+ echo -e "\t\tubimkvol failed"
+ sleep 3
+ exit 0
+ fi
+ #Insert progress bar here.
+ sh /mnt/bar /sd_card/fossee-os.tar.gz | tar xzpf - -C /nand_previous
+ sync
+
+ umount $ubuntu_dir
+ # /bin/sh
+ echo ""
+ echo -e "\t\tInstallation complete."
+ sleep 2
+ echo ""
+ umount /dev/mmcblk0p1
+ printf "\t\tPress ENTER to restart.[ Please remove the SD card first ]"
+ read read_restart
+ if $read_restart; then
+ reboot
+ else
+ echo "It shouldn't come here"
+ fi
+
+}
+#This functions presents the user with advanecd options where he/she can backup their data from previous installation or repair the current installation through shell prompt.
+#Seq- 1->A->2
+
+advanced()
+{
+#This will detect the previous mtd partiton.
+prev_mtd_part=$(cat /proc/mtd | grep "ubuntu-rootfs" | cut -b 4)
+echo ""
+echo ""
+echo -e "\t\tTrying to access previous installation"
+printf "\t\tMounting SD card"
+mkdir /sd_card
+mount /dev/mmcblk0p1 /sd_card
+for i in `seq 1 2`
+ do
+ printf "."
+ sleep 1
+ done
+echo ""
+echo -e "\t\tYou may backup your essential files and folders or repair your previous installation.\n
+\t\tThis will now fallback to a command prompt"
+#This will take the user to his previous installation.
+mkdir -p /nand_previous
+ubiattach /dev/ubi_ctrl -m $prev_mtd_part
+#ubimkvol /dev/ubi0 -N ubuntu-rootfs -m
+mount -t ubifs ubi0_0 /nand_previous
+/mnt/busybox clear
+/bin/sh
+/mnt/busybox clear
+reinstall
+}
+
+#This function is used for re-installating the OS after successfully backing-up the users data.
+#Seq- 1->A->2->3
+
+reinstall()
+{
+echo ""
+echo ""
+image
+printf "\t\tDo you want to reinstall the FOSSEE operating system?[Y/N]"
+read RET
+if [ "$RET" = "Y" ] || [ "$RET" = "y" ]; then
+ umount /nand_previous
+ umount /dev/mmcblk0p1
+ ubidetach -d 0 /dev/ubi_ctrl
+ rmdir /nand_previous
+ rmdir /sd_card
+ install
+elif [ "$RET" = "N" ] || [ "$RET" = "n" ]; then
+ umount /nand_previous
+ printf "\t\tPress ENTER to reboot. [ Please remove the SD card first ]"
+ read $restart_key
+ if $restart_key; then
+ reboot
+ else
+ echo "It should not come here."
+ fi
+else
+ echo "Please enter a valid choice"
+ reinstall
+fi
+}
+image
+init
+