#!/bin/bash disk=$2 rootfs=$3 rootsize=$4 datafs=$5 datasize=$6 swapsize=$7 mountpoint="/new_boot" run=/root/install_functions.sh . /etc/systemconfig 2>/dev/null progress () { mypercent=`echo "$1" | cut -d. -f1` if [ x$mypercent = x ] then echo "" > /tmp/.install_percent else echo "${mypercent}% complete" > /tmp/.install_percent fi } full_install () { if [ -f /tmp/.this_is_upgrade ] then rm /tmp/.this_is_upgrade fi echo "Partitioning $disk" > /tmp/.install_state progress 1 sleep 1 $run partition_it $disk $rootsize $datasize $swapsize echo "Formating $disk" > /tmp/.install_state progress 2 sleep 1 $run format_it $disk $rootfs $datafs echo "Preparing $disk" > /tmp/.install_state progress 3 sleep 1 $run mount_it $disk startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` echo "STARTSIZE=$startsize">/tmp/.startsize.io echo "Installing data" > /tmp/.install_state sleep 1 $run copy_it $disk ALL $run fstab_fix_it $disk $rootfs $datafs progress 99 sleep 1 $run grub_it $disk echo "Configuring system" > /tmp/.install_state progress 100 sleep 1 cp -f /etc/systemconfig "$mountpoint"/etc #run save syssettings to save settings, then copy to new mountpoint /root/restore_default_settings.sh -c save -t syssettings -h myhost -d 127.0.0.1 SE=/usr/share/templates/settings/syssettings mkdir -p ${mountpoint}$SE cp -rp $SE/* ${mountpoint}$SE/ chown root:mythtv "$mountpoint"/etc/systemconfig chown -R mythtv:mythtv ${mountpoint}$SE chmod -R 775 ${mountpoint}$SE chmod 775 "$mountpoint"/etc/systemconfig #copy over any updates that might have occured cp -f /root/*.sh "$mountpoint"/root/ chmod -R 755 ${mountpoint}/root cp /etc/mtab "$mountpoint"/etc/mtab chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] then #installing DB to local machine chroot "$mountpoint" /root/install_db_chroot.sh else #update remotedb with this host settings chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t Default chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings #Run second time chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network fi echo "Done" > /tmp/.install_state $run unmount_it $disk } function upgrade () { touch /tmp/.this_is_upgrade if [ ! x$rootfs = "xDo_not_format" ] then echo "Formating $disk" > /tmp/.install_state progress 2 sleep 1 $run format_it $disk $rootfs NO fi echo "Preparing $disk" > /tmp/.install_state progress 3 sleep 1 $run mount_it $disk startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` echo "STARTSIZE=$startsize">/tmp/.startsize.io echo "Installing data" > /tmp/.install_state sleep 1 cp -rf /tmp/etc /new_boot/etc.old cp -rf /tmp/oss /new_boot/var/lib/oss.old $run copy_it $disk bin.lzm,boot.lzm,etc.lzm,home.lzm,lib.lzm,opt.lzm,root.lzm,sbin.lzm,usr.lzm,var.lzm if [ x$rootfs = "xDo_not_format" ] then rootfs=`grep ${disk}1 /tmp/etc/fstab |awk ' { print $3 } '` fi datafs=`grep ${disk}3 /tmp/etc/fstab |awk ' { print $3 } '` $run fstab_fix_it $disk $rootfs $datafs echo "Writing boot sector" > /tmp/.install_state progress 99 sleep 1 $run grub_it $disk echo "Configuring system" > /tmp/.install_state progress sleep 1 cp /etc/mtab "$mountpoint"/etc/mtab cp -f /etc/systemconfig "$mountpoint"/etc cp -f /root/*.sh "$mountpoint"/root/ chmod -R 755 ${mountpoint}/root chown root:mythtv "$mountpoint"/etc/systemconfig chmod 775 "$mountpoint"/etc/systemconfig chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network # chroot "$mountpoint" /root/restore_default_settings.sh restore Default chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings #Run second time chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network # fi echo "Done" > /tmp/.install_state $run unmount_it $disk } function killdhcp () { if [ -f /etc/dhcpc/dhcpcd-eth0.pid ] then pid=`cat /etc/dhcpc/dhcpcd-eth0.pid` kill -9 $pid rm -f /etc/dhcpc/dhcpcd-eth0.pid rm -f /var/run/dhcpcd* fi if [ -f /var/run/dhcpcd-eth0.pid ] then pid=`cat /var/rundhcpcd-eth0.pid` kill -9 $pid rm -f /var/run/dhcpcd-eth0.pid* fi ip address flush dev eth0 } function network_setup () { DEVICE=eth0 if [ ! -f /etc/systemconfig ] then exit 1 fi killdhcp if [ $UseDHCP = 0 ] then /sbin/dhcpcd $DEVICE if [ ! $? = 0 ] then exit 2 fi fi if [ $UseDHCP = 1 ] then /sbin/ifconfig $DEVICE $ip /sbin/route add default gw $route echo "nameserver $nameserver" > /etc/resolv.conf fi } function SANE_SYSETTINGS () { sed -e '/HOSTrootfstype/d' \ -e '/HOSTrootfstype/d' \ -e '/HOSTdatafstype/d' \ -e '/HOSTOSsize/d' \ -e '/HostUseALLdata/d' \ -e '/HOSTDATAsize/d' \ -e '/HOSTuprootfstype/d' \ -e '/HostUseSWAP/d' \ -e '/HOSTSWAPsize/d ' /tmp/usr/share/templates/settings/syssettings/settings.txt > /tmp/settings.new mv /tmp/settings.new /tmp/usr/share/templates/settings/syssettings/settings.txt } case $1 in full_install_it ) full_install ;; find_update) #TRY TO mount first partition of drive #copy /etc/systemconfig to live, import settings into db #umount drive $run mount_it $disk if [ -f /new_boot/etc/systemconfig ] then ###########ADD templates mkdir -p /tmp/usr/share/templates cp -pr /new_boot/usr/share/templates /tmp/usr/share SANE_SYSETTINGS cp -rp /tmp/usr/share/templates/settings /usr/share/templates cp /new_boot/etc/systemconfig /etc/systemconfig cp -rf /new_boot/etc /tmp/etc cp -rf /new_boot/var/lib/oss /tmp/oss /root/restore_default_settings.sh -c restore -t syssettings -h myhost -d 127.0.0.1 fi $run umount_it $disk ;; upgrade_it) #"/root/install_proxy.sh upgrade_it " + install_drive + " " + rootfs + "&" upgrade ;; disk_model_it) model="unknown" size="xxx" case $2 in h* ) model=`cat /proc/ide/$2/model` ;; s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` ;; esac size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` echo ""$model" $size " >/tmp/model ;; network_check_it) #Should never return from check_network case $2 in setup_network) network_setup ;; check_self) myipeth0=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` ping -c 1 $myipeth0 if [ ! $? = 0 ] then exit 3 #can't ping yourself fi ;; check_gw) #check gateway mygweth0=`/sbin/route |grep eth0|grep UG|awk '{ print $2}'` ping -c 1 $mygweth0 if [ ! $? = 0 ] then exit 4 #can't ping the gw fi ;; check_ns) #check nameserver mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` ping -c 1 $mydns if [ ! $? = 0 ] then exit 5 #can't ping the gw fi ;; check_names) host google.com if [ ! $? = 0 ] then exit 6 #can't ping the gw fi ;; esac exit 0 ;; * ) state=`cat /tmp/.install_state` if [ x"${state}" = "xConfiguring system" ] then progress "" else #finding the drive ddrive=`df | grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 ` used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "` . /tmp/.startsize.io used=`echo $used-$STARTSIZE|bc` echo $used if [ ! x$used = x ] then . /root/.install_size #somehow find if it's an install or update if [ -f /tmp/.this_is_upgrade ] then total=$UPGRADESIZE else total=$TOTALSIZE fi percent=`echo "scale=2 ; ($used/$total) * 100 " |bc ` cond2=$(echo "$percent > 100" |bc ) if [ $cond2 -eq 1 ] then percent=100 fi cond3=$(echo "$percent < 3" |bc ) if [ $cond3 -eq 0 ] then progress $percent fi fi fi ;; esac