summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm
diff options
context:
space:
mode:
authorMichael Janczyk2012-12-07 17:11:52 +0100
committerMichael Janczyk2012-12-07 17:11:52 +0100
commit386ac7aa6bb5f1a75c622488674ffdb42596f4dd (patch)
tree142f273fb03f419fe454a1a798f2384d41897f3a /src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm
parent- respect blacklisting of modules when autoloading modules in hwautocfg '-b' ... (diff)
downloadcore-386ac7aa6bb5f1a75c622488674ffdb42596f4dd.tar.gz
core-386ac7aa6bb5f1a75c622488674ffdb42596f4dd.tar.xz
core-386ac7aa6bb5f1a75c622488674ffdb42596f4dd.zip
Added missing plugin files for RHEL, Scientific Linux and CentOS Linux.
Removed deprecated SciLin files. postinit.local from the InitRamFS will be executed, if fetching of the tgz file fails.
Diffstat (limited to 'src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm')
-rw-r--r--src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm b/src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm
new file mode 100644
index 00000000..9a04afc4
--- /dev/null
+++ b/src/os-plugins/plugins/desktop/OpenSLX/Distro/Rhel.pm
@@ -0,0 +1,132 @@
+# Copyright (c) 2006..2009 - 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/
+# -----------------------------------------------------------------------------
+# desktop/OpenSLX/Distro/Rhel.pm
+# - provides RHEL specific overrides of the Distro API for the desktop
+# plugin.
+# -----------------------------------------------------------------------------
+package desktop::OpenSLX::Distro::Rhel;
+
+use strict;
+use warnings;
+
+use base qw(desktop::OpenSLX::Distro::Base);
+
+use File::Path;
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+
+sub GDMPathInfo
+{
+ my $self = shift;
+
+ my $pathInfo = $self->SUPER::GDMPathInfo();
+
+ # create gdm.conf-custom instead of gdm.conf
+ $pathInfo->{config} = '/etc/gdm/custom.conf';
+
+ return $pathInfo;
+}
+
+sub setupGDMScript
+{
+ my $self = shift;
+ my $repoPath = shift;
+
+ my $script = $self->SUPER::setupGDMScript($repoPath);
+
+ my $configFile = $self->GDMPathInfo->{config};
+
+ # include common stuff (independent of display manager used)
+ $script = _setupCommonDmScript($script);
+
+ $script .= unshiftHereDoc(<<' End-of-Here');
+ echo "DISPLAYMANAGER=GNOME" \
+ >/mnt/etc/sysconfig/desktop
+ # gdm does not like AUFS/UnionFS on its var directory
+ mkdir -m 1770 /mnt/var/lib/gdm
+ chown root:gdm /mnt/var/lib/gdm
+ End-of-Here
+
+ return $script;
+}
+
+sub GDMConfigHashForWorkstation
+{
+ my $self = shift;
+
+ my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
+ $configHash->{'daemon'}->{SessionDesktopDir} =
+ '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions';
+ $configHash->{'daemon'}->{Greeter} =
+ '/usr/libexec/gdmgreeter';
+
+ return $configHash;
+}
+
+sub setupKDMScript
+{
+ my $self = shift;
+ my $repoPath = shift;
+
+ # SUSE reads /var/adm/kdm/kdmrc.sysconfig, so we link that to
+ # our config file
+ my $pathInfo = $self->KDMPathInfo();
+ my $configFile = $pathInfo->{config};
+ mkpath("/etc/opt/kdm");
+ mkpath("/var/adm/kdm");
+ # maybe backup kdmrc.sysconfig sometimes
+ unlink("/var/adm/kdm/kdmrc.sysconfig");
+ # the config file gets overwritten if this script is present
+ unlink("/opt/kde3/share/apps/kdm/read_sysconfig.sh");
+ symlink("/etc/opt/kdm/kdmrc", "/var/adm/kdm/kdmrc.sysconfig");
+
+ my $script = $self->SUPER::setupKDMScript($repoPath);
+
+ # include common stuff (independent of display manager used)
+ $script = _setupCommonDmScript($script);
+
+ $script .= unshiftHereDoc(<<' End-of-Here');
+ echo "DISPLAYMANAGER=KDE" \
+ >/mnt/etc/sysconfig/desktop
+ End-of-Here
+
+ return $script;
+}
+
+sub _setupCommonDmScript
+{
+ my $script = shift;
+
+ $script .= unshiftHereDoc(<<' End-of-Here');
+ # cleanup after users Xorg session
+ sed 's,^#!.*,,' /mnt/etc/X11/xdm/Xreset \
+ > /mnt/etc/X11/xdm/Xreset.system
+ echo -e '#!/bin/sh\n#\n# modified by desktop plugin in Stage3\n#\n
+ # remove safely any remaining files of the leaving user in /tmp
+ ( su -c "rm -rf /tmp/*" - $USER
+ echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) &
+ . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset
+ chmod a+x /mnt/etc/X11/xdm/Xreset*
+
+ # enable the inittab entry again (incomplete)
+ # sed -e "s,# line deleted.*,x:5:respawn:/etc/X11/prefdm -nodaemon," \
+ # -i /mnt/etc/inittab
+ End-of-Here
+
+ return $script;
+}
+
+1;