diff options
author | James Meyer <James.meyer@operamail.com> | 2008-10-02 03:19:12 (GMT) |
---|---|---|
committer | James Meyer <James.meyer@operamail.com> | 2008-10-02 03:19:12 (GMT) |
commit | 0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a (patch) | |
tree | c0aa2c0b53c317be87eacfcb77b63f53f1f415e7 /abs/core-testing/live-installer/install_proxy.sh | |
download | linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.zip linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.gz linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.bz2 |
initial import
Diffstat (limited to 'abs/core-testing/live-installer/install_proxy.sh')
-rwxr-xr-x | abs/core-testing/live-installer/install_proxy.sh | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/abs/core-testing/live-installer/install_proxy.sh b/abs/core-testing/live-installer/install_proxy.sh new file mode 100755 index 0000000..756c46d --- /dev/null +++ b/abs/core-testing/live-installer/install_proxy.sh @@ -0,0 +1,481 @@ +#!/bin/bash +#chroot and /tmp +MVHOSTNAME=mvi +. /etc/profile +TEMP_TEMPLATES=/tmp/templates +disk=$2 +rootfs=$3 +rootsize=$4 +datafs=$5 +datasize=$6 +swapsize=$7 +mountpoint="/new_boot" +run=$MV_ROOT/bin/install_functions.sh +. /etc/systemconfig 2>/dev/null +. $MV_ROOT/bin/networkconfig.sh +CMDLINE=$(cat /proc/cmdline) + +#TEMPNET="Hostip"$default_interface +#eval MYTHIP=\$${TEMPNET} + + +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 + rm $mountpoint/etc/fstab + $run fstab_fix_it $disk $rootfs $datafs FULL_INSTALL + + 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 + $MV_ROOT/bin/restore_default_settings.sh -c save -t syssettings -h $MVHOSTNAME -d 127.0.0.1 + SE=$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 $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ + chmod -R 755 ${mountpoint}/root + cp /etc/mtab "$mountpoint"/etc/mtab + + + if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + #installing DB to local machine + #turn off old live database, so the chroot one can start + /etc/rc.d/mysqld stop + mount --bind /dev "$mountpoint/dev" + chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" > /tmp/chrootdb.out + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + echo "stopping mysql in chroot" + chroot "$mountpoint" /etc/rc.d/mysqld stop + umount "$mountpoint/dev" + + #/etc/rc.d/mysqld start + else + #update remotedb with this host settings + chroot "$mountpoint" DISPLAY=127.0.0.1:0 /usr/local/bin/MythVantage -t restore,default_1 + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + if [ ! $? = 0 ] + then + touch $mountpoint/tmp/.dbsysfailed + chmod 777 $mountpoint/tmp/.dbsysfailed + else + #Run second time + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + fi + fi + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced + echo "Done" > /tmp/.install_state + cp /tmp/mythvantage_install.log $mountpoint/var/log/ + $run unmount_it $disk +} + +function createsquashlist(){ +if [ -f $1 ] +then + rm -f +$1 +fi +for i in bin boot etc home lib opt root sbin usr var +do +echo $i >> $1 +done + + +} + + + + +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 + SQUASHLIST="/tmp/.squashlist" + createsquashlist $SQUASHLIST + $run copy_it $disk $SQUASHLIST + #copy back ssh keys + + cp -rp /data/var/cache/pacman/pkg/* /new_boot/data/var/cache/pacman/pkg/ + cp -fp /new_boot/etc.old/ssh/*.pub /new_boot/etc/ssh/ + cp -fp /new_boot/etc.old/ssh/*.key /new_boot/etc/ssh/ + cp -fp /new_boot/etc.old/ssh/*key /new_boot/etc/ssh/ + + #funckeys + cadir=/etc/pki/func/ca + mv /new_boot/etc/pki /new_boot/etc/pki.new + cp -rp /new_boot/etc.old/pki /new_boot/etc/ + #passwd/shadow/group + cp -fp /new_boot/etc.old/passwd /new_boot/etc/ + cp -fp /new_boot/etc.old/shadow /new_boot/etc/ + cp -fp /new_boot/etc.old/group /new_boot/etc/ + + if [ x$rootfs = "xDo_not_format" ] + then + #rootfs=`grep ${disk}1 /tmp/etc/fstab |awk ' { print $3 } '` + rootfs=`grep \/\ /tmp/etc/fstab |awk ' { print $3 } '` + fi + #datafs=`grep ${disk}3 /tmp/etc/fstab |awk ' { print $3 } '` + datafs=`grep \/data /tmp/etc/fstab |awk ' { print $3 } '` + $run fstab_fix_it $disk $rootfs $datafs UPGRADE + + 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 $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ + chmod -R 755 ${mountpoint}/root + chown root:mythtv "$mountpoint"/etc/systemconfig + chmod 775 "$mountpoint"/etc/systemconfig + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + #wrap this in a network check_network, no need to update the db if the import worked. +##### do I need to start mysql? + chroot "$mountpoint" DISPLAY=127.0.0.1:0 /usr/local/bin/MythVantage -t restore,default_1 + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + # + #Run second time + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install + + # fi + + echo "Done" > /tmp/.install_state + cp /tmp/mythvantage_install.log $mountpoint/var/log/ + $run unmount_it $disk +} + +function netboot-full_install () { + TEMPVAR=${CMDLINE#*nfsroot=} + NFSROOT=${TEMPVAR%% *} + NFSROOT=`echo $NFSROOT|cut -d: -f1` + MAC=`/sbin/ifconfig eth0|grep HWaddr| cut -d: -f2-|awk '{ print $3}'|tr : -` + URL="http://$NFSROOT:1337/diskless.py?HOSTNAME=$hostname&MAC=$MAC" + echo "calling $URL" + echo "Starting" > /tmp/.install_state + curl $URL + ${MV_ROOT}/bin/xconfig.sh +} + +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/run/dhcpcd-eth0.pid` + kill -9 $pid + rm -f /var/run/dhcpcd-eth0.pid* + fi +ip address flush dev eth0 +} + + +# function vnc_check() { +# CMDLINE=$(cat /proc/cmdline) +# echo $CMDLINE |grep -q vnc +# USEVNC=$? +# echo $CMDLINE |grep -q nfsroot +# NETBOOT=$? +# echo $USEVNC +# if [ ! x$USEVNC = x0 ] +# then +# echo "not using vnc" +# if [ ! x$NETBOOT = x0 ] +# then +# echo "not using netboot" +# else +# echo "using netboot" +# USEVNC=0 +# fi +# +# else +# echo " using vnc" +# fi +# } + + +# function network_setup () { +# DEVICE=eth0 +# if [ ! -f /etc/systemconfig ] +# then +# exit 1 +# fi +# +# if [ ! x$USEVNC = x0 ] +# then +# echo "Resetting the network" +# killdhcp +# if [ $UseDHCP = 0 ] +# then +# /sbin/dhcpcd $DEVICE +# if [ ! $? = 0 ] +# then +# exit 2 +# fi +# fi +# else +# echo "using vnc/netboot, will not reset network" +# echo "nameserver $nameserver" > /etc/resolv.conf +# return 0 +# 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/templates/settings/syssettings/settings.txt > /tmp/settings.new + mv /tmp/settings.new /tmp/templates/settings/syssettings/settings.txt +} + +case $1 in + full_install_it ) full_install ;; + + NETBOOT) +echo "-----------------------------------------------------------------------3-----" + netboot-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 $TEMP_TEMPLATES + cp -pr /new_boot/$TEMPLATES $TEMP_TEMPLATES + SANE_SYSETTINGS + cp -rp $TEMP_TEMPLATES/settings $TEMPLATES/ + + + cp /new_boot/etc/systemconfig /etc/systemconfig + cp -rf /new_boot/etc /tmp/etc + cp -rf /new_boot/var/lib/oss /tmp/oss + + $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings -h $MVHOSTNAME -d 127.0.0.1 + fi + $run umount_it $disk + ;; + + upgrade_it) + #"$MV_ROOT/bin/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) + vnc_check + install_network_setup + ;; + + check_self) + myipdefault=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + ping -c 1 $myipdefault + if [ ! $? = 0 ] + then + exit 3 + #can't ping yourself + fi + ;; + check_gw) + #check gateway + mygwdefault=`/sbin/route |grep $default_interface|grep UG|awk '{ print $2}'` + if [ ! x$mygwdefault = x ] + then + ping -c 1 $mygwdefault + if [ ! $? = 0 ] + then + exit 4 + fi + 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 + fi + ;; + check_names) + host google.com + if [ ! $? = 0 ] + then + exit 6 + fi + ;; + host_names) + host $hostname + if [ $? = 0 ] + then + exit 7 + fi + ;; + + esac + exit 0 + ;; + + + * ) + state=`cat /tmp/.install_state` + if [ x"${state}" = "xConfiguring system" ] + then + progress "" + else + + if [ -f /tmp/.startsize.io ] + then + . /tmp/.startsize.io + #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 " "` + used=`echo $used-$STARTSIZE|bc` + #echo $used + fi + + 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 + + + |