diff -ruN e-smith-base-5.4.0/root/etc/e-smith/db/configuration/defaults/bootstrap-console/Restore e-smith-base-5.4.0.v58t/root/etc/e-smith/db/configuration/defaults/bootstrap-console/Restore --- e-smith-base-5.4.0/root/etc/e-smith/db/configuration/defaults/bootstrap-console/Restore 1969-12-31 16:00:00.000000000 -0800 +++ e-smith-base-5.4.0.v58t/root/etc/e-smith/db/configuration/defaults/bootstrap-console/Restore 2005-11-20 20:28:04.000000000 -0800 @@ -0,0 +1 @@ +enabled diff -ruN e-smith-base-5.4.0/root/sbin/e-smith/bootstrap-console e-smith-base-5.4.0.v58t/root/sbin/e-smith/bootstrap-console --- e-smith-base-5.4.0/root/sbin/e-smith/bootstrap-console 2014-03-15 17:35:50.000000000 -0700 +++ e-smith-base-5.4.0.v58t/root/sbin/e-smith/bootstrap-console 2014-03-15 23:13:53.000000000 -0700 @@ -36,11 +36,9 @@ use esmith::console::backup_running; esmith::console::backup_running->new->doit($console, $db); -unless ($db->get_value('PasswordSet') eq 'yes') # Too late to do a restore -{ - use esmith::console::perform_restore; - esmith::console::perform_restore->new->doit($console, $db); -} +use esmith::console::perform_restore; +esmith::console::perform_restore->new->doit($console, $db); + use esmith::console::system_password; esmith::console::system_password->new->doit($console, $db); diff -ruN e-smith-base-5.4.0/root/usr/share/perl5/vendor_perl/esmith/console/perform_restore.pm e-smith-base-5.4.0.v58t/root/usr/share/perl5/vendor_perl/esmith/console/perform_restore.pm --- e-smith-base-5.4.0/root/usr/share/perl5/vendor_perl/esmith/console/perform_restore.pm 2014-03-15 17:35:50.000000000 -0700 +++ e-smith-base-5.4.0.v58t/root/usr/share/perl5/vendor_perl/esmith/console/perform_restore.pm 2014-03-15 23:21:25.000000000 -0700 @@ -9,7 +9,7 @@ { my $class = shift; my $self = { - name => gettext("Perform restore from removable media"), + name => gettext("Restore from removable media"), order => installOrder(), }; bless $self, $class; @@ -30,6 +30,11 @@ sub doit { my ($self, $console, $db) = @_; + if ($db->get_prop('bootstrap-console', 'Run') eq 'yes') # called from bootstrap console + { + return if ($db->get_value('PasswordSet') eq 'yes'); # too late + } + return if ($db->get_prop('bootstrap-console', 'Restore') eq 'disabled'); my ($rc, $choice) = $console->yesno_page ( title => gettext("Restore From Backup"), @@ -137,12 +142,26 @@ gunzip | tar xf - > /dev/null ) 2>&1 | dialog --backtitle 'Restoring data' --guage 'Progress' 7 70"); - $db->set_prop("bootstrap-console", "ForceSave", "yes"); system("/bin/umount", "$device"); system("/etc/init.d/haldaemon", "stop"); system("/etc/init.d/messagebus", "stop"); rmdir("/mnt/bootstrap-console-backup"); system("/sbin/e-smith/signal-event", "post-upgrade"); + + unless ( $self->{bootstrap} ) + { + $db->set_prop("bootstrap-console", "Run", "yes"); + $db->set_prop("bootstrap-console", "ForceSave", "yes"); + $db->set_prop("bootstrap-console", "Restore", "disabled"); + + system("/usr/bin/tput", "clear"); + system("/sbin/e-smith/signal-event", "reboot"); + + # A bit of a hack to avoid the console restarting before the + # reboot takes effect. + + sleep(600); + } return; } diff -ruN e-smith-base-5.4.0/root/usr/share/perl5/vendor_perl/esmith/console/save_config.pm e-smith-base-5.4.0.v58t/root/usr/share/perl5/vendor_perl/esmith/console/save_config.pm --- e-smith-base-5.4.0/root/usr/share/perl5/vendor_perl/esmith/console/save_config.pm 2008-03-26 09:49:00.000000000 -0700 +++ e-smith-base-5.4.0.v58t/root/usr/share/perl5/vendor_perl/esmith/console/save_config.pm 2014-03-15 18:29:05.000000000 -0700 @@ -21,6 +21,7 @@ # After saving config we don't need to run it again on the next reboot. $db->set_prop("bootstrap-console", "ForceSave", "no"); $db->set_prop("bootstrap-console", "Run", "no"); + $db->set_prop("bootstrap-console", "Restore", "enabled"); # Allow console restores $console->infobox( title => gettext("Activating configuration settings"),