function log { echo `date "+%Y/%m/%d %H:%M"` $@ } echo '**************************************************************' log "Press Ctrl-c now to stop the dev environment reimaging process" echo '**************************************************************' ; sleep 5 || exit 0 chmod 400 /root/key dest=/env drive=`df / | tail -1 | awk '{print $1}' | sed 's/...$//'` #/dev/ad0 devroot=${drive}s2a devswap=${drive}s2b devvar=${drive}s2d devusr=${drive}s2e # Start with some cleaning # Delete files from interrupted restore runs rm -f /tmp/rst* # Disks should not be mounted umount -f $devusr 2>/dev/null umount -f $devvar 2>/dev/null umount -f $devroot 2>/dev/null # And clean out anything under their mountpoints, just in case # The second attempt will clear $dest if a system-immutable var/empty exists there rm -rf $dest || ( chflags noschg $dest/var/empty ; rm -rf $dest || ( log Cant clear $dest ; exit 1 ) ) mkdir $dest $dest/usr log "Scrub everything off the dev environment disks" newfs -n $devroot >/dev/null newfs -Un $devusr >/dev/null newfs -Un $devvar >/dev/null log "Restore the latest live environment image" log ...restore '/' mount $devroot $dest ; cd $dest ssh -i "/root/key" reimageuser@fileserver "dd bs=1M if=root.dump" | restore -rf - log ...restore '/var' mount $devvar $dest/var ; cd $dest/var ssh -i "/root/key" reimageuser@fileserver "dd bs=1M if=var.dump" | restore -rf - log ...restore '/usr' mount $devusr $dest/usr ; cd $dest/usr ssh -i "/root/key" reimageuser@fileserver "dd bs=1M if=usr.dump" | restore -rf - log "Convert the live environment image to a proper dev. environment" # stuff goes here log "Changing default boot device to main OS" boot0cfg -s2 $drive mv /etc/fstab /etc/fstab.bak mv $dest/etc/fstab $dest/etc/fstab.bak cat << EOF | tee /etc/fstab > $dest/etc/fstab $devroot / ufs rw 1 1 $devusr /usr ufs rw 2 2 $devvar /var ufs rw 2 2 $(df / | tail -1 | awk '{print $1}') /reimage ufs rw,noauto 2 2 $devswap none swap sw /dev/acd0 /cdrom cd9660 ro,noauto EOF log Rebooting in 5 seconds, ctrl-c to cancel ; sleep 5 || exit 0 reboot