summaryrefslogtreecommitdiffstats
path: root/abs/core/mythinstall/install_proxy.sh
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/mythinstall/install_proxy.sh')
-rwxr-xr-xabs/core/mythinstall/install_proxy.sh353
1 files changed, 353 insertions, 0 deletions
diff --git a/abs/core/mythinstall/install_proxy.sh b/abs/core/mythinstall/install_proxy.sh
new file mode 100755
index 0000000..a1a722e
--- /dev/null
+++ b/abs/core/mythinstall/install_proxy.sh
@@ -0,0 +1,353 @@
+#!/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
+
+
+