diff options
Diffstat (limited to 'installer/OpenSLX/OSSetup/Engine.pm')
-rw-r--r-- | installer/OpenSLX/OSSetup/Engine.pm | 37 |
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; |