All pastes #387671 Raw Edit

Untitled

public text v1 · immutable
·published 2007-03-09 15:09 UTC
rendered paste body
#!/bin/sh
#vliveinstall a script to install vectorlive to the hard disk
#
#
#
# Written By Uel Archuletta for VectorLinux


vdir=/sbin
. $vdir/vasm-functions

check_root

TMP=/var/log/setup/tmp
mkdir -p $TMP

# VARIABLES
TP_X=${1:-/}
if [ "$TP_X" = "/" ]; then
    ROOT_DIR=""
else
    ROOT_DIR=$TP_X
fi

#find the livecd
livecd="`cat /proc/mounts |grep -v loop |grep "/mnt" |grep -v "/mnt/live" |grep -v "/mnt/_" |grep -v "/mnt/cdrom_" |cut -d " " -f 2 |grep -v "/proc" | egrep -v "^/dev|^/sys|^proc|^/\$"`"

menu_install()
{
##check to see if more than 1 partition is available if only 1 use it
partitions="`mount |grep -v dos|grep -v fat|grep -v ntfs|egrep -o "/mnt/[a-z]+[0-9]+" | uniq`"
     j="0"
     for i in $partitions; do
       ## was trying to eliminate partitions without enought space I havent found a good way yet this doesnt always work
       #if [ "`df -h|grep $i|cut -d G -f3|cut -d . -f1`" -gt 2 ] 2>/dev/null; then
         part[$j]="$i"
         j=`expr $j + 1`
       #fi
     done
     $DCMD --backtitle "$BACKTITLE" --title "Install to Partition" --menu "\n
     This program assumes you have mounted and formatted your partition\n
     If you have not done so yet please hit ESC otherwise go ahead\n
     Which partition would you like to install the livecd to?\n
     This will be your root partition.
     If all you see is the placeholder it means your partitions arent \n
     mounted or dont contain a linux filesystem\n
     Choose which partition you would like to use" \
     20 74 4 \
     "placeholder" "Do not choose this" \
     ${part[0]} ${part[0]} \
     ${part[1]} ${part[1]} \
     ${part[2]} ${part[2]} \
     ${part[3]} ${part[3]} \
     ${part[4]} ${part[4]} \
     ${part[5]} ${part[5]} \
     ${part[6]} ${part[6]} \
     ${part[7]} ${part[7]} \
     ${part[8]} ${part[8]} \
     ${part[9]} ${part[9]} \
     2> $freply
     result=$?
     if [ $result != 0 ];then
       exit 0
     fi
     TARGET="`cat $freply`"
     if [ $TARGET == "placeholder" ];then
       infobox "sorry that wont work try again"
       exit 0
     fi
     dirs=`ls -1 / | egrep -v "^dev"  | egrep -v "^proc" | egrep -v "^mnt" | egrep -v "^boot"  | egrep -v "^sys"  | egrep -v "^tmp"`

   yesnobox "would you like to use a seperate /home partition"
    if [ $? != 1 ]; then
      dir=`echo $dirs | egrep -v "^home"`
      partitions="`mount |grep -v dos|grep -v fat|grep -v ntfs|egrep -o "/mnt/[a-z]+[0-9]+" | uniq | grep -v $TARGET`"
      j="0"
      for i in $partitions; do
        home[$j]="$i"
        j=`expr $j + 1`
      done
      $DCMD --backtitle "$BACKTITLE" --title "Choose home Partition" --menu "\n
      Which partition would you like to use as your home Partition?\n
      If all you see is the placeholder then we cant find a partition
      to use, maybe your partitions arent mounted?\n
      Choose which partition you would like to use" \
      20 74 4 \
      "placeholder" "Do not choose this" \
      ${home[0]} ${home[0]} \
      ${home[1]} ${home[1]} \
      ${home[2]} ${home[2]} \
      ${home[3]} ${home[3]} \
      ${home[4]} ${home[4]} \
      ${home[5]} ${home[5]} \
      ${home[6]} ${home[6]} \
      ${home[7]} ${home[7]} \
      ${home[8]} ${home[8]} \
      ${home[9]} ${home[9]} \
      2> $freply
      HOME="`cat $freply`"
     if [ $HOME == "placeholder" ];then
       infobox "sorry that wont work try again"
       exit 0
     fi
      if [ "$HOME" != "" ]; then
        cp --preserve=all -R /home/* $HOME/
	sephome="yes"
      else
        msgbox "sorry copying to /home failed you will have to do it manualy"
      fi
    else
      dir=`echo $dirs`
    fi

     infobox "hold tight this is going to take a while"

     #x=1
     ##size should be the total installed size returned from df it is different between soho and standard
    #size="1998028"
     (for i in $dir; do
       cp --preserve=all -R /$i $TARGET/
       #x=`expr $x + 10`
      done) | /sbin/dfgaugeX $TARGET $size "LiveCD"
      #/sbin/dfgauge $TARGET $size $i
      #progress 100    "done"
      mkdir -p $TARGET/{tmp,boot,mnt,dev,sys,proc}

   infobox "done copying on to initializing"

   cd $TARGET/ 
   device=`mount |egrep $TARGET | cut -d " " -f 1`
   
   rootfs=`mount | grep $device | cut -d " " -f5`   
   echo "$device / $rootfs	defaults	1 1" > $TARGET/etc/fstab
   if [ $sephome == "yes" ]; then
     homefs=`mount | grep $HOME | cut -d " " -f5`
     echo "$HOME /home $homefs	defaults	1 2" >> $TARGET/etc/fstab
   fi
   echo "
   devpts           /dev/pts         devpts       gid=5,mode=620   0   0
   proc             /proc            proc         defaults         0   0
   /dev/fd0         /mnt/floppy      vfat,msdos  noauto,users,suid,dev,exec 0 0" >> $TARGET/etc/fstab
   
   rm $TARGET/etc/mtab
   cp /boot/boot/vmlinuz $TARGET/boot
   cp /boot/boot/initrd.real $TARGET/boot/initrd
   cp --preserve -R /dev/null $TARGET/dev
   cp --preserve -R /dev/console $TARGET/dev
   cp /etc/lilo.conf $TARGET/etc/lilo.conf

   cd $TARGET/etc/rc.d/ && rm rc.S && ln -s rc.S.real rc.S
   cd $TARGET/etc/rc.d/ && rm rc.M && ln -s rc.M.real rc.M
   #cd $TARGET/etc/rc.d/ && rm rc.local && ln -s rc.local.real rc.local
   #cd $TARGET/etc/rc.d/ && rm rc.X && ln -s rc.X.real rc.X
   #cd $TARGET/etc/rc.d/ && rm rc.K && ln -s rc.K.real rc.K

   ##these are not needed for standard only for SOHO
   #cd $TARGET/opt/kde/share/config/kdm && rm kdmrc && mv kdmrc.bak kdmrc
   cd $TARGET/opt/kde/share/apps/kdm/themes/GlassLight 
   if [ -e GlassLight.xml.bak ];then
     rm GlassLight.xml && mv GlassLight.xml.bak GlassLight.xml
   fi

   HardDisk=`fdisk -l | grep Disk | cut -d " " -f 2 | cut -c 1-8`
   #x=`echo $HardDisk | wc -w`
   #if [ $x != 1 ]; then  
   root=$(cat /proc/mounts |grep ^/dev |grep $TARGET |cut -d " " -f 1)
     j="0"
     for i in $HardDisk; do
       hd[$j]="$i"
       j=`expr $j + 1`
     done
     $DCMD --backtitle "$BACKTITLE" --title "LILO INSTALL" --menu "\n
     LILO (Linux Loader) install lilo \n
     we need to know where you would like lilo to be written \n
     if you choose exit you will have to setup your boot manager manually \n
     Choose where you would like to install lilo" \
     20 74 4 \
     ${hd[0]} ${hd[0]} \
     ${hd[1]} ${hd[1]} \
     ${hd[2]} ${hd[2]} \
     ${hd[3]} ${hd[3]} \
     ${part[0]} ${part[0]} \
     ${part[1]} ${part[1]} \
     ${part[2]} ${part[2]} \
     ${part[3]} ${part[3]} \
     ${part[4]} ${part[4]} \
     ${part[5]} ${part[5]} \
     ${part[6]} ${part[6]} \
     ${part[7]} ${part[7]} \
     ${part[8]} ${part[8]} \
     ${part[9]} ${part[9]} \
     "/dev/fd0" "Floppy" \
     "Exit" "Do not install lilo" \
     2> $freply

     result="`cat $freply`"
     if [ $result == "Exit" ]; then
        infobox "Remeber to setup your boot manager"
     else
       LILO_TARGET=$result
     #else
       #LILO_TARGET="$HardDisk"
     #fi
     ##this only did the mbr of the disk where the target resides
     ##not good if I want to install to hdb2 and have lilo on hda
     #dev=$(cat /proc/mounts |grep ^/dev |grep $TARGET |cut -c 1-8)

      if [ -e $TARGET/root/.bitmap ];then
        mv $TARGET/root/.bitmap $TARGET/boot/bitmap
        BIT="bitmap=/boot/bitmap/boot.bmp"
      fi

       echo "
       boot = $LILO_TARGET
       prompt
       timeout = 20
       $BIT
       change-rules
       reset
       vga = 791   
       image = /boot/boot/vmlinuz
       initrd= /boot/boot/initrd
       root = $root
       label = linux
       append=\"4 splash=silent\"
       read-only       
       " >$TARGET/etc/lilo.conf
       infobox "setting up lilo"
       mount -o bind /dev $TARGET/dev
       mount -t proc proc $TARGET/proc
       #mount --move /proc $TARGET/proc
       sync
       chroot $TARGET lilo   
       #exit
       umount $TARGET/dev
       umount $TARGET/proc
       #mount -t proc proc /proc
     fi

   SETUP_DIR="$TARGET/var/log/setup"
   INIT_DIR="$SETUP_DIR/init"
   mkdir -p $INIT_DIR
   chmod 700 $INIT_DIR
       echo "
       #!/bin/sh
       vdir=/sbin
       . $vdir/vasm-functions
       yesnobox "would you like to \nreconfigure the system?"           
       if [ $? != 1 ]; then
         exec /sbin/config-stage1 vector-virgin-heavy $TARGET $KEYMAP
       else
        exit 0
       fi
       " > $INIT_DIR/config-stage2
       chmod a+x $INIT_DIR/config-stage2
     

     msgbox "all done you can reboot now and try it out" Success 

     return 0
}

############################
# MAIN MENU
wizard menu_install