summaryrefslogtreecommitdiffstats
path: root/installer/OpenSLX/OSSetup/Engine.pm
diff options
context:
space:
mode:
Diffstat (limited to 'installer/OpenSLX/OSSetup/Engine.pm')
-rw-r--r--installer/OpenSLX/OSSetup/Engine.pm37
1 files changed, 37 insertions, 0 deletions
diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm
index 4d313e73..6064ce6f 100644
--- a/installer/OpenSLX/OSSetup/Engine.pm
+++ b/installer/OpenSLX/OSSetup/Engine.pm
@@ -304,6 +304,25 @@ sub updateVendorOS
$self->{'vendor-os-name'});
}
+sub startChrootedShellForVendorOS
+{
+ my $self = shift;
+
+ if (!-e $self->{'vendor-os-path'}) {
+ die _tr("can't start chrooted shell for vendor-OS '%s', since it doesn't exist!\n",
+ $self->{'vendor-os-path'});
+ }
+
+ $self->startLocalURLServersAsNeeded();
+
+ callInSubprocess( sub {
+ $self->changePersonalityIfNeeded();
+ $self->startChrootedShellInStage1D();
+ });
+ vlog 0, _tr("Chrooted shell for vendor-OS '%s' has been closed.\n",
+ $self->{'vendor-os-name'});
+}
+
sub removeVendorOS
{
my $self = shift;
@@ -910,6 +929,24 @@ sub updateStage1D
$self->stage1D_updateBasicVendorOS();
}
+sub startChrootedShellInStage1D
+{
+ my $self = shift;
+
+ vlog 0, "starting chrooted shell for $self->{'vendor-os-name'}";
+ vlog 0, "---------------------------------------";
+ vlog 0, "- please type 'exit' if you are done! -";
+ vlog 0, "---------------------------------------";
+
+ chrootInto($self->{'vendor-os-path'});
+
+ $self->{'meta-packager'}->startSession();
+ slxsystem('sh');
+ # hangs until user exits manually
+ $self->{'distro'}->updateDistroConfig();
+ $self->{'meta-packager'}->finishSession();
+}
+
sub stage1D_setupPackageSources()
{
my $self = shift;