From 15f49f7b2cb3016c36b981641703b7a13951f28d Mon Sep 17 00:00:00 2001 From: James Meyer Date: Sat, 13 Dec 2008 21:17:14 -0600 Subject: REF fs#50 Add hybrid of install/upgrade. This is an install without formating /myth or xda3 To use this feature append clean_upgrade to the kernel boot parm & select upgrade for the install type.The upgrade will error out with "can't find old settings", continue past this prompt and a fresh install without formating /myth will occur. --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/install_proxy.sh | 86 ++++++++++++---------- .../LinHES-config/restore_km_db_chroot.sh | 1 - 3 files changed, 48 insertions(+), 41 deletions(-) diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 6adba49..4be90e0 100755 --- a/abs/core-testing/LinHES-config/PKGBUILD +++ b/abs/core-testing/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-config pkgver=1.0 -pkgrel=104 +pkgrel=109 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev ) pkgdesc="Install and configure your system" depends=(bc libstatgrab mysql-python expect curl dnsutils parted sg3_utils nmbscan ) diff --git a/abs/core-testing/LinHES-config/install_proxy.sh b/abs/core-testing/LinHES-config/install_proxy.sh index 195d7af..92b90dc 100755 --- a/abs/core-testing/LinHES-config/install_proxy.sh +++ b/abs/core-testing/LinHES-config/install_proxy.sh @@ -67,7 +67,6 @@ function upgrade_mount_search { umount $mountpoint/myth mount $MYTH_P $mountpoint/myth return 0 - } @@ -195,7 +194,7 @@ function upgrade () { $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 "Creating $hostname" > /tmp/.install_state + echo "Upgrading $hostname" > /tmp/.install_state sleep 1 cp -rf /tmp/etc /new_boot/etc.old cp -rf /tmp/oss /new_boot/var/lib/oss.old @@ -210,7 +209,7 @@ function upgrade () { 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/ - + cp -fp /new_boot/etc.old/mdadm.conf /new_boot/etc/ if [ ! -f /tmp/etc/KnoppMyth-version ] then #passwd/shadow/group @@ -225,16 +224,14 @@ function upgrade () { fi $run fstab_fix_it $disk UPGRADE - #this is here to copy in the systemconfig file as soon as possible. + #this is here to copy in the systemconfig file as soon as possible. cp -f /etc/systemconfig "$mountpoint"/etc echo "Writing boot sector" > /tmp/.install_state progress 99 sleep 1 $run grub_it $disk - - - echo "Configuring system" > /tmp/.install_state + echo "Configuring system" > /tmp/.install_state progress sleep 1 cp /etc/mtab "$mountpoint"/etc/mtab @@ -244,8 +241,9 @@ function upgrade () { then upgrade_mount_search fi - - if [ -f /tmp/etc/KnoppMyth-version ] + echo $CMDLINE | grep -q clean_upgrade + status=$? + if [ -f /tmp/etc/KnoppMyth-version -o $status = 0 ] then #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 localhost @@ -255,9 +253,14 @@ function upgrade () { chown root:mythtv "$mountpoint"/etc/systemconfig chown -R mythtv:mythtv ${mountpoint}$SE chmod -R 775 ${mountpoint}$SE - touch $mountpoint/home/mythtv/.kmupgrade && chmod 777 $mountpoint/home/mythtv/.kmupgrade + if [ ! $status = 0 ] + then + touch $mountpoint/home/mythtv/.kmupgrade && chmod 777 $mountpoint/home/mythtv/.kmupgrade + fi fi + + cp -f $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ chmod -R 755 ${mountpoint}/root chown root:mythtv "$mountpoint"/etc/systemconfig @@ -270,29 +273,41 @@ function upgrade () { #wrap this in a network check_network, no need to update the db if the import worked. ##### do I need to start mysql? /etc/rc.d/mysqld stop - if [ -f /new_boot/myth/backup/mythconverg.sql.gz ] + echo $CMDLINE | grep -q clean_upgrade + status=$? + if [ $status = 0 ] then + #new db as part of clean upgrade echo "--------------------------------" - echo "Restoring database" - echo "--------------------------------" - chroot "$mountpoint" "$MV_ROOT/bin/restore_km_db_chroot.sh" > /tmp/chrootdb_km.out - else - echo "--------------------------------" - echo "Couldn't find backup file, installing new database" + echo "clean upgrade installing new database" echo "--------------------------------" - touch /tmp/.upgrade_db_failed chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" > /tmp/chrootdb.out + else + #proceed as normal + if [ -f /new_boot/myth/backup/mythconverg.sql.gz ] + then + echo "--------------------------------" + echo "Restoring database" + echo "--------------------------------" + chroot "$mountpoint" "$MV_ROOT/bin/restore_km_db_chroot.sh" > /tmp/chrootdb_km.out + else + echo "--------------------------------" + echo "Couldn't find backup file, installing new database" + echo "--------------------------------" + touch /tmp/.upgrade_db_failed + chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" > /tmp/chrootdb.out + fi fi if [ -f /tmp/etc/KnoppMyth-version ] then - chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t hostsettings + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t hostsettings #change permissions of /myth (only needed on km->linhes) - chown -R mythtv:mythtv $mountpoint/myth - chown -R root:root $mountpoint/myth/backup + chown -R mythtv:mythtv $mountpoint/myth + chown -R root:root $mountpoint/myth/backup else - chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings fi # #Run second time @@ -300,8 +315,6 @@ function upgrade () { chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install apply_new_auth - - umount "$mountpoint/dev" umount "$mountpoint/proc" @@ -364,10 +377,14 @@ 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 + echo $CMDLINE | grep -q clean_upgrade + if [ $? = 1 ] + then + $run mount_it $disk if [ -f /new_boot/etc/systemconfig ] then ###########ADD templates @@ -378,10 +395,11 @@ echo "-----------------------------------------------------------------------3-- cp /new_boot/etc/systemconfig /etc/systemconfig cp -rf /new_boot/etc /tmp/etc cp -rf /new_boot/var/lib/oss /tmp/oss - + [ -e /tmp/etc/mdadm.conf ] && cp -rf /tmp/etc/mdadm.conf /etc/ $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings -h $MVHOSTNAME -d 127.0.0.1 else cp -rf /new_boot/etc /tmp/etc + [ -e /tmp/etc/mdadm.conf ] && cp -rf /tmp/etc/mdadm.conf /etc/ #now we search for the timezone and try to update TZREGION=`cat /tmp/etc/timezone | cut -d"/" -f1` TZSUB=`cat /tmp/etc/timezone | cut -d"/" -f2 -` @@ -394,20 +412,13 @@ echo "-----------------------------------------------------------------------3-- $run update_db_it HostTimeZoneRegion "$TZREGION" $run update_db_it HostTimeZoneRegion_$TZREGION "$TZSUB" fi - - - fi - - - $run umount_it $disk + fi ;; upgrade_it) - #"$MV_ROOT/bin/install_proxy.sh upgrade_it " + install_drive + " " + rootfs + "&" upgrade - ;; disk_model_it) model="unknown" @@ -420,11 +431,8 @@ echo "-----------------------------------------------------------------------3-- 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 - + size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` + echo ""$model" $size " >/tmp/model ;; network_check_it) #Should never return from check_network diff --git a/abs/core-testing/LinHES-config/restore_km_db_chroot.sh b/abs/core-testing/LinHES-config/restore_km_db_chroot.sh index 17ad113..2f5ba72 100644 --- a/abs/core-testing/LinHES-config/restore_km_db_chroot.sh +++ b/abs/core-testing/LinHES-config/restore_km_db_chroot.sh @@ -35,7 +35,6 @@ if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] echo "restoring old database" gunzip -c /myth/backup/mythconverg.sql.gz > /myth/backup/mythconverg.sql mysql mythconverg < /myth/backup/mythconverg.sql - else echo "Could not restore old database, mythconverg.sql is missing." touch /tmp/.upgrade_db_failed -- cgit v0.12