diff options
Diffstat (limited to 'abs/core/mythinstall/install_proxy.sh')
-rwxr-xr-x | abs/core/mythinstall/install_proxy.sh | 353 |
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 + + + |