Advertisement
Guest User

install-dracos

a guest
Dec 5th, 2016
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 10.27 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #Installer dracOs Linux  Gnu/Linux
  4. #@author Zee Eichel, zee.eichel -at- indonesianbacktrack.or.id
  5. #@version $Id$
  6. #www.dutalinux.org
  7. #follow @dutalinux
  8.  
  9. VERSION=1.0
  10. : ${DIALOG=dialog}
  11.  
  12. if [ "$(id -u)" != "0" ]; then
  13.    echo "This script must be run as root" 1>&2
  14.    exit 1
  15. fi
  16.  
  17. command -v mksquashfs >/dev/null 2>&1 || { echo >&2 "require squashfs tools but it's not installed.  Aborting."; exit 1; }
  18. command -v dialog >/dev/null 2>&1 || { echo >&2 "require dialog but it's not installed.  Aborting."; exit 1; }
  19. command -v rsync >/dev/null 2>&1 || { echo >&2 "require rsync but it's not installed , aborting" ; exit 1;}
  20.  
  21. if [ -n "$1" ]; then
  22.     ACTION=$1
  23. else
  24.     ACTION=install
  25. fi
  26.  
  27. ARCH=`uname -m`
  28. DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
  29. CDROM=/dev/$DRIVE_NAME
  30. TMP_ROOT=/mnt/tmpdracOs
  31. TARGET_ROOT=/mnt/target
  32. KERNEL=vmlinuz-4.2-dracOs-x.x.x
  33. LOG=/var/log/dracOs-`uname -m`.log
  34. TITLEFOSH="dracOs `uname -m` GNU/Linux installer"
  35.  
  36. START_INSTALL_MSG="\nHola Tux , welcome to dracOsLinux Instalation. This setup will install dracOs `uname -m` into your host\n\n
  37. \Z4Continue and take the risk ?\Zn"
  38.  
  39. error_message()
  40. {
  41.     $DIALOG --title " Fail " \
  42.         --colors --backtitle "$TITLEFOSH" \
  43.         --clear --msgbox "\n$ERROR_MSG" 18 70
  44. }
  45.  
  46. check_retval()
  47. {
  48.     case $retval in
  49.         0)
  50.             continue ;;
  51.         1)
  52.             echo "\nL00zerz.\n" && exit 0 ;;
  53.         3)
  54.             continue ;;
  55.         255)
  56.             echo  "ESC presser.\n" && exit 0 ;;
  57.     esac
  58. }
  59.  
  60. start_installer()
  61. {
  62.     $DIALOG --title " dracOs Linux" \
  63.         --backtitle "$TITLEFOSH" \
  64.         --yes-label "Install" \
  65.         --no-label "Cancel" \
  66.         --clear --colors --yesno "$START_INSTALL_MSG" 18 70
  67.     retval=$?
  68.         case $retval in
  69.         0)
  70.             ACTION=install ;;
  71.         1)
  72.             echo  "\nSTOP.\n" && exit 0 ;;
  73.         3)
  74.             ACTION=upgrade ;;
  75.         255)
  76.             echo  "ESC presser.\n" && exit 0 ;;
  77.     esac
  78.     echo "Starting dracOs Installer: `date`" > $LOG
  79. }
  80.  
  81. mount_cdrom()
  82. {
  83.     ERROR_MSG=""
  84.     umount /media/cdrom 2>/dev/null
  85.     (
  86.     echo "XXX" && echo 30
  87.     echo "\nMounting Point Directory (/media/cdrom)..."
  88.     echo "XXX"
  89.     mkdir -p /media/cdrom
  90.     sleep 1
  91.     echo "XXX" && echo 60
  92.     echo "\nMount Poison Directory ($CDROM)..."
  93.     echo "XXX"
  94.     if mount -t iso9660 $CDROM /media/cdrom 2>>$LOG ;then
  95.     echo "XXX" && echo 90
  96.     echo "\nVerification Poison File..."
  97.     echo "XXX"
  98.     elif mount -t iso9660 /dev/hdc /media/cdrom 2>>$LOG ;then
  99.     echo "XXX" && echo 90
  100.     echo "\nVerification Poison File..."
  101.     echo "XXX"
  102.     else mount -t iso9660 /dev/cdrom /media/cdrom 2>>$LOG
  103.     echo "XXX" && echo 90
  104.     echo "\nVerification Poison File..."
  105.     echo "XXX"
  106.     fi
  107.     sleep 2
  108.     ) |
  109.     $DIALOG --title " Mount CDR " \
  110.         --backtitle "$TITLEFOSH" \
  111.         --gauge "Verification Poison File..." 18 70 0
  112.     if [ ! -f /media/cdrom/dracos/root.sfs ]; then
  113.         ERROR_MSG="\
  114. Cannot installing dracos\n\n
  115. The poison file cannot be found."
  116.         error_message
  117.         echo "missing: /media/cdrom/boot/x86_64/root.fs" >>$LOG
  118.         exit 1
  119.     fi
  120. }
  121.  
  122. #Partition Option
  123. ask_for_target_dev()
  124. {
  125.     exec 3>&1
  126.     TARGET_DEV=`$DIALOG --title "Root Partition" \
  127.         --backtitle "$TITLEFOSH" --clear \
  128.         --extra-label "List" --extra-button \
  129.         --colors --inputbox "\n
  130. enter the partition that you want for our setup, \
  131. exemple: '/dev/hda1'. Click \Z4'List' \Zn button for see all partition in your machinne \
  132. if you have some partition not register on our /etc/fstab, then you have to find it first manually.\n\n
  133. \Z2Partition Utility:\Zn" 18 70 2>&1 1>&3`
  134.     retval=$?
  135.     exec 3>&-
  136.     check_retval
  137.     if [ "$retval" = "3" ]; then
  138.         fdisk_list
  139.         ask_for_target_dev
  140.     fi
  141.  
  142.     if [ -z $TARGET_DEV ]; then
  143.         ask_for_target_dev
  144.     fi
  145.     # verification of partition
  146.     DEV_NAME=${TARGET_DEV#/dev/}
  147.     if cat /proc/partitions | grep -q $DEV_NAME; then
  148.         echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
  149.     else
  150.         ERROR_MSG="partition \Z2$TARGET_DEV\Zn n' not found."
  151.         error_message
  152.         ask_for_target_dev
  153.     fi
  154. }
  155.  
  156.  
  157. # function.
  158. fdisk_list()
  159. {
  160.     LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
  161.     $DIALOG --title "Partition Table" \
  162.         --backtitle "$TITLEFOSH" \
  163.         --clear --msgbox "\n
  164. Partition Table :\n\n
  165. $LIST_PARTITIONS" 18 70
  166. }
  167.  
  168. ask_for_mkfs_target_dev()
  169. {
  170.     $DIALOG --title " Format " \
  171.         --backtitle "$TITLEFOSH" \
  172.         --clear --colors --yesno "\n
  173. dracOs will be installed in partition : $TARGET_DEV\n\n
  174. Setup will be format this partition with ext2.\n\n
  175. \Z2Can we start now ?\Zn" 18 70
  176.     retval=$?
  177.     case $retval in
  178.         0)
  179.             MKFS_TARGET_DEV="ext2"
  180.             echo "mkfs_target_dev: ext2" >>$LOG ;;
  181.         1)
  182.             echo "mkfs_target_dev: stop" >>$LOG ;;
  183.         255)
  184.             echo "ESC presser.\n" && exit 0 ;;
  185.     esac
  186. }
  187.  
  188. prepare_target_dev()
  189. {
  190.     (
  191.     echo "XXX" && echo 30
  192.     echo "\nPartition preparation..."
  193.     echo "XXX"
  194.  
  195.     if mount | grep -q $TARGET_ROOT; then
  196.         umount $TARGET_ROOT 2>$LOG
  197.     fi
  198.     sleep 2
  199.         \
  200.     if [ "$MKFS_TARGET_DEV" == "ext2" ]; then
  201.         echo "XXX" && echo 60
  202.         echo "\nMkfs.ext2 execution on $ TARGET_DEV"
  203.         echo "XXX"
  204.         mkfs.ext2 $TARGET_DEV
  205.     else
  206.         echo "XXX" && echo 60
  207.         echo "\nThe partition ($TARGET_DEV) will be cleaned..."
  208.         echo "XXX"
  209.         sleep 2
  210.     fi
  211.  
  212.     echo "XXX" && echo 90
  213.     echo "\nCreating the mount point: $TARGET_ROOT"
  214.     echo "XXX"
  215.     mkdir -p $TMP_ROOT
  216.     mkdir -p $TARGET_ROOT
  217.     sleep 2
  218.  
  219.     ) |
  220.     $DIALOG --title "Preparation for ($TARGET_DEV)" \
  221.         --backtitle "$TITLEFOSH" \
  222.         --gauge " Mounting point..." 18 70 0
  223.     mount $TARGET_DEV $TARGET_ROOT
  224. }
  225.  
  226. ask_for_hostname()
  227. {
  228.     exec 3>&1
  229.     HOSTNAME=`$DIALOG --title " Hostname " \
  230.         --backtitle "$TITLEFOSH" --clear \
  231.         --colors --inputbox "\n
  232. Please specify the machine name to use for your comodos.\
  233. The machine name or 'hostname is used to identify your machine on\
  234. the local network and by the system (defaut: dracOs).\n\n
  235. \Z2hostname:\Zn" 18 70 "dracOs" 2>&1 1>&3`
  236.     retval=$?
  237.     exec 3>&-
  238.     check_retval
  239.  
  240.     if [ -z $HOSTNAME ]; then
  241.         HOSTNAME="dracOs"
  242.     fi
  243. }
  244.  
  245. mountsquash()
  246. {
  247. mount -o loop -t squashfs /media/cdrom/dracos/root.sfs $TMP_ROOT
  248. }
  249.  
  250. install_files()
  251. {
  252.     (
  253.  
  254.     echo "XXX" && echo 10
  255.     echo "\nCleaning the root partition if necessary..."
  256.     echo "XXX"
  257.  
  258.     echo "XXX" && echo 20
  259.     echo "\nInstalling the kernel ($KERNEL)..."
  260.     echo "XXX"
  261.  
  262.     echo "XXX" && echo 30
  263.     echo "\nmounting filesystem..."
  264.     echo "XXX"
  265.     mountsquash
  266.     sleep 2
  267.  
  268.     echo "XXX" && echo 40
  269.     echo "\nExtraction of root system ..."
  270.     echo "XXX"
  271.     extract_rootsfs
  272.  
  273.     echo "XXX" && echo 80
  274.     echo "\nPre System Configuration..."
  275.     echo "XXX"
  276.     pre_config_system
  277.  
  278.     echo "XXX" && echo 90
  279.     echo "\nGRUB Install (grub.cfg)..."
  280.     echo "XXX"
  281.         grub_config
  282.  
  283.     echo "XXX" && echo 100
  284.     echo "\nDone for now..."
  285.     echo "XXX"
  286.     echo "install_files: OK" >>$LOG
  287.     sleep 4
  288.  
  289.     ) |
  290.     $DIALOG --title " Installation files " \
  291.         --backtitle "$TITLEFOSH" \
  292.         --gauge "Installing the base system..." 18 70 0
  293. }
  294.  
  295.  
  296. extract_rootsfs()
  297. {
  298. declare PACKAGES=("$TMP_ROOT/bin" "$TMP_ROOT/dev" "$TMP_ROOT/boot" "$TMP_ROOT/etc" "$TMP_ROOT/home"
  299. "$TMP_ROOT/lib" "$TMP_ROOT/lib64" "$TMP_ROOT/media" "$TMP_ROOT/mnt" "$TMP_ROOT/opt" "$TMP_ROOT/proc" "$TMP_ROOT/root" "$TMP_ROOT/run" "$TMP_ROOT/sbin" "$TMP_ROOT/srv" "$TMP_ROOT/sys" "$TMP_ROOT/tmp" "$TMP_ROOT/usr" "$TMP_ROOT/var")
  300. NUM_PACKAGES=${#PACKAGES[*]}
  301. step=$((100/$NUM_PACKAGES))
  302. cur_file_idx=0
  303. counter=0
  304. (
  305. while :
  306. do
  307. cat <<EOF
  308. ${PACKAGES[$cur_file_idx]}
  309. XXX
  310. $counter
  311. $counter% progress
  312. $COMMAND
  313.  
  314. $BORRED
  315. XXX
  316. EOF
  317. BORRED="This process will take long time, why not listening a song"
  318. $COMMAND
  319.     COMMAND="rsync -av ${PACKAGES[$cur_file_idx]} $TARGET_ROOT"
  320.     (( cur_file_idx+=1 ))
  321.     (( counter+=step ))
  322.     [ $counter -gt 100 ] && break
  323.  
  324.     sleep 10
  325. done
  326. )
  327. }
  328.  
  329. pre_config_system()
  330. {
  331.     cd $TARGET_ROOT
  332.     echo "XXX" && echo 80
  333.     echo "\nConfiguring the machine name: $HOSTNAME"
  334.     echo "XXX"
  335.     echo $HOSTNAME > etc/hostname
  336.     sleep 2
  337.     echo "$TARGET_DEV / ext2 defaults 0 0">> /etc/fstab
  338.  
  339. }
  340.  
  341. grub_config()
  342. {
  343.     DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
  344.     DISK_LETTER=${DISK_LETTER%[0-9]}
  345.     GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
  346.     for disk in a b c d e f g h
  347.     do
  348.         nb=$(($nb+1))
  349.         if [ "$disk" = "$DISK_LETTER" ]; then
  350.             GRUB_DISK=$(($nb-1))
  351.             break
  352.         fi
  353.     done
  354.     GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
  355.     mkdir -p $TARGET_ROOT/boot/grub
  356.     cat > $TARGET_ROOT/boot/grub/grub.cfg << EOF
  357.  
  358. set default 0
  359. set timeout 5
  360. insmod ext2
  361. set root=(hd0,0)
  362. menuentry "GNU/Linux, Linux 4-2-dracOs-0.1.0" {
  363. linux /boot/vmlinuz-4.4.2-dracos-1.2-x86_64 root=$TARGET_DEV ro
  364. initrd /boot/initramfs-4.4.2.img
  365. }
  366. EOF
  367.     echo "grub_config: $TARGET_ROOT/boot/grub/grub.cfg" >>$LOG
  368.     sleep 2
  369. }
  370.  
  371. grub_install()
  372. {
  373.     TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
  374.     $DIALOG --title " GRUB install " \
  375.         --backtitle "$TITLEFOSH" \
  376.         --clear --colors --yesno "\n
  377. If you have grub before , you can ignore this part \
  378. .\n\n
  379. \Z2Setup will install grub in: $TARGET_DISK ?\Zn" 18 70
  380.     retval=$?
  381.     case $retval in
  382.         0)
  383.             (
  384.             echo "XXX" && echo 50
  385.             echo "\nGrub-install execution on : $TARGET_DISK..."
  386.             echo "XXX"
  387.             grub-install --no-floppy \
  388.                 --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
  389.             echo "XXX" && echo 100
  390.             echo "\nCompleting the installation..."
  391.             echo "XXX"
  392.             sleep 2
  393.             ) |
  394.             $DIALOG --title " Grub installation" \
  395.                 --backtitle "$TITLEFOSH" \
  396.                 --gauge "Grub Installation..." 18 70 0 ;;
  397.         1)
  398.             echo "grub_install: NO" >>$LOG ;;
  399.         255)
  400.             echo "ESC presser.\n" && exit 0 ;;
  401.     esac
  402. #grub_created
  403. }
  404.  
  405. #grub_created()
  406. #{
  407. #update-grub
  408. #}
  409.  
  410. umount_devices()
  411. {
  412. umount $TMP_ROOT
  413. #umount $TARGET_ROOT
  414. umount /media/cdrom
  415. }
  416.  
  417. kill_my_self()
  418. {
  419. rm -rf $TARGET_ROOT/usr/local/bin/install-dracos
  420. umount $TARGET_ROOT
  421. }
  422.  
  423. end_of_install()
  424. {
  425.     echo "end_of_install: `date`" >>$LOG
  426.     $DIALOG --title " Installation Complete " \
  427.         --backtitle "$TITLEFOSH" \
  428.         --yes-label "Exit" \
  429.         --no-label "Reboot" \
  430.         --clear --colors --yesno "\n
  431. Installation is complete. You can now restart (reboot) \
  432. more information \
  433. Site www.dracos-linux.org
  434. ." 18 70
  435.     retval=$?
  436.     case $retval in
  437.     0)
  438.         TITLE="Exiting"
  439.         umount_devices ;;
  440.     1)
  441.         TITLE="Rebooting"
  442.         umount_devices
  443.                 kill_my_self
  444.         reboot || reboot -f ;;
  445.     255)
  446.         echo "ESC presser.\n" && exit 0 ;;
  447. esac
  448. }
  449.  
  450. start_installer
  451. case $ACTION in
  452.     install|*)
  453.         mount_cdrom
  454.         ask_for_target_dev
  455.         ask_for_mkfs_target_dev
  456.         prepare_target_dev
  457.         ask_for_hostname
  458.         install_files
  459.         grub_install
  460.         end_of_install
  461.         ;;
  462.         255) echo "you choose to install no dracOs"
  463. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement