Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Installer dracOs Linux Gnu/Linux
- #@author Zee Eichel, zee.eichel -at- indonesianbacktrack.or.id
- #@version $Id$
- #www.dutalinux.org
- #follow @dutalinux
- VERSION=1.0
- : ${DIALOG=dialog}
- if [ "$(id -u)" != "0" ]; then
- echo "This script must be run as root" 1>&2
- exit 1
- fi
- command -v mksquashfs >/dev/null 2>&1 || { echo >&2 "require squashfs tools but it's not installed. Aborting."; exit 1; }
- command -v dialog >/dev/null 2>&1 || { echo >&2 "require dialog but it's not installed. Aborting."; exit 1; }
- command -v rsync >/dev/null 2>&1 || { echo >&2 "require rsync but it's not installed , aborting" ; exit 1;}
- if [ -n "$1" ]; then
- ACTION=$1
- else
- ACTION=install
- fi
- ARCH=`uname -m`
- DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
- CDROM=/dev/$DRIVE_NAME
- TMP_ROOT=/mnt/tmpdracOs
- TARGET_ROOT=/mnt/target
- KERNEL=vmlinuz-4.2-dracOs-x.x.x
- LOG=/var/log/dracOs-`uname -m`.log
- TITLEFOSH="dracOs `uname -m` GNU/Linux installer"
- START_INSTALL_MSG="\nHola Tux , welcome to dracOsLinux Instalation. This setup will install dracOs `uname -m` into your host\n\n
- \Z4Continue and take the risk ?\Zn"
- error_message()
- {
- $DIALOG --title " Fail " \
- --colors --backtitle "$TITLEFOSH" \
- --clear --msgbox "\n$ERROR_MSG" 18 70
- }
- check_retval()
- {
- case $retval in
- 0)
- continue ;;
- 1)
- echo "\nL00zerz.\n" && exit 0 ;;
- 3)
- continue ;;
- 255)
- echo "ESC presser.\n" && exit 0 ;;
- esac
- }
- start_installer()
- {
- $DIALOG --title " dracOs Linux" \
- --backtitle "$TITLEFOSH" \
- --yes-label "Install" \
- --no-label "Cancel" \
- --clear --colors --yesno "$START_INSTALL_MSG" 18 70
- retval=$?
- case $retval in
- 0)
- ACTION=install ;;
- 1)
- echo "\nSTOP.\n" && exit 0 ;;
- 3)
- ACTION=upgrade ;;
- 255)
- echo "ESC presser.\n" && exit 0 ;;
- esac
- echo "Starting dracOs Installer: `date`" > $LOG
- }
- mount_cdrom()
- {
- ERROR_MSG=""
- umount /media/cdrom 2>/dev/null
- (
- echo "XXX" && echo 30
- echo "\nMounting Point Directory (/media/cdrom)..."
- echo "XXX"
- mkdir -p /media/cdrom
- sleep 1
- echo "XXX" && echo 60
- echo "\nMount Poison Directory ($CDROM)..."
- echo "XXX"
- if mount -t iso9660 $CDROM /media/cdrom 2>>$LOG ;then
- echo "XXX" && echo 90
- echo "\nVerification Poison File..."
- echo "XXX"
- elif mount -t iso9660 /dev/hdc /media/cdrom 2>>$LOG ;then
- echo "XXX" && echo 90
- echo "\nVerification Poison File..."
- echo "XXX"
- else mount -t iso9660 /dev/cdrom /media/cdrom 2>>$LOG
- echo "XXX" && echo 90
- echo "\nVerification Poison File..."
- echo "XXX"
- fi
- sleep 2
- ) |
- $DIALOG --title " Mount CDR " \
- --backtitle "$TITLEFOSH" \
- --gauge "Verification Poison File..." 18 70 0
- if [ ! -f /media/cdrom/dracos/root.sfs ]; then
- ERROR_MSG="\
- Cannot installing dracos\n\n
- The poison file cannot be found."
- error_message
- echo "missing: /media/cdrom/boot/x86_64/root.fs" >>$LOG
- exit 1
- fi
- }
- #Partition Option
- ask_for_target_dev()
- {
- exec 3>&1
- TARGET_DEV=`$DIALOG --title "Root Partition" \
- --backtitle "$TITLEFOSH" --clear \
- --extra-label "List" --extra-button \
- --colors --inputbox "\n
- enter the partition that you want for our setup, \
- exemple: '/dev/hda1'. Click \Z4'List' \Zn button for see all partition in your machinne \
- if you have some partition not register on our /etc/fstab, then you have to find it first manually.\n\n
- \Z2Partition Utility:\Zn" 18 70 2>&1 1>&3`
- retval=$?
- exec 3>&-
- check_retval
- if [ "$retval" = "3" ]; then
- fdisk_list
- ask_for_target_dev
- fi
- if [ -z $TARGET_DEV ]; then
- ask_for_target_dev
- fi
- # verification of partition
- DEV_NAME=${TARGET_DEV#/dev/}
- if cat /proc/partitions | grep -q $DEV_NAME; then
- echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
- else
- ERROR_MSG="partition \Z2$TARGET_DEV\Zn n' not found."
- error_message
- ask_for_target_dev
- fi
- }
- # function.
- fdisk_list()
- {
- LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
- $DIALOG --title "Partition Table" \
- --backtitle "$TITLEFOSH" \
- --clear --msgbox "\n
- Partition Table :\n\n
- $LIST_PARTITIONS" 18 70
- }
- ask_for_mkfs_target_dev()
- {
- $DIALOG --title " Format " \
- --backtitle "$TITLEFOSH" \
- --clear --colors --yesno "\n
- dracOs will be installed in partition : $TARGET_DEV\n\n
- Setup will be format this partition with ext2.\n\n
- \Z2Can we start now ?\Zn" 18 70
- retval=$?
- case $retval in
- 0)
- MKFS_TARGET_DEV="ext2"
- echo "mkfs_target_dev: ext2" >>$LOG ;;
- 1)
- echo "mkfs_target_dev: stop" >>$LOG ;;
- 255)
- echo "ESC presser.\n" && exit 0 ;;
- esac
- }
- prepare_target_dev()
- {
- (
- echo "XXX" && echo 30
- echo "\nPartition preparation..."
- echo "XXX"
- if mount | grep -q $TARGET_ROOT; then
- umount $TARGET_ROOT 2>$LOG
- fi
- sleep 2
- \
- if [ "$MKFS_TARGET_DEV" == "ext2" ]; then
- echo "XXX" && echo 60
- echo "\nMkfs.ext2 execution on $ TARGET_DEV"
- echo "XXX"
- mkfs.ext2 $TARGET_DEV
- else
- echo "XXX" && echo 60
- echo "\nThe partition ($TARGET_DEV) will be cleaned..."
- echo "XXX"
- sleep 2
- fi
- echo "XXX" && echo 90
- echo "\nCreating the mount point: $TARGET_ROOT"
- echo "XXX"
- mkdir -p $TMP_ROOT
- mkdir -p $TARGET_ROOT
- sleep 2
- ) |
- $DIALOG --title "Preparation for ($TARGET_DEV)" \
- --backtitle "$TITLEFOSH" \
- --gauge " Mounting point..." 18 70 0
- mount $TARGET_DEV $TARGET_ROOT
- }
- ask_for_hostname()
- {
- exec 3>&1
- HOSTNAME=`$DIALOG --title " Hostname " \
- --backtitle "$TITLEFOSH" --clear \
- --colors --inputbox "\n
- Please specify the machine name to use for your comodos.\
- The machine name or 'hostname is used to identify your machine on\
- the local network and by the system (defaut: dracOs).\n\n
- \Z2hostname:\Zn" 18 70 "dracOs" 2>&1 1>&3`
- retval=$?
- exec 3>&-
- check_retval
- if [ -z $HOSTNAME ]; then
- HOSTNAME="dracOs"
- fi
- }
- mountsquash()
- {
- mount -o loop -t squashfs /media/cdrom/dracos/root.sfs $TMP_ROOT
- }
- install_files()
- {
- (
- echo "XXX" && echo 10
- echo "\nCleaning the root partition if necessary..."
- echo "XXX"
- echo "XXX" && echo 20
- echo "\nInstalling the kernel ($KERNEL)..."
- echo "XXX"
- echo "XXX" && echo 30
- echo "\nmounting filesystem..."
- echo "XXX"
- mountsquash
- sleep 2
- echo "XXX" && echo 40
- echo "\nExtraction of root system ..."
- echo "XXX"
- extract_rootsfs
- echo "XXX" && echo 80
- echo "\nPre System Configuration..."
- echo "XXX"
- pre_config_system
- echo "XXX" && echo 90
- echo "\nGRUB Install (grub.cfg)..."
- echo "XXX"
- grub_config
- echo "XXX" && echo 100
- echo "\nDone for now..."
- echo "XXX"
- echo "install_files: OK" >>$LOG
- sleep 4
- ) |
- $DIALOG --title " Installation files " \
- --backtitle "$TITLEFOSH" \
- --gauge "Installing the base system..." 18 70 0
- }
- extract_rootsfs()
- {
- declare PACKAGES=("$TMP_ROOT/bin" "$TMP_ROOT/dev" "$TMP_ROOT/boot" "$TMP_ROOT/etc" "$TMP_ROOT/home"
- "$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")
- NUM_PACKAGES=${#PACKAGES[*]}
- step=$((100/$NUM_PACKAGES))
- cur_file_idx=0
- counter=0
- (
- while :
- do
- cat <<EOF
- ${PACKAGES[$cur_file_idx]}
- XXX
- $counter
- $counter% progress
- $COMMAND
- $BORRED
- XXX
- EOF
- BORRED="This process will take long time, why not listening a song"
- $COMMAND
- COMMAND="rsync -av ${PACKAGES[$cur_file_idx]} $TARGET_ROOT"
- (( cur_file_idx+=1 ))
- (( counter+=step ))
- [ $counter -gt 100 ] && break
- sleep 10
- done
- )
- }
- pre_config_system()
- {
- cd $TARGET_ROOT
- echo "XXX" && echo 80
- echo "\nConfiguring the machine name: $HOSTNAME"
- echo "XXX"
- echo $HOSTNAME > etc/hostname
- sleep 2
- echo "$TARGET_DEV / ext2 defaults 0 0">> /etc/fstab
- }
- grub_config()
- {
- DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
- DISK_LETTER=${DISK_LETTER%[0-9]}
- GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
- for disk in a b c d e f g h
- do
- nb=$(($nb+1))
- if [ "$disk" = "$DISK_LETTER" ]; then
- GRUB_DISK=$(($nb-1))
- break
- fi
- done
- GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
- mkdir -p $TARGET_ROOT/boot/grub
- cat > $TARGET_ROOT/boot/grub/grub.cfg << EOF
- set default 0
- set timeout 5
- insmod ext2
- set root=(hd0,0)
- menuentry "GNU/Linux, Linux 4-2-dracOs-0.1.0" {
- linux /boot/vmlinuz-4.4.2-dracos-1.2-x86_64 root=$TARGET_DEV ro
- initrd /boot/initramfs-4.4.2.img
- }
- EOF
- echo "grub_config: $TARGET_ROOT/boot/grub/grub.cfg" >>$LOG
- sleep 2
- }
- grub_install()
- {
- TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
- $DIALOG --title " GRUB install " \
- --backtitle "$TITLEFOSH" \
- --clear --colors --yesno "\n
- If you have grub before , you can ignore this part \
- .\n\n
- \Z2Setup will install grub in: $TARGET_DISK ?\Zn" 18 70
- retval=$?
- case $retval in
- 0)
- (
- echo "XXX" && echo 50
- echo "\nGrub-install execution on : $TARGET_DISK..."
- echo "XXX"
- grub-install --no-floppy \
- --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
- echo "XXX" && echo 100
- echo "\nCompleting the installation..."
- echo "XXX"
- sleep 2
- ) |
- $DIALOG --title " Grub installation" \
- --backtitle "$TITLEFOSH" \
- --gauge "Grub Installation..." 18 70 0 ;;
- 1)
- echo "grub_install: NO" >>$LOG ;;
- 255)
- echo "ESC presser.\n" && exit 0 ;;
- esac
- #grub_created
- }
- #grub_created()
- #{
- #update-grub
- #}
- umount_devices()
- {
- umount $TMP_ROOT
- #umount $TARGET_ROOT
- umount /media/cdrom
- }
- kill_my_self()
- {
- rm -rf $TARGET_ROOT/usr/local/bin/install-dracos
- umount $TARGET_ROOT
- }
- end_of_install()
- {
- echo "end_of_install: `date`" >>$LOG
- $DIALOG --title " Installation Complete " \
- --backtitle "$TITLEFOSH" \
- --yes-label "Exit" \
- --no-label "Reboot" \
- --clear --colors --yesno "\n
- Installation is complete. You can now restart (reboot) \
- more information \
- Site www.dracos-linux.org
- ." 18 70
- retval=$?
- case $retval in
- 0)
- TITLE="Exiting"
- umount_devices ;;
- 1)
- TITLE="Rebooting"
- umount_devices
- kill_my_self
- reboot || reboot -f ;;
- 255)
- echo "ESC presser.\n" && exit 0 ;;
- esac
- }
- start_installer
- case $ACTION in
- install|*)
- mount_cdrom
- ask_for_target_dev
- ask_for_mkfs_target_dev
- prepare_target_dev
- ask_for_hostname
- install_files
- grub_install
- end_of_install
- ;;
- 255) echo "you choose to install no dracOs"
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement