summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk von Suchodoletz2011-06-02 16:54:23 +0200
committerDirk von Suchodoletz2011-06-02 16:54:23 +0200
commit326db16c923fce718e86ef298e751c038beb4ad3 (patch)
treed56eac7d94536969a9172289400a0ab21891f3ae
parentFurther missing component for LinuxMint ... (diff)
downloadcore-326db16c923fce718e86ef298e751c038beb4ad3.tar.gz
core-326db16c923fce718e86ef298e751c038beb4ad3.tar.xz
core-326db16c923fce718e86ef298e751c038beb4ad3.zip
...
-rw-r--r--src/installer/OpenSLX/OSSetup/Distro/LinuxMint.pm119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/installer/OpenSLX/OSSetup/Distro/LinuxMint.pm b/src/installer/OpenSLX/OSSetup/Distro/LinuxMint.pm
new file mode 100644
index 00000000..84a80ee2
--- /dev/null
+++ b/src/installer/OpenSLX/OSSetup/Distro/LinuxMint.pm
@@ -0,0 +1,119 @@
+# Copyright (c) 2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# OSSetup/Distro/LinuxMint.pm
+# - provides LinuxMint-specific overrides of the OSSetup Distro API.
+# -----------------------------------------------------------------------------
+package OpenSLX::OSSetup::Distro::LinuxMint;
+
+use strict;
+use warnings;
+
+use base qw(OpenSLX::OSSetup::Distro::Base);
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+sub new
+{
+ my $class = shift;
+ my $self = {};
+ return bless $self, $class;
+}
+
+sub initialize
+{
+ my $self = shift;
+ my $engine = shift;
+
+ $self->SUPER::initialize($engine);
+ $self->{'packager-type'} = 'dpkg';
+ $self->{'meta-packager-type'} = $ENV{SLX_META_PACKAGER} || 'apt';
+ $self->{'stage1c-faked-files'} = [];
+ return;
+}
+
+sub preSystemInstallationHook
+{
+ my $self = shift;
+
+ $self->SUPER::preSystemInstallationHook();
+
+ # fake required /dev-entries
+ my %devInfo = (
+ mem => { type => 'c', major => '1', minor => '1' },
+ null => { type => 'c', major => '1', minor => '3' },
+ zero => { type => 'c', major => '1', minor => '5' },
+ random => { type => 'c', major => '1', minor => '8' },
+ urandom => { type => 'c', major => '1', minor => '9' },
+ kmsg => { type => 'c', major => '1', minor => '11' },
+ console => { type => 'c', major => '5', minor => '1' },
+ ptmx => { type => 'c', major => '5', minor => '2' },
+ );
+ foreach my $dev (keys %devInfo) {
+ my $info = $devInfo{$dev};
+ if (!-e "/dev/$dev") {
+ if (slxsystem(
+ "mknod /dev/$dev $info->{type} $info->{major} $info->{minor}"
+ )) {
+ croak(_tr("unable to create dev-node '%s'! (%s)", $dev, $!));
+ }
+ }
+ }
+ foreach my $devDir ('pts', 'shm', '.udevdb', '.udev') {
+ if (!-e "/dev/$devDir") {
+ if (slxsystem("mkdir -p /dev/$devDir")) {
+ croak(_tr("unable to create dev-dir '%s'! (%s)", $devDir, $!));
+ }
+ }
+ }
+
+ # replace /usr/sbin/invoke-rc.d by a dummy, in order to avoid a whole lot
+ # of initscripts being started. Wishful thinking: there should be another
+ # way to stop LinuxMint from doing this, as this is not really very supportive
+ # of folder-based installations (then again: I may simply be too stupid
+ # to find out how it is supposed to work ...)
+ rename('/usr/sbin/invoke-rc.d', '/usr/sbin/_invoke-rc.d');
+ spitFile('/usr/sbin/invoke-rc.d', "#! /bin/sh\nexit 0\n");
+ chmod 0755, '/usr/sbin/invoke-rc.d';
+}
+
+sub startSession
+{
+ my $self = shift;
+ my $osDir = shift;
+
+ $self->SUPER::startSession($osDir);
+
+ # As in preSystemInstallationHook, we replace /usr/sbin/invoke-rc.d by a
+ # dummy.
+ #
+ # During installation, this might not exist yet, so we better check
+ if (-e '/usr/sbin/invoke-rc.d') {
+ rename('/usr/sbin/invoke-rc.d', '/usr/sbin/_invoke-rc.d');
+ spitFile('/usr/sbin/invoke-rc.d', "#! /bin/sh\nexit 0\n");
+ chmod 0755, '/usr/sbin/invoke-rc.d';
+ }
+}
+
+sub finishSession
+{
+ my $self = shift;
+
+ # restore /usr/sbin/invoke-rc.d
+ rename('/usr/sbin/_invoke-rc.d', '/usr/sbin/invoke-rc.d');
+
+ $self->SUPER::finishSession();
+}
+
+1;