diff options
author | Sebastian Schmelzer | 2010-09-02 17:50:49 +0200 |
---|---|---|
committer | Sebastian Schmelzer | 2010-09-02 17:50:49 +0200 |
commit | 416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 (patch) | |
tree | 4715f7d742fec50931017f38fe6ff0a89d4ceccc /os-plugins | |
parent | Fix for the problem reported on the list (sed filter forgotten for the (diff) | |
download | core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.gz core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.xz core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.zip |
change dir structure
Diffstat (limited to 'os-plugins')
270 files changed, 0 insertions, 20656 deletions
diff --git a/os-plugins/OpenSLX/OSPlugin/Base.pm b/os-plugins/OpenSLX/OSPlugin/Base.pm deleted file mode 100644 index 2af0f04c..00000000 --- a/os-plugins/OpenSLX/OSPlugin/Base.pm +++ /dev/null @@ -1,631 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# Base.pm -# - provides empty base of the OpenSLX OSPlugin API. -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -=head1 NAME - -OpenSLX::OSPlugin::Base - the base class for all OpenSLX OS-plugins. - -=head1 DESCRIPTION - -This class defines the OpenSLX API for OS-plugins. - -The general idea behind OS-plugins is to extend any installed vendor-OS with -a specific features. Each feature is implemented as a separate, small software -component in order to make them easy to understand and maintain. - -Since all of these software components are plugged into the OpenSLX system by -means of a common API, we call them B<OS-plugin>s. - -This API can be separated into different parts: - -=over - -=item - L</Declarative Interface> (provide info about a plugin) - -=item - L</Vendor-OS Interface> (installing or removing a plugin into/from a -vendor-OS) - -=item - L</Initramfs Interface> (integrating a plugin into an initramfs) - -=back - -=head1 MORE INFO - -Please read the user-level introduction on plugins in the OpenSLX-wiki: -L<http://openslx.org/trac/de/openslx/wiki/PluginKonzept> (in German). - -If you'd like to know how a plugin is implemented, please have a look at the -'example' plugin, which contains some explainations and useful hints. - -If you have any questions regarding the concept of OS-plugins and their -implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -'#openslx' (on freenode). - -=cut - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::OSPlugin::Roster; - -=head1 PLUGIN API - -=head2 Declarative Interface - -=over - -=item new() - -Every plugin should provide a new-method and provide it's own name in the -'name' entry of $self. - -Please note that by convention, plugin names are all lowercase! - -=cut - -sub new -{ - confess "Creating OpenSLX::OSPlugin::Base-objects directly makes no sense!"; -} - -=item initialize() - -Initializes basic context for this plugin (esp. a reference to the OSPlugin -engine that drives this plugin. - -=cut - -sub initialize -{ - my $self = shift; - - $self->{'os-plugin-engine'} = shift; - $self->{'distro'} = shift; - - weaken($self->{'os-plugin-engine'}); - # avoid circular reference between plugin and its engine - - return; -} - -=item getInfo() - -Returns a hash-ref with administrative information about this plugin (what does -it do and how does it relate to other plugins). Every plugin needs to provide -this method and return the information about itself. - -The returned hash-ref must include at least the following entries: - -=over - -=item B<description> - -Explains the purpose of this plugins. - -=item B<precedence> - -Specifies the execution precedence of this plugin with respect to all other -plugins (plugins with lower precedences will be started before the ones with -a higher precedence). - -Valid values range from 0-99. If your plugin does not have any requirements -in this context, just specify the default value '50'. - -=item B<required> - -Specifies the list of plugins that are required by this plugin. - -Before any plugin can be installed, all other plugins that are required by it -must have been installed. - -=back - -=cut - -sub getInfo -{ - my $self = shift; - - return { - # a short (one-liner) description of this plugin - description => '', - }; -} - -=item getAttrInfo() - -Returns a hash-ref with information about all attributes supported by this -specific plugin. - -This default configuration will be added as attributes to the default system, -such that it can be overruled for any specific system by means of B<slxconfig>. - -The returned hash-ref must include at least the following entries: - -=over - -=item B<I<plugin-name>::active> - -Indicates whether or not this plugin is active (1 for active, 0 for inactive). - -=back - -=cut - -sub getAttrInfo -{ - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - }; -} - -=item getDefaultAttrsForVendorOS() - -Returns a hash-ref with the default attribute values for the given vendor-OS. - -=cut - -sub getDefaultAttrsForVendorOS -{ - my $self = shift; - - # the default implementation does not change the default values at all: - return $self->getAttrInfo(); -} - -=item checkStage3AttrValues() - -Checks if the stage3 values given in B<$stage3Attrs> are allowed and make sense. - -This method returns an array-ref of problems found. If there were no problems, -this methods returns undef. - -Plugins may override this implementation to do checks that for instance look -at the stage1 vendor-OS-attributes given in B<$vendorOSAttrs>. - -N.B.: this method is called while being chrooted into the vendor-OS, so it - may invoke all distro methods that expect to be run in this environment, - too - -=cut - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - - # this default implementation does no further checks (thus relying on the - # attributte regex check that is done in the AttributeRoster) - return; -} - -=item dependsOnPlugin() - -=cut - -sub dependsOnPlugin -{ - my $self = shift; - my $otherName = shift; - - if (!defined $self->{dependsOn}) { - my @dependsOn = $self->_determineAllPluginsWeDependOn(); - $self->{dependsOn} = \@dependsOn; - } - - return grep { $_ eq $otherName } @{$self->{dependsOn}}; -} - -=back - -=head2 Vendor-OS Interface - -=over - -=item installationPhase() - -In this method, the plugin should install itself into the given vendor-OS. - -What "installation" means is up to the plugin. Some plugins may just copy -a file from the OpenSLX host installation into the vendor-OS, while others may -need to download files from the internet and/or install packages through the -vendor-OS' meta packager. - -N.B.: This method is invoked while chrooted into the vendor-OS root. - -The hash-ref given in B<$info> contains vital information for the installation -process: - -=over - -=item C<plugin-repo-path> - -The folder where the stage1-plugin should store all files required by the -corresponding stage3 runlevel script. - -=item C<plugin-temp-path> - -A temporary playground that will be cleaned up automatically. - -=item C<openslx-base-path> - -In order to make the OpenSLX files from the host available, the OpenSLX base -folder (normally /opt/openslx) will be mounted into the chroot. -So if you have to copy any files from the host, fetch them from this path. - -=item C<openslx-config-path> - -In order to make the OpenSLX config files from the host available, the OpenSLX -config folder (normally /etc/opt/openslx) will be mounted into the chroot. -So if you have to copy any config files from the host, fetch them from this -path. - -=item C<plugin-attrs> - -Contains the attributes in effect for the installation of this plugin. - -=back - -=cut - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -=item removalPhase() - -In this method, the plugin should remove itself from the given vendor-OS. - -What "removal" means is up to the plugin. Some plugins may just delete -a file from the vendor-OS, while others may need to uninstall packages through -the vendor-OS' meta packager. - -N.B.: This method is invoked while chrooted into the vendor-OS root. - -The hash-ref given in B<$info> contains vital information for the installation -process: - -=over - -=item C<plugin-repo-path> - -The folder where the stage1-plugin should store all files required by the -corresponding stage3 runlevel script. - -=item C<plugin-temp-path> - -A temporary playground that will be cleaned up automatically. - -=item C<openslx-base-path> - -In order to make the OpenSLX files from the host available, the OpenSLX base -folder (normally /opt/openslx) will be mounted into the chroot. -So if you have to copy any files from the host, fetch them from this path. - -=item C<openslx-config-path> - -In order to make the OpenSLX config files from the host available, the OpenSLX -config folder (normally /etc/opt/openslx) will be mounted into the chroot. -So if you have to copy any config files from the host, fetch them from this -path. - -=item C<plugin-attrs> - -Contains the attributes in effect for the installation of this plugin. - -=back - -=cut - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -=item preInstallationPhase() - -In this method, any preparations for installation of the plugin into a vendor-OS -should be executed. As this method is being called immediately before the chroot -is entered, this is the last/only chance to copy any files into the chroot that -are required from within (in installationPhase()). - -The given parameters are similar to the ones for installationPhase(), except -that all paths are now relative to the root-fs instead of being relative to the -chroot (i.e. the paths are ready to be used from outside the chroot): - -A "exit 1;" will result in a not installed plugin. - -=over - -=item C<plugin-repo-path> - -The folder where the stage1-plugin should store all files required by the -corresponding stage3 runlevel script. - -=item C<plugin-temp-path> - -A temporary playground that will be cleaned up automatically. - -If a plugin needs to unpack any archives, these archives should be copied to -this folder (as it will be cleaned automatically). - -=item C<openslx-base-path> - -In order to make the OpenSLX files from the host available, the OpenSLX base -folder (normally /opt/openslx) will be mounted into the chroot. -So if you have to copy any files from the host, fetch them from this path. - -=item C<openslx-config-path> - -In order to make the OpenSLX config files from the host available, the OpenSLX -config folder (normally /etc/opt/openslx) will be mounted into the chroot. -So if you have to copy any config files from the host, fetch them from this -path. - -=item C<plugin-attrs> - -Contains the attributes in effect for the installation of this plugin. - -=item C<vendor-os-path> - -Contains the path to the vendor-OS into which the plugin will be installed. - -=back - -=cut - -sub preInstallationPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -=item postRemovalPhase() - -In this method, any plugin has the chance to do any necessary cleanup that -must be executed outside of the chroot. - -This method is invoked immediately after leaving the chroot into the vendor-OS -root, but before the plugin-temp-path has been cleaned up. So if required, any -files could be copied out of the temp-path somewhere into the root-fs. - -The given parameters are similar to the ones for removalPhase(), except that all -paths are now relative to the root-fs instead of being relative to the chroot -(i.e. the paths are ready to be used from outside the chroot): - -=over - -=item C<plugin-repo-path> - -The folder where the stage1-plugin should store all files required by the -corresponding stage3 runlevel script. - -=item C<plugin-temp-path> - -A temporary playground that will be cleaned up automatically. - -=item C<openslx-base-path> - -In order to make the OpenSLX files from the host available, the OpenSLX base -folder (normally /opt/openslx) will be mounted into the chroot. -So if you have to copy any files from the host, fetch them from this path. - -=item C<openslx-config-path> - -In order to make the OpenSLX config files from the host available, the OpenSLX -config folder (normally /etc/opt/openslx) will be mounted into the chroot. -So if you have to copy any config files from the host, fetch them from this -path. - -=item C<plugin-attrs> - -Contains the attributes in effect for the installation of this plugin. - -=item C<vendor-os-path> - -Contains the path to the vendor-OS from which the plugin has been removed. - -=back - -=cut - -sub postRemovalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -=back - -=head2 Initramfs Interface - -All of the following methods are invoked by the config demuxer when it makes an -initramfs for a system that has this plugin activated. Through these methods, -each plugin can integrate itself into that initramfs. - -=over - -=item suggestAdditionalKernelParams() - -Called in order to give the plugin a chance to add any kernel params it -requires. - -In order to do so, the plugin should return a list of additional kernel params -that it would like to see added. - -=cut - -sub suggestAdditionalKernelParams -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - return; -} - -=item suggestAdditionalKernelModules() - -Called in order to give the plugin a chance to add any kernel modules it -requires. - -In order to do so, the plugin should return the names of additional kernel -modules that it would like to see added. - -=cut - -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - my $attrs = shift; - - return; -} - -=item copyRequiredFilesIntoInitramfs() - -Called in order to give the plugin a chance to copy all required files from the -vendor-OS into the initramfs. - -N.B.: Only files that are indeed required by the initramfs should be copied -here, i.e. files that are needed *before* the root-fs has been mounted. -All other files should be taken from the root-fs instead! - -=cut - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - - return; -} - -=item setupPluginInInitramfs() - -Called in order to let the plugin setup all the files it requires in the -initramfs. - -Normally, you don't need to override this method in your own plugin, -as it is usually enough to override suggestAdditionalKernelParams(), -suggestAdditionalKernelModules() and maybe copyRequiredFilesIntoInitramfs(). - -=cut - -sub setupPluginInInitramfs -{ - my $self = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - - my $pluginName = $self->{name}; - my $pluginSrcPath = "$openslxConfig{'base-path'}/lib/plugins"; - my $buildPath = $makeInitRamFSEngine->{'build-path'}; - my $pluginInitdPath = "$buildPath/etc/plugin-init.d"; - my $initHooksPath = "$buildPath/etc/init-hooks"; - - # copy runlevel script - my $precedence = sprintf('%02d', $self->getInfo()->{precedence}); - my $scriptName = "$pluginSrcPath/$pluginName/XX_${pluginName}.sh"; - my $targetName = "$pluginInitdPath/${precedence}_${pluginName}.sh"; - if (-e $scriptName) { - $makeInitRamFSEngine->addCMD("cp $scriptName $targetName"); - $makeInitRamFSEngine->addCMD("chmod a+x $targetName"); - } - - # copy init hook scripts, if any - if (-d "$pluginSrcPath/$pluginName/init-hooks") { - my $hookSrcPath = "$pluginSrcPath/$pluginName/init-hooks"; - $makeInitRamFSEngine->addCMD( - "cp -r $hookSrcPath/* $buildPath/etc/init-hooks/" - ); - } - - # invoke hook methods to suggest additional kernel params ... - my @suggestedParams - = $self->suggestAdditionalKernelParams($makeInitRamFSEngine); - if (@suggestedParams) { - my $params = join ' ', @suggestedParams; - vlog(1, "plugin $pluginName suggests these kernel params: $params"); - $makeInitRamFSEngine->addKernelParams(@suggestedParams); - } - - # ... and kernel modules - my @suggestedModules - = $self->suggestAdditionalKernelModules($makeInitRamFSEngine, $attrs); - if (@suggestedModules) { - my $modules = join(',', @suggestedModules); - vlog(1, "plugin $pluginName suggests these kernel modules: $modules"); - $makeInitRamFSEngine->addKernelModules(@suggestedModules); - } - - # invoke hook method to copy any further files that are required in stage3 - # before the root-fs has been mounted - $self->copyRequiredFilesIntoInitramfs( - $buildPath, $attrs, $makeInitRamFSEngine - ); - - return 1; -} - -sub _determineAllPluginsWeDependOn -{ - my $self = shift; - my $seen = shift || {}; - - return if $seen->{$self->{name}}; - $seen->{$self->{name}} = 1; - - my %dependsOn; - if ($self->getInfo()->{required}) { - @dependsOn{@{$self->getInfo()->{required}}} = (); - } - - foreach my $depName (keys %dependsOn) { - my $depPlugin = OpenSLX::OSPlugin::Roster->getPlugin($depName); - my @subDeps = $depPlugin->_determineAllPluginsWeDependOn($seen); - @dependsOn{@subDeps} = (); - } - - return keys %dependsOn; -} - -=back - -1; diff --git a/os-plugins/OpenSLX/OSPlugin/Engine.pm b/os-plugins/OpenSLX/OSPlugin/Engine.pm deleted file mode 100644 index 25827205..00000000 --- a/os-plugins/OpenSLX/OSPlugin/Engine.pm +++ /dev/null @@ -1,857 +0,0 @@ -# Copyright (c) 2007, 2008 - 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/ -# ----------------------------------------------------------------------------- -# Engine.pm -# - provides driver engine for the OSPlugin API. -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::Engine; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Config; -use File::Basename; -use File::Path; -use Storable; - -use OpenSLX::Basics; -use OpenSLX::OSPlugin::Roster; -use OpenSLX::OSSetup::Engine; -use OpenSLX::ScopedResource; -use OpenSLX::Utils; - -=head1 NAME - -OpenSLX::OSPlugin::Engine - driver class for plugin handling. - -=head1 DESCRIPTION - -This class works as a driver for the installation/removal of plugins -into/from a vendor. - -Additionally, it provides the OS-Plugin support interface. - -=head1 PUBLIC METHODS - -=over - -=item new() - -Trivial constructor - -=cut - -sub new -{ - my $class = shift; - - my $self = {}; - - return bless $self, $class; -} - -=item initialize($pluginName, $vendorOSName ) - -Sets up basic data (I<$pluginName> and I<$vendorOSName>) as well as paths and -loads plugin. - -=cut - -sub initialize -{ - my $self = shift; - my $pluginName = shift; - my $vendorOSName = shift; - my $givenAttrs = shift || {}; - - $self->{'vendor-os-name'} = $vendorOSName; - - $self->{'vendor-os-path'} - = "$openslxConfig{'private-path'}/stage1/$vendorOSName"; - vlog(2, "vendor-OS path is '$self->{'vendor-os-path'}'"); - - if ($pluginName) { - $self->{'plugin-name'} = $pluginName; - $self->{'plugin-path'} - = "$openslxConfig{'base-path'}/lib/plugins/$pluginName"; - vlog(1, "plugin path is '$self->{'plugin-path'}'"); - - $self->{'plugin'} = $self->_loadPlugin(); - return if !$self->{'plugin'}; - - $self->{'chrooted-plugin-repo-path'} - = "$openslxConfig{'base-path'}/plugin-repo/$self->{'plugin-name'}"; - $self->{'plugin-repo-path'} - = "$self->{'vendor-os-path'}/$self->{'chrooted-plugin-repo-path'}"; - $self->{'chrooted-plugin-temp-path'} - = "/tmp/slx-plugin/$self->{'plugin-name'}"; - $self->{'plugin-temp-path'} - = "$self->{'vendor-os-path'}/$self->{'chrooted-plugin-temp-path'}"; - $self->{'chrooted-openslx-base-path'} = '/mnt/opt/openslx'; - $self->{'chrooted-openslx-config-path'} = '/mnt/etc/opt/openslx'; - - # merge attributes that were given on cmdline with the ones that - # already exist in the DB and finally with the default values - $self->{'plugin-attrs'} = { %$givenAttrs }; - my $defaultAttrs = $self->{plugin}->getDefaultAttrsForVendorOS( - $vendorOSName - ); - my $dbAttrs = $self->_fetchInstalledPluginAttrs($vendorOSName); - for my $attrName (keys %$defaultAttrs) { - next if exists $givenAttrs->{$attrName}; - $self->{'plugin-attrs'}->{$attrName} - = exists $dbAttrs->{$attrName} - ? $dbAttrs->{$attrName} - : $defaultAttrs->{$attrName}->{default}; - } - $self->{'vendorOS-attrs'} = $dbAttrs; - } - - return 1; -} - -=back - -=head2 Driver Interface - -The following methods are invoked by the slxos-plugin script in order to -install/remove a plugin into/from a vendor-OS: - -=over - -=item installPlugin() - -Invokes the plugin's installer method while chrooted into that vendor-OS. - -=cut - -sub installPlugin -{ - my $self = shift; - - $self->_checkIfRequiredPluginsAreInstalled(); - - # look for unknown attributes - my $attrs = $self->{'plugin-attrs'}; - my $attrInfos = $self->{plugin}->getAttrInfo(); - my @unknownAttrs = grep { !exists $attrInfos->{$_} } keys %$attrs; - if (@unknownAttrs) { - die _tr( - "The plugin '%s' does not support these attributes:\n\t%s", - $self->{'plugin-name'}, join(',', @unknownAttrs) - ); - } - - # check all attr-values against the regex of the attribute (if any) - my @attrProblems; - foreach my $attr (keys %$attrs) { - my $value = $attrs->{$attr}; - next if !defined $value; - my $attrInfo = $attrInfos->{$attr}; - my $regex = $attrInfo->{content_regex}; - if ($regex && $value !~ $regex) { - push @attrProblems, _tr( - "the value '%s' for attribute %s is not allowed.\nAllowed values are: %s", - $value, $attr, $attrInfo->{content_descr} - ); - } - } - - if (@attrProblems) { - my $complaint = join "\n", @attrProblems; - die $complaint; - } - - if ($self->{'vendor-os-name'} ne '<<<default>>>') { - - # as the attrs may be changed by the plugin during installation, we - # have to find a way to pass them back to this process (remember: - # installation takes place in a forked process in order to do a chroot). - # We simply serialize the attributes into a temp file and deserialize - # it in the calling process. - my $serializedAttrsFile - = "$self->{'plugin-temp-path'}/serialized-attrs"; - my $chrootedSerializedAttrsFile - = "$self->{'chrooted-plugin-temp-path'}/serialized-attrs"; - - rmtree([ $self->{'plugin-repo-path'}, $self->{'plugin-temp-path'} ]); - mkpath([ $self->{'plugin-repo-path'}, $self->{'plugin-temp-path'} ]); - - # invoke plugin and let it prepare the installation - $self->{plugin}->preInstallationPhase( { - 'plugin-repo-path' => $self->{'plugin-repo-path'}, - 'plugin-temp-path' => $self->{'plugin-temp-path'}, - 'openslx-base-path' => $openslxConfig{'base-path'}, - 'openslx-config-path' => $openslxConfig{'config-path'}, - 'plugin-attrs' => $self->{'plugin-attrs'}, - 'vendor-os-path' => $self->{'vendor-os-path'}, - } ); - - # HACK: do a dummy serialization here in order to get Storable - # completely loaded (otherwise it will complain in the chroot about - # missing modules). - store $self->{'plugin-attrs'}, $serializedAttrsFile; - - $self->_callChrootedFunctionForPlugin( - sub { - # invoke plugin and let it install itself into vendor-OS - $self->{plugin}->installationPhase( { - 'plugin-repo-path' - => $self->{'chrooted-plugin-repo-path'}, - 'plugin-temp-path' - => $self->{'chrooted-plugin-temp-path'}, - 'openslx-base-path' - => $self->{'chrooted-openslx-base-path'}, - 'openslx-config-path' - => $self->{'chrooted-openslx-config-path'}, - 'plugin-attrs' - => $self->{'plugin-attrs'}, - } ); - - # serialize possibly changed attributes (executed inside chroot) - store $self->{'plugin-attrs'}, $chrootedSerializedAttrsFile; - } - ); - - # now retrieve (deserialize) the current attributes and store them - $self->{'plugin-attrs'} = retrieve $serializedAttrsFile; - - # cleanup temp path - rmtree([ $self->{'plugin-temp-path'} ]); - - # now update the vendorOS-attrs and let the plugin itself check the - # stage3 attrs - $self->{'vendorOS-attrs'} = $self->{'plugin-attrs'}; - $self->checkStage3AttrValues( - $self->{'plugin-attrs'}, \@attrProblems - ); - if (@attrProblems) { - my $complaint = join "\n", @attrProblems; - die $complaint; - } - } - - $self->_addInstalledPluginToDB(); - - return 1; -} - -=item removePlugin() - -Invokes the plugin's removal method while chrooted into that vendor-OS. - -=cut - -sub removePlugin -{ - my $self = shift; - - $self->_checkIfPluginIsRequiredByOthers(); - - if ($self->{'vendor-os-name'} ne '<<<default>>>') { - - mkpath([ $self->{'plugin-repo-path'}, $self->{'plugin-temp-path'} ]); - - $self->_callChrootedFunctionForPlugin( - sub { - $self->{plugin}->removalPhase( { - 'plugin-repo-path' - => $self->{'chrooted-plugin-repo-path'}, - 'plugin-temp-path' - => $self->{'chrooted-plugin-temp-path'}, - 'openslx-base-path' - => $self->{'chrooted-openslx-base-path'}, - 'openslx-config-path' - => $self->{'chrooted-openslx-config-path'}, - 'plugin-attrs' - => $self->{'plugin-attrs'}, - } ); - } - ); - - # invoke plugin and let it prepare the installation - $self->{plugin}->postRemovalPhase( { - 'plugin-repo-path' => $self->{'plugin-repo-path'}, - 'plugin-temp-path' => $self->{'plugin-temp-path'}, - 'openslx-base-path' => $openslxConfig{'base-path'}, - 'openslx-config-path' => $openslxConfig{'config-path'}, - 'plugin-attrs' => $self->{'plugin-attrs'}, - 'vendor-os-path' => $self->{'vendor-os-path'}, - } ); - - rmtree([ $self->{'plugin-repo-path'}, $self->{'plugin-temp-path'} ]); - } - - $self->_removeInstalledPluginFromDB(); - - return 1; -} - -=item getInstalledPlugins() - -Returns the list of names of the plugins that are installed into the current -vendor-OS. - -=cut - -sub getInstalledPlugins -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - my @installedPlugins = $openslxDB->fetchInstalledPlugins($vendorOSID); - $openslxDB->disconnect(); - - return @installedPlugins; -} - -=back - -=head2 Support Interface - -This is the plugin support interface for OS-plugins, which represents the -connection between a plugin's implementation and the rest of the OpenSLX system. - -Plugin implementations are meant to use this interface in order to find -out details about the current vendor-OS or download files or install packages. - -=over - -=item vendorOSName() - -Returns the name of the current vendor-OS. - -=cut - -sub vendorOSName -{ - my $self = shift; - - return $self->{'vendor-os-name'}; -} - -=item distroName() - -Returns the name of the distro that the current vendor-OS is based on. - -Each distro name always consists of the distro type, a dash and the -distro version, like 'suse-10.2' or 'ubuntu-7.04'. - -=cut - -sub distroName -{ - my $self = shift; - - return $self->_osSetupEngine()->distroName(); -} - -=item downloadFile($fileURL, $targetPath, $wgetOptions) - -Invokes busybox's wget to download a file from the given URL. - -=over - -=item I<$fileURL> - -The URL of the file to download. - -=item I<$targetPath> [optional] - -The directory where the file should be downloaded into. The default is the -current plugin's temp directory. - -=item I<$wgetOptions> [optional] - -Any other options you'd like to pass to wget. - -=item I<Return Value> - -If the downloaded was successful this method returns C<1>, otherwise it dies. - -=back - -=cut - -sub downloadFile -{ - my $self = shift; - my $fileURL = shift || return; - my $targetPath = shift || $self->{'chrooted-plugin-temp-path'}; - my $wgetOptions = shift || ''; - - my $busybox = $self->_osSetupEngine()->busyboxBinary(); - - if (slxsystem("$busybox wget -P $targetPath $wgetOptions $fileURL")) { - die _tr('unable to download file "%s"! (%s)', $fileURL, $!); - } - - return 1; -} - -=item getInstalledPackages() - -Returns the list of names of the packages (as an array) that are already -installed in the vendor-OS. -Useful if a plugin wants to find out whether or not it has to -install additional packages. - -=cut - -sub getInstalledPackages -{ - my $self = shift; - - my $packager = $self->_osSetupEngine()->packager(); - return if !$packager; - - return $packager->getInstalledPackages(); -} - -=item getInstallablePackagesForSelection() - -Looks at the selection with the given name and returns the list of names of the -packages (as one string separated by spaces) that need to be installed in order -to complete the selection. - -=cut - -sub getInstallablePackagesForSelection -{ - my $self = shift; - my $selection = shift; - - return $self->_osSetupEngine()->getInstallablePackagesForSelection( - $selection - ); -} - -=item installPackages($packages) - -Installs the given packages into the vendor-OS. - -N.B: Since this method uses the meta-packager of the vendor-OS, package -dependencies will be determined and solved automatically. - -=over - -=item I<$packages> - -Contains a list of package names (separated by spaces) that shall be installed. - -=item I<Return Value> - -If the packages have been installed successfully this method return 1, -otherwise it dies. - -=back - -=cut - -sub installPackages -{ - my $self = shift; - my $packages = shift; - - return if !$packages; - - my $metaPackager = $self->_osSetupEngine()->metaPackager(); - return if !$metaPackager; - - return $metaPackager->installPackages($packages, 1); -} - -=item removePackages($packages) - -Removes the given packages from the vendor-OS. - -=over - -=item I<$packages> [ARRAY-ref] - -Contains a list of package names (separated by spaces) that shall be removed. - -=item I<Return Value> - -If the packages have been removed successfully this method return 1, -otherwise it dies. - -=back - -=cut - -sub removePackages -{ - my $self = shift; - my $packages = shift; - - return if !$packages; - - my $metaPackager = $self->_osSetupEngine()->metaPackager(); - return if !$metaPackager; - - return $metaPackager->removePackages($packages); -} - -=back - -=head2 Driver Interface - -The following methods are invoked by the slxos-plugin script in order to -install/remove a plugin into/from a vendor-OS: - -=over - -=item checkStage3AttrValues() - -Checks if the stage3 values given in B<$stage3Attrs> are allowed and make sense. - -This method gets also invoked whenever changes by slxconfig were made (passing -in only the stage3 attributes the user tried to change) and by the config -demuxer (passing in all stage3 attributes for the system currently being -demuxed). - -If all values are ok, this method returns 1 - if not, it extends the given -problems array-ref with the problems that were found (and returns undef). - -This method chroots into the vendor-OS and then asks the plugin itself to check -the attributes. - -=cut - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $problemsOut = shift; - - # we have to pass any problems back to this process (remember: - # installation takes place in a forked process in order to do a chroot). - # We simply serialize the problems into a temp file and deserialize - # it in the calling process. - my $serializedProblemsFile - = "$self->{'plugin-temp-path'}/serialized-problems"; - my $chrootedSerializedProblemsFile - = "$self->{'chrooted-plugin-temp-path'}/serialized-problems"; - - mkpath([ $self->{'plugin-repo-path'}, $self->{'plugin-temp-path'} ]); - - # HACK: do a dummy serialization here in order to get Storable - # completely loaded (otherwise it will complain in the chroot about - # missing modules). - store [], $serializedProblemsFile; - - $self->_callChrootedFunctionForPlugin( - sub { - # let plugin check by itself - my $problems = $self->{plugin}->checkStage3AttrValues( - $stage3Attrs, $self->{'vendorOS-attrs'} - ); - - # serialize list of problems (executed inside chroot) - store($problems, $chrootedSerializedProblemsFile) if $problems; - } - ); - - # now retrieve (deserialize) the found problems and pass them on - my $problems = retrieve $serializedProblemsFile; - rmtree([ $self->{'plugin-temp-path'} ]); - if ($problems && ref($problems) eq 'ARRAY' && @$problems) { - push @$problemsOut, @$problems; - return; - } - - return 1; -} - -=back - -=cut - -sub _loadPlugin -{ - my $self = shift; - - my $pluginModule = "OpenSLX::OSPlugin::$self->{'plugin-name'}"; - my $plugin = instantiateClass( - $pluginModule, { - acceptMissing => 1, - pathToClass => $self->{'plugin-path'}, - } - ); - return if !$plugin; - - # if there's a distro folder, instantiate the most appropriate distro class - my $distro; - if ($self->{'vendor-os-name'} ne '<<<default>>>' - && -d "$self->{'plugin-path'}/OpenSLX/Distro") { - my $pluginBasePath = "$openslxConfig{'base-path'}/lib/plugins"; - my $distroScope = $plugin->{name} . '::OpenSLX::Distro'; - $distro = loadDistroModule({ - distroName => $self->distroName(), - distroScope => $distroScope, - pathToClass => $pluginBasePath, - }); - if (!$distro) { - die _tr( - 'unable to load any distro module for vendor-OS %s in plugin %s', - $self->{'vendor-os-name'}, $plugin->{name} - ); - } - $distro->initialize($self); - } - - $plugin->initialize($self, $distro); - - return $plugin; -} - -sub _callChrootedFunctionForPlugin -{ - my $self = shift; - my $function = shift; - - # create os-setup engine here in order to block access to the vendor-OS - # via other processes (which could cause problems) - my $osSetupEngine = $self->_osSetupEngine(); - - my @bindmounts; - my @chrootPerlIncludes; - - # setup list of perl modules we want to bind into chroot - push @chrootPerlIncludes, "/mnt/opt/openslx/lib"; - - push @bindmounts, { - 'source' => $Config{privlibexp}, - 'target' => "$self->{'vendor-os-path'}/mnt/perl/privlibexp" - }; - push @chrootPerlIncludes, "/mnt/perl/privlibexp"; - push @bindmounts, { - 'source' => $Config{archlibexp}, - 'target' => "$self->{'vendor-os-path'}/mnt/perl/archlibexp" - }; - push @chrootPerlIncludes, "/mnt/perl/archlibexp"; - push @bindmounts, { - 'source' => $Config{vendorlibexp}, - 'target' => "$self->{'vendor-os-path'}/mnt/perl/vendorlibexp" - }; - push @chrootPerlIncludes, "/mnt/perl/vendorlibexp"; - push @bindmounts, { - 'source' => $Config{vendorarchexp}, - 'target' => "$self->{'vendor-os-path'}/mnt/perl/vendorarchexp" - }; - push @chrootPerlIncludes, "/mnt/perl/vendorarchexp"; - - # prepare openslx bind mounts - push @bindmounts, { - 'source' => $openslxConfig{'base-path'}, - 'target' => "$self->{'vendor-os-path'}/mnt/opt/openslx" - }; - push @bindmounts, { - 'source' => $openslxConfig{'config-path'}, - 'target' => "$self->{'vendor-os-path'}/mnt/etc/opt/openslx" - }; - - # create mountpoints - foreach (@bindmounts) { - mkpath($_->{'target'}); - } - - my $pluginSession = OpenSLX::ScopedResource->new({ - name => 'osplugin::session', - acquire => sub { - # bind mount perl includes, openslx base and config paths into vendor-OS - foreach (@bindmounts) { - slxsystem("mount -o bind $_->{'source'} $_->{'target'}") == 0 - or die _tr( - "unable to bind mount '%s' to '%s'! (%s)", - $_->{'source'}, $_->{'target'}, $! - ); - } - - # add mounted perl includes to @INC - foreach (@chrootPerlIncludes) { - unshift @INC, $_; - } - 1 - }, - release => sub { - # cleanup @INC again - while (my $perlinc = pop(@chrootPerlIncludes)) { - if ($INC[0] eq $perlinc) { - shift @INC; - } - } - - # unmount bindmounts - foreach (@bindmounts) { - slxsystem("umount $_->{'target'}") == 0 - or die _tr( - "unable to umount '%s'! (%s)", - $_->{'target'}, $! - ); - } - 1 - }, - }); - - # now let plugin install itself into vendor-OS - $osSetupEngine->callChrootedFunctionForVendorOS($function); - - return; -} - -sub _addInstalledPluginToDB -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - $openslxDB->addInstalledPlugin( - $vendorOSID, $self->{'plugin-name'}, $self->{'plugin-attrs'} - ); - $openslxDB->disconnect(); - - return 1; -} - -sub _checkIfRequiredPluginsAreInstalled -{ - my $self = shift; - - my $requiredPlugins = $self->{plugin}->getInfo()->{required} || []; - return 1 if !@$requiredPlugins; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - my @installedPlugins = $openslxDB->fetchInstalledPlugins($vendorOSID); - $openslxDB->disconnect(); - - my @missingPlugins - = grep { - my $required = $_; - ! grep { $_->{plugin_name} eq $required } @installedPlugins; - } - @$requiredPlugins; - - if (@missingPlugins) { - die _tr( - 'the plugin "%s" requires the following plugins to be installed first: "%s"!', - $self->{'plugin-name'}, join(',', @missingPlugins) - ); - } - - return 1; -} - -sub _checkIfPluginIsRequiredByOthers -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - my @installedPlugins = $openslxDB->fetchInstalledPlugins($vendorOSID); - $openslxDB->disconnect(); - - my @lockingPlugins - = grep { - my $installed - = OpenSLX::OSPlugin::Roster->getPlugin($_->{plugin_name}); - my $requiredByInstalled - = $installed - ? ($installed->getInfo()->{required} || []) - : []; - grep { $_ eq $self->{'plugin-name'} } @$requiredByInstalled; - } - @installedPlugins; - - if (@lockingPlugins) { - die _tr( - 'the plugin "%s" is required by the following plugins: "%s"!', - $self->{'plugin-name'}, - join(',', map { $_->{plugin_name} } @lockingPlugins) - ); - } - - return 1; -} - -sub _fetchInstalledPluginAttrs -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - my $installedPlugin = $openslxDB->fetchInstalledPlugins( - $vendorOSID, $self->{'plugin-name'} - ); - $openslxDB->disconnect(); - - return {} if !$installedPlugin; - return $installedPlugin->{attrs}; -} - -sub _removeInstalledPluginFromDB -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - my $vendorOSID = $self->_fetchVendorOSID($openslxDB); - $openslxDB->removeInstalledPlugin($vendorOSID, $self->{'plugin-name'}); - $openslxDB->disconnect(); - - return 1; -} - -sub _fetchVendorOSID -{ - my $self = shift; - my $openslxDB = shift; - - if ($self->{'vendor-os-name'} eq '<<<default>>>') { - return 0; - } - - my $vendorOS = $openslxDB->fetchVendorOSByFilter( { - name => $self->{'vendor-os-name'}, - } ); - if (!$vendorOS) { - die _tr( - 'unable to find vendor-OS "%s" in DB!', $self->{'vendor-os-name'} - ); - } - - return $vendorOS->{id}; -} - -sub _osSetupEngine -{ - my $self = shift; - - if (!$self->{'ossetup-engine'}) { - # create ossetup-engine for given vendor-OS: - my $osSetupEngine = OpenSLX::OSSetup::Engine->new; - $osSetupEngine->initialize($self->{'vendor-os-name'}, 'plugin'); - $self->{'ossetup-engine'} = $osSetupEngine; - } - - return $self->{'ossetup-engine'}; -} - -1; diff --git a/os-plugins/OpenSLX/OSPlugin/Roster.pm b/os-plugins/OpenSLX/OSPlugin/Roster.pm deleted file mode 100644 index 7bfed044..00000000 --- a/os-plugins/OpenSLX/OSPlugin/Roster.pm +++ /dev/null @@ -1,213 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# OSPlugin::Roster.pm -# - provides information about all available plugins -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::Roster; - -use strict; -use warnings; - -use OpenSLX::Basics; -use Clone qw(clone); - -my %plugins; - -=item C<getAvailablePlugins()> - -Returns a hash that keys the names of available plugins to their info hash. - -=cut - -sub getAvailablePlugins -{ - my $class = shift; - - $class->_init() if !%plugins; - - my %pluginInfo; - foreach my $pluginName (keys %plugins) { - $pluginInfo{$pluginName} = $plugins{$pluginName}->getInfo(); - } - return \%pluginInfo; -} - -=item C<getPlugin()> - -Returns an instance of the plugin with the given name - -=cut - -sub getPlugin -{ - my $class = shift; - my $pluginName = shift; - - $class->_init() if !%plugins; - - my $plugin = $plugins{$pluginName}; - return if !$plugin; - - return clone($plugin); -} - -=item C<getPluginAttrInfo()> - -Returns a hash that contains info about the attributes support by the -given plugin - -=cut - -sub getPluginAttrInfo -{ - my $class = shift; - my $pluginName = shift; - - $class->_init() if !%plugins; - - return if !$plugins{$pluginName}; - - return $plugins{$pluginName}->getAttrInfo(); -} - -=item C<addAllAttributesToHash()> - -Fetches attribute info from all available plugins and adds it to the given -hash-ref. - -If a plugin name has been given, only the attributes of that plugin will be -added. - -=over - -=item Return Value - -1 - -=back - -=cut - -sub addAllAttributesToHash -{ - my $class = shift; - my $attrInfo = shift; - my $pluginName = shift; - - return $class->_addAttributesToHash($attrInfo, $pluginName, sub { 1 } ); -} - -=item C<addAllStage1AttributesToHash()> - -Fetches attribute info relevant for stage1 (i.e. vendor-OS-attributes) -from all available plugins and adds it to the given hash-ref. - -If a plugin name has been given, only the attributes of that plugin will be -added. - -=over - -=item Return Value - -1 - -=back - -=cut - -sub addAllStage1AttributesToHash -{ - my $class = shift; - my $attrInfo = shift; - my $pluginName = shift; - - return $class->_addAttributesToHash($attrInfo, $pluginName, sub { - my $attr = shift; - return $attr->{applies_to_vendor_os}; - } ); -} - -=item C<addAllStage3AttributesToHash()> - -Fetches attribute info relevant for stage3 (i.e. system- or client-attributes) -from all available plugins and adds it to the given hash-ref. - -If a plugin name has been given, only the attributes of that plugin will be -added. - -=over - -=item Return Value - -1 - -=back - -=cut - -sub addAllStage3AttributesToHash -{ - my $class = shift; - my $attrInfo = shift; - my $pluginName = shift; - - return $class->_addAttributesToHash($attrInfo, $pluginName, sub { - my $attr = shift; - return $attr->{applies_to_systems} || $attr->{applies_to_clients}; - } ); -} - -sub _addAttributesToHash -{ - my $class = shift; - my $attrInfo = shift; - my $pluginName = shift; - my $testFunc = shift; - - $class->_init() if !%plugins; - - foreach my $plugin (values %plugins) { - next if $pluginName && $plugin->{name} ne $pluginName; - my $pluginAttrInfo = $plugin->getAttrInfo(); - foreach my $attr (keys %$pluginAttrInfo) { - next if !$testFunc->($pluginAttrInfo->{$attr}); - $attrInfo->{$attr} = clone($pluginAttrInfo->{$attr}); - } - } - return 1; -} - -sub _init -{ - my $class = shift; - - %plugins = (); - my $pluginPath = "$openslxConfig{'base-path'}/lib/plugins"; - foreach my $modulePath (glob("$pluginPath/*")) { - next if $modulePath !~ m{/([^/]+)$}; - my $pluginName = $1; - if (!-e "$modulePath/OpenSLX/OSPlugin/$pluginName.pm") { - vlog( - 1, - "skipped plugin-folder $modulePath as no corresponding perl " - . "module could be found." - ); - next; - } - my $class = "OpenSLX::OSPlugin::$pluginName"; - vlog(2, "loading plugin $class from path '$modulePath'"); - my $plugin = instantiateClass($class, { pathToClass => $modulePath }); - $plugins{$pluginName} = $plugin; - } - return; -} - -1; diff --git a/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm b/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm deleted file mode 100644 index ef1db778..00000000 --- a/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm +++ /dev/null @@ -1,253 +0,0 @@ -# Copyright (c) 2007..2010 - 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/ -# ----------------------------------------------------------------------------- -# bootsplash.pm -# - implementation of the 'bootsplash' plugin, which installs splashy -# into the ramfs, including changeing theme -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::bootsplash; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'bootsplash', - }; - - mkpath("$openslxConfig{'config-path'}/plugins/bootsplash/themes"); - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Installs Splashy as bootsplash into ramfs and sets a Theme. - End-of-Here - precedence => 30, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'bootsplash::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'bootsplash'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - - 'bootsplash::theme' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of the theme to apply to bootsplash (unset for no theme) - End-of-Here - content_regex => undef, - content_descr => undef, - default => 'openslx', - }, - }; -} - -sub suggestAdditionalKernelParams -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedParams; - - # add vga=0x317 unless explicit vga-mode is already set - if (!$makeInitRamFSEngine->haveKernelParam(qr{\bvga=})) { - push @suggestedParams, 'vga=0x317'; - } - - # add quiet, if not already set - if (!$makeInitRamFSEngine->haveKernelParam('quiet')) { - push @suggestedParams, 'quiet'; - } - - return @suggestedParams; -} - -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedModules; - - # Ubuntu needs vesafb and fbcon (which drags along some others) - #if ($makeInitRamFSEngine->{'distro-name'} =~ m{^ubuntu}i) { - push @suggestedModules, qw( i810 i830 i915 mga nouveau r128 radeon savage sis tdfx ttm via drm fbcon vesafb ); - #} - - return @suggestedModules; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - - my $splashyPath = - "$self->{openslxBasePath}/lib/plugins/bootsplash/files"; - my $pluginRepoPath = "$self->{pluginRepositoryPath}"; - - my $initFile = newInitFile(); - my $do_stop = unshiftHereDoc(<<' End-of-Here'); - /opt/openslx/plugin-repo/bootsplash/bin/splashy shutdown - sleep 1 - /opt/openslx/plugin-repo/bootsplash/bin/splashy_update \ - "progress 100" 2>/dev/null - End-of-Here - - # add helper functions to initfile - # first parameter name of the function - # second parameter content of the function - $initFile->addFunction('do_start', " : # do nothing here"); - $initFile->addFunction('do_stop', $do_stop); - $initFile->addFunction('do_restart', " : # do nothing here"); - - # place a call of the helper function in the stop block - # of the init file - # first parameter name of the function - # second parameter name of the block - $initFile->addFunctionCall('do_start', 'start'); - $initFile->addFunctionCall('do_stop', 'stop'); - $initFile->addFunctionCall('do_restart', 'restart'); - - my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0]; - - # write initfile to filesystem - spitFile( - "$pluginRepoPath/bootsplash.halt", - getInitFileForDistro($initFile, ucfirst($distro)) - ); - - # copy splashy(_update) into plugin-repo folder - mkpath("$pluginRepoPath/sbin"); - mkpath("$pluginRepoPath/lib"); - mkpath("$pluginRepoPath/usr/lib"); - slxsystem("cp -a $splashyPath/sbin/* $pluginRepoPath/sbin/; - cp -p $splashyPath/lib/* $pluginRepoPath/lib/; - cp -p $splashyPath/usr/lib/* $pluginRepoPath/usr/lib/") == 0 - or die _tr( - "unable to copy splashy to $pluginRepoPath" - ); - # create a proper (distro specific) runlevel script for halt - #my $initfile = newInitFile(); - #$initfile->addDaemon(""); - # - #my $runlevelscript = getInitFileForDistro($initfile, "ubuntu"); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - - my $bootsplashDir = "$openslxConfig{'base-path'}/lib/plugins/bootsplash"; - my $bootsplashConfigDir - = "$openslxConfig{'config-path'}/plugins/bootsplash"; - my $bootsplashTheme = $attrs->{'bootsplash::theme'} || ''; - my $splashyThemeDir = ''; - - if ($bootsplashTheme) { - my $bootsplashThemeDir = "$bootsplashDir/files/themes/$bootsplashTheme"; - my $altThemeDir = "$bootsplashConfigDir/themes/$bootsplashTheme"; - if (-d $bootsplashThemeDir) { - $splashyThemeDir = "$bootsplashThemeDir"; - } - elsif (-d $altThemeDir) { - $splashyThemeDir = "$altThemeDir"; - } - if (-d $splashyThemeDir) { - my $splashyPath = "$bootsplashDir/files"; - $makeInitRamFSEngine->addCMD( - "cp -p $splashyPath/sbin/splashy* $targetPath/sbin/; - cp -p $splashyPath/lib/lib* $targetPath/lib/; - cp -p $splashyPath/usr/lib/lib* $targetPath/usr/lib/" - ); - $makeInitRamFSEngine->addCMD( - "mkdir -p $targetPath/etc/splashy/themes" - ); - $makeInitRamFSEngine->addCMD( - "cp -a $splashyThemeDir $targetPath/etc/splashy/themes/" - ); - my $defSplashyTheme = "/etc/splashy/themes/$bootsplashTheme"; - my $splashyConfig = unshiftHereDoc(<<" End-of-Here"); - <?xml version="1.0" encoding="UTF-8"?> - <!-- Autogenerated by OpenSLX-plugin 'bootsplash' --> - <splashy> - <!-- themes directory: --> - <themes>/etc/splashy/themes</themes> - <!-- current theme (relative path) --> - <current_theme>$bootsplashTheme</current_theme> - <!-- full path to theme, fall back in case of problems --> - <default_theme>$defSplashyTheme</default_theme> - <pid>/etc/splashy/splashy.pid</pid> - <fifo>/dev/.initramfs/splashy.fifo</fifo> - </splashy> - End-of-Here - $makeInitRamFSEngine->addCMD( { - file => "$targetPath/etc/splashy/config.xml", - content => $splashyConfig, - } ); - } - } - else { - $bootsplashTheme = '<none>'; - } - - vlog(1, _tr("bootsplash-plugin: bootsplash=%s", $bootsplashTheme)); - - return; -} - -1; diff --git a/os-plugins/plugins/bootsplash/XX_bootsplash.sh b/os-plugins/plugins/bootsplash/XX_bootsplash.sh deleted file mode 100644 index 372e025d..00000000 --- a/os-plugins/plugins/bootsplash/XX_bootsplash.sh +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (c) 2007..2008 - RZ Uni Freiburg -# Copyright (c) 2008 - 2009 OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'bootsplash' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -if [ -e /initramfs/plugin-conf/bootsplash.conf ]; then - . /initramfs/plugin-conf/bootsplash.conf - if [ $bootsplash_active -ne 0 ]; then - if [ ${no_bootsplash} -eq 0 ]; then - # create a runlevelscript that will stop splashy before the start of KDM - d_mkrlscript init splashy.boot "" - echo -e "\tLD_LIBRARY_PATH=/opt/openslx/uclib-rootfs/lib/ \ - /opt/openslx/plugin-repo/bootsplash/sbin/splashy_update \ - exit 2>/dev/null \ - \n\ttype killall >/dev/null 2>&1 && killall -9 splashy" \ - >>/mnt/etc/init.d/splashy.boot - d_mkrlscript close splashy.boot "" - - cp /mnt/opt/openslx/plugin-repo/bootsplash/bootsplash.halt \ - /mnt/etc/init.d/bootsplash.halt - chmod 744 /mnt/etc/init.d/bootsplash.halt - cp -a /etc/splashy /mnt/etc/ - rllinker "bootsplash.halt" 1 1 - - # fix for ubuntu 1004+ - for i in init init.inactive; do - for j in kdm gdm xdm lxdm; do - dmfile=/mnt/etc/${i}/${j}.conf - if [ -f $dmfile ]; then - sed -e "s,^script.*,script\n\t#0x42#," \ - -e "s,#0x42#,# shutdown splashy - added by splashy plugin\n\t#0x42#," \ - -e "s,#0x42#,if [ ! \"x$(ps aux |grep splashy |grep -v grep | wc -l)\" -eq \"x0\" ]; then\n\t#0x42#, " \ - -e "s,#0x42#, LD_LIBRARY_PATH=/opt/openslx/uclib-rootfs/lib/ \\\\\n\t#0x42#," \ - -e "s,#0x42#, /opt/openslx/plugin-repo/bootsplash/sbin/splashy_update exit \\\\\n\t#0x42#," \ - -e "s,#0x42#, 2>/dev/null \n\t#0x42#," \ - -e "s,#0x42#,fi \n\t#0x42#," \ - -e "s,#0x42#,#splashy-stop-done#," \ - -i $dmfile 2>/dev/null & - fi - done - done - fi - fi -fi - diff --git a/os-plugins/plugins/bootsplash/files/lib/libglib-2.0.so.0 b/os-plugins/plugins/bootsplash/files/lib/libglib-2.0.so.0 Binary files differdeleted file mode 100644 index e96b345b..00000000 --- a/os-plugins/plugins/bootsplash/files/lib/libglib-2.0.so.0 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/lib/libsplashy.so.1 b/os-plugins/plugins/bootsplash/files/lib/libsplashy.so.1 Binary files differdeleted file mode 100644 index 817c6d2d..00000000 --- a/os-plugins/plugins/bootsplash/files/lib/libsplashy.so.1 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/lib/libsplashycnf.so.1 b/os-plugins/plugins/bootsplash/files/lib/libsplashycnf.so.1 Binary files differdeleted file mode 100644 index 71c251d1..00000000 --- a/os-plugins/plugins/bootsplash/files/lib/libsplashycnf.so.1 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/sbin/splashy b/os-plugins/plugins/bootsplash/files/sbin/splashy Binary files differdeleted file mode 100755 index fee26325..00000000 --- a/os-plugins/plugins/bootsplash/files/sbin/splashy +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/sbin/splashy_config b/os-plugins/plugins/bootsplash/files/sbin/splashy_config Binary files differdeleted file mode 100755 index 1e048366..00000000 --- a/os-plugins/plugins/bootsplash/files/sbin/splashy_config +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/sbin/splashy_update b/os-plugins/plugins/bootsplash/files/sbin/splashy_update Binary files differdeleted file mode 100755 index cb624fde..00000000 --- a/os-plugins/plugins/bootsplash/files/sbin/splashy_update +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/themes/openslx/blank.ttf b/os-plugins/plugins/bootsplash/files/themes/openslx/blank.ttf deleted file mode 100644 index e69de29b..00000000 --- a/os-plugins/plugins/bootsplash/files/themes/openslx/blank.ttf +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/themes/openslx/openslx.png b/os-plugins/plugins/bootsplash/files/themes/openslx/openslx.png Binary files differdeleted file mode 100644 index e7f996c6..00000000 --- a/os-plugins/plugins/bootsplash/files/themes/openslx/openslx.png +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/themes/openslx/theme.xml b/os-plugins/plugins/bootsplash/files/themes/openslx/theme.xml deleted file mode 100644 index 48854551..00000000 --- a/os-plugins/plugins/bootsplash/files/themes/openslx/theme.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Automatically generated by splashy_config. Do not edit --> -<splashy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://splashy.alioth.debian.org/schemas/1.1/themes.xsd"> - <info> - <!-- theme name is case sensitive. use directory name --> - <name>openslx</name> - <version>0.2</version> - <description>OpenSLX Splashy Theme</description> - <urls>http://openslx.com</urls> - <author>mj0@uni-freiburg.de</author> - </info> - <progressbar> - <!-- here are tags to set the bar... x coordinate, - y coordinate, width and height are for the progress bar. - Remember that x, y, width and height are expressed in percentage --> - <dimension> - <x>0</x> - <y>42</y> - <width>100</width> - <height>16</height> - </dimension> - <!-- here you can set the color of the progressbar... - set the amount of red, green, blue and alpha channel. - Remember that the max value is 255 and the minumun value is 0--> - <color> - <red>128</red> - <green>147</green> - <blue>161</blue> - <alpha>255</alpha> - </color> - <!-- whether or not you want a border around the progressbar. default: no --> - <border> - <enable>no</enable> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - <alpha>0</alpha> - </color> - </border> - <!-- here you can set the color of the progressbar background - set the amount of red, green, blue and alpha channel. - Remember that the max value is 255 and the minumun value is 0--> - <background> - <color> - <red>240</red> - <green>240</green> - <blue>240</blue> - <alpha>255</alpha> - </color> - </background> - <direction> - <boot>forward</boot> - <shutdown>backward</shutdown> - <resume>forward</resume> - <suspend>backward</suspend> - </direction> - <visibility> - <boot>yes</boot> - <shutdown>yes</shutdown> - <resume>yes</resume> - <suspend>yes</suspend> - </visibility> - </progressbar> - <!-- conventional path: /etc/splashy/themes + theme-name --> - <background> - <boot>openslx.png</boot> - <shutdown>openslx.png</shutdown> - <resume>openslx.png</resume> - <suspend>openslx.png</suspend> - <errorimg>openslx.png</errorimg> - <!-- resolution of the images. this value affects where - the progressbar will be drawn. If VALUE <= 0, then percentages - of the screen width and hight will be assumed --> - <dimension> - <!-- NOTE: x and y are not used by splashy --> - <x>0</x> - <y>0</y> - <width>0</width> - <height>0</height> - </dimension> - </background> - <textbox> - <!-- whether you want the textbox always - shown or no. If no, it will be shown only on error, - see autoverboseonerror --> - <enable>no</enable> - <!-- here are tags to set the text area... x coordinate, - y coordinate, width and height are for the text area. - Remember that x, y, width and height are expressed in percentage - or pixel units --> - <dimension> - <x>1</x> - <y>61</y> - <width>98</width> - <height>38</height> - </dimension> - <!-- here you can set the color of the text area... - set the amount of red, green, blue and alpha channel. - Remember that the max value is 255 and the minumun value is 0--> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - <alpha>0</alpha> - </color> - <!-- whether or not you want a border around the progressbar. default: no --> - <border> - <enable>no</enable> - <color> - <red>0</red> - <green>0</green> - <blue>0</blue> - <alpha>0</alpha> - </color> - </border> - <text> - <!-- font file to use, path relative to theme --> - <font> - <file>blank.ttf</file> - <height>2</height> - </font> - <!-- here you can set the color of the text/font... - set the amount of red, green, blue and alpha channel. - Remember that the max value is 255 and the minumun value is 0--> - <color> - <red>62</red> - <green>93</green> - <blue>114</blue> - <alpha>0</alpha> - </color> - </text> - </textbox> - <autoverboseonerror>no</autoverboseonerror> - <fadein>no</fadein> - <fadeout>no</fadeout> -</splashy> diff --git a/os-plugins/plugins/bootsplash/files/usr/lib/libdirect-1.2.so.9 b/os-plugins/plugins/bootsplash/files/usr/lib/libdirect-1.2.so.9 Binary files differdeleted file mode 100644 index fbe2d611..00000000 --- a/os-plugins/plugins/bootsplash/files/usr/lib/libdirect-1.2.so.9 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/usr/lib/libdirectfb-1.2.so.9 b/os-plugins/plugins/bootsplash/files/usr/lib/libdirectfb-1.2.so.9 Binary files differdeleted file mode 100644 index 76b77716..00000000 --- a/os-plugins/plugins/bootsplash/files/usr/lib/libdirectfb-1.2.so.9 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/files/usr/lib/libmagic.so.1 b/os-plugins/plugins/bootsplash/files/usr/lib/libmagic.so.1 Binary files differdeleted file mode 100644 index 513b3508..00000000 --- a/os-plugins/plugins/bootsplash/files/usr/lib/libmagic.so.1 +++ /dev/null diff --git a/os-plugins/plugins/bootsplash/init-hooks/05-have-kernelvars/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/05-have-kernelvars/bootsplash.sh deleted file mode 100644 index a54fde96..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/05-have-kernelvars/bootsplash.sh +++ /dev/null @@ -1,18 +0,0 @@ -# splashy depends on /proc/fb with VESA -# only activate with kernel option quiet and no debuglevel -if grep -q ".*" /proc/fb > /dev/null 2>&1 \ - && grep -qie " quiet " -qie "^quiet " -qie " quiet$" /proc/cmdline \ - > /dev/null 2>&1 \ - && [ $DEBUGLEVEL -eq 0 ] \ - && [ -e /bin/splashy ] ; then - export no_bootsplash=0 -else - export no_bootsplash=1 -fi - -if [ ${no_bootsplash} -eq 0 ]; then - /bin/splashy boot 2>/dev/null - # add splashy.boot runlevel script - export D_SPLASHY=splashy.boot -fi - diff --git a/os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh deleted file mode 100644 index 7f3d563e..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 10" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/20-nw-bridge-config/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/20-nw-bridge-config/bootsplash.sh deleted file mode 100644 index d8155ff0..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/20-nw-bridge-config/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 20" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/25-have-ip-config/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/25-have-ip-config/bootsplash.sh deleted file mode 100644 index be6ac567..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/25-have-ip-config/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 25" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/35-have-network-root/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/35-have-network-root/bootsplash.sh deleted file mode 100644 index 606eb694..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/35-have-network-root/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 35" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/40-started-hw-config/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/40-started-hw-config/bootsplash.sh deleted file mode 100644 index d5fc62ec..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/40-started-hw-config/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 40" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/50-have-layered-fs/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/50-have-layered-fs/bootsplash.sh deleted file mode 100644 index 4b7e9c78..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/50-have-layered-fs/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 50" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/60-have-servconfig/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/60-have-servconfig/bootsplash.sh deleted file mode 100644 index 9c3bd20f..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/60-have-servconfig/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 60" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/70-before-plugins/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/70-before-plugins/bootsplash.sh deleted file mode 100644 index fcd0c410..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/70-before-plugins/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 70" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/80-after-plugins/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/80-after-plugins/bootsplash.sh deleted file mode 100644 index 0abfa5b2..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/80-after-plugins/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 80" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/85-have-initial-boot/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/85-have-initial-boot/bootsplash.sh deleted file mode 100644 index 8738e454..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/85-have-initial-boot/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 85" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/90-postinit-done/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/90-postinit-done/bootsplash.sh deleted file mode 100644 index 2546d298..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/90-postinit-done/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 90" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/95-cleanup/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/95-cleanup/bootsplash.sh deleted file mode 100644 index 5ff86715..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/95-cleanup/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 95" >/dev/null 2>&1 diff --git a/os-plugins/plugins/bootsplash/init-hooks/99-handing-over/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/99-handing-over/bootsplash.sh deleted file mode 100644 index 93673915..00000000 --- a/os-plugins/plugins/bootsplash/init-hooks/99-handing-over/bootsplash.sh +++ /dev/null @@ -1 +0,0 @@ -[ ${no_bootsplash} -eq 0 ] && /bin/splashy_update "progress 100" >/dev/null 2>&1 diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm deleted file mode 100644 index 316448bb..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,432 +0,0 @@ -# Copyright (c) 2008 - 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/Base.pm -# - provides base implementation of the Distro API for the desktop plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use File::Basename; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{'engine'}); - # avoid circular reference between distro and its engine - - return 1; -} - -sub getDefaultDesktopManager -{ - my $self = shift; - - # the default implementation prefers KDM over GDM over XDM - return $self->isKDMInstalled() ? 'kdm' - : $self->isGDMInstalled() ? 'gdm' - : $self->isXDMInstalled() ? 'xdm' : undef; -} - -sub getDefaultDesktopKind -{ - my $self = shift; - - # the default implementation prefers GNOME over KDE over XFCE - return $self->isGNOMEInstalled() ? 'gnome' - : $self->isKDEInstalled() ? 'kde' - : $self->isXFCEInstalled() ? 'xfce' : undef; -} - -sub isGNOMEInstalled -{ - my $self = shift; - - return isInPath('gnome-session'); -} - -sub installGNOME -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('gnome') - ); - - return 1; -} - -sub isGDMInstalled -{ - my $self = shift; - - return isInPath('gdm'); -} - -sub installGDM -{ - my $self = shift; - - $self->{engine}->installPackages('gdm'); - - return 1; -} - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/gdm/gdm.conf', - paths => [ - '/var/lib/gdm', - '/var/log/gdm', - ], - }; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->GDMPathInfo(); - my $configFile = $pathInfo->{config}; - - my $paths - = join( - ' ', - map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} ) - ); - my $script = unshiftHereDoc(<<" End-of-Here"); - # written by OpenSLX-plugin 'desktop' - - for i in $paths; do - testmkd \$i - done - - cp /mnt$repoPath/gdm/\$desktop_mode/gdm.conf /mnt$configFile - - # activate theme only if the corresponding xml file is found - # (otherwise fall back to default theme of vendor-OS) - if [ -n "\$desktop_theme" ]; then - thdir=/opt/openslx/plugin-repo/desktop/themes/gdm - theme=\$desktop_theme - if [ -e /mnt\$thdir/\$theme/*.xml ]; then - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemedColor=," \\ - /mnt$configFile - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalThemeDir=\$thdir," \\ - /mnt$configFile - sed -i "s,\\[greeter\\],[greeter]\\nGraphicalTheme=\$theme," \\ - /mnt$configFile - fi - fi - case "\${desktop_allowshutdown}" in - none) - ;; - root) - sed "s|AllowShutdown.*|AllowShutdown=true|;\\ - s|SecureShutdown.*|SecureShutdown=true|" \\ - -i /mnt$configFile - ;; - users) - sed "s|AllowShutdown.*|AllowShutdown=true|;\\ - s|SecureShutdown.*|SecureShutdown=false|" \\ - -i /mnt$configFile - ;; - esac - [ "\${desktop_rootlogin}" -ne 0 ] && \\ - sed "s|AllowRoot.*|AllowRoot=true|" -i /mnt$configFile - End-of-Here - - return $script; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - return { - 'chooser' => { - }, - 'daemon' => { - AutomaticLoginEnable => 'false', - Group => 'gdm', - User => 'gdm', - DefaultSession => 'default.desktop', - }, - 'debug' => { - Enable => 'false', - }, - 'greeter' => { - AllowShutdown => 'false', - Browser => 'false', - MinimalUID => '500', - SecureShutdown => 'false', - ShowDomain => 'false', - DefaultWelcome => 'false', - Welcome => 'OpenSLX Workstation (%n)', - }, - 'gui' => { - }, - 'security' => { - AllowRoot => 'false', - AllowRemoteRoot => 'false', - DisallowTCP => 'true', - SupportAutomount => 'true', - }, - 'server' => { - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub GDMConfigHashForKiosk -{ - my $self = shift; - - my $configHash = $self->GDMConfigHashForWorkstation(); - $configHash->{daemon}->{AutomaticLoginEnable} = 'true'; - $configHash->{daemon}->{AutomaticLogin} = 'nobody'; - - return $configHash; -} - -sub GDMConfigHashForChooser -{ - my $self = shift; - - my $configHash = $self->GDMConfigHashForWorkstation(); - $configHash->{xdmcp}->{Enable} = 'true'; - - return $configHash; -} - -sub isKDEInstalled -{ - my $self = shift; - - return isInPath('startkde'); -} - -sub installKDE -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('kde') - ); - - return 1; -} - -sub isKDMInstalled -{ - my $self = shift; - - return isInPath('kdm'); -} - -sub installKDM -{ - my $self = shift; - - $self->{engine}->installPackages('kdm'); - - return 1; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/opt/kdm/kdmrc', - paths => [ - '/var/lib/kdm', - ], - }; - - return $pathInfo; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->KDMPathInfo(); - my $configFile = $pathInfo->{config}; - - my $paths - = join( - ' ', - map { '/mnt' . $_ } ( dirname($configFile), @{$pathInfo->{paths}} ) - ); - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'desktop' - - for i in $paths; do - testmkd \$i - done - - cp /mnt$repoPath/kdm/\$desktop_mode/kdmrc /mnt$configFile - - # activate theme only if the corresponding xml file is found - # (otherwise fall back to default theme of vendor-OS) - if [ -n "\$desktop_theme" ]; then - theme=\$desktop_theme - thdir=/opt/openslx/plugin-repo/desktop/themes/kdm/\$theme - if [ -e /mnt\$thdir/*.xml ]; then - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseBackground=false," \\ - /mnt$configFile - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nTheme=\$thdir," \\ - /mnt$configFile - sed -i "s,\\[X-\\*-Greeter\\],[X-*-Greeter]\\nUseTheme=true," \\ - /mnt$configFile - fi - fi - case "\${desktop_allowshutdown}" in - none) - sed "s|AllowShutdown.*|AllowShutdown=None|" \\ - -i /mnt$configFile - ;; - root) - sed "s|AllowShutdown.*|AllowShutdown=Root|" \\ - -i /mnt$configFile - ;; - users) - sed "s|AllowShutdown.*|AllowShutdown=All|" \\ - -i /mnt$configFile - ;; - esac - [ "\${desktop_rootlogin}" -ne 0 ] && \\ - sed "s|AllowRootLogin.*|AllowRootLogin=true|" -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - return { -# 'General' => { -# StaticServers => ':0', -# ReserveServers => ':1,:2,:3', -# ServerVTs => '-7', -# ConsoleTTYs => 'tty1,tty2,tty3,tty4,tty5,tty6', -# }, - 'X-:0-Core' => { - AutoLoginEnable => 'false', - AllowRootLogin => 'false', - AllowShutdown => 'All', - }, - 'X-*-Greeter' => { - GreetString => 'OpenSLX Workstation (%h)', - SelectedUsers => '', - UserList => 'false', - }, - 'X-:*-Greeter' => { - AllowClose => 'false', - UseAdminSession => 'true', - }, - 'X-:0-Greeter' => { - LogSource => '/dev/xconsole', - UseAdminSession => 'false', - PreselectUser => 'None', - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub KDMConfigHashForKiosk -{ - my $self = shift; - - my $configHash = $self->KDMConfigHashForWorkstation(); - $configHash->{'X-:0-Core'}->{AutoLoginEnable} = 'true'; - $configHash->{'X-:0-Core'}->{AutoLoginUser} = 'nobody'; - - return $configHash; -} - -sub KDMConfigHashForChooser -{ - my $self = shift; - - my $configHash = $self->KDMConfigHashForWorkstation(); - $configHash->{xdmcp}->{Enable} = 'true'; - - return $configHash; -} - -sub isXFCEInstalled -{ - my $self = shift; - - return isInPath('startxfce4'); -} - -sub installXFCE -{ - my $self = shift; - - $self->{engine}->installPackages( - $self->{engine}->getInstallablePackagesForSelection('xfce') - ); - - return 1; -} - -sub isXDMInstalled -{ - my $self = shift; - - return isInPath('xdm'); -} - -sub installXDM -{ - my $self = shift; - - $self->{engine}->installPackages('xdm'); - - return 1; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm deleted file mode 100644 index c212b3ef..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,63 +0,0 @@ -# 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/Debian.pm -# - provides Debian-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker gdm 1 1 - echo '/usr/bin/gdm' > /mnt/etc/X11/default-display-manager - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - End-of-Here - - return $script; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupKDMScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker kdm 1 1 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index f9428aab..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1;
\ No newline at end of file diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index 129f4d08..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm deleted file mode 100644 index 1dc0482c..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm +++ /dev/null @@ -1,132 +0,0 @@ -# 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/Scilin.pm
-# - provides Scilin-specific overrides of the Distro API for the desktop
-# plugin.
-# -----------------------------------------------------------------------------
-package desktop::OpenSLX::Distro::Scilin;
-
-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;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 433ed7e1..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2006..2010 - 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/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Suse; - -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 -e '# changed by $0 during stage3 setup\nDISPLAYMANAGER="gdm"' \ - >/mnt/etc/sysconfig/displaymanager - sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \ - /mnt/etc/sysconfig/windowmanager - #sed "s|XSESSION|/etc/xdm/Xsession|" -i /mnt$configFile - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - # no use for this configuration info file - rm /mnt/etc/gdm/gdm_sysconfig.* 2>/dev/null - End-of-Here - - return $script; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/'; - $configHash->{'daemon'}->{DefaultSession} = 'default.desktop'; - $configHash->{'daemon'}->{Greeter} = - '/usr/lib/gdm/gdmgreeter'; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - # check for kdm version - my $kdmVer; - my $kdmPath; - if (-e "/usr/bin/kdm") { - $kdmVer = "4"; - $kdmPath = "/usr/share/kde4"; - } - else { - $kdmVer = ""; - $kdmPath = "/opt/kde3/share"; - # change default theme to openslx-legacy if kdm3 - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - # 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("$kdmPath/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 .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - sed -i "s/DISPLAYMANAGER=.*/DISPLAYMANAGER=\"kdm$kdmver\"/" \ - /mnt/etc/sysconfig/displaymanager - [ $(grep -q DISPLAYMANAGER /mnt/etc/sysconfig/displaymanager) ] && \ - echo "DISPLAYMANAGER=\"kdm$kdmver\"" >>/mnt/etc/sysconfig/displaymanager - sed -i "s/DEFAULT_WM=.*/DEFAULT_WM=\"$desktop_kind\"/" \ - /mnt/etc/sysconfig/windowmanager - # needed for compatibility X11/session(s) - ln -s /etc/X11/session /mnt/etc/X11/sessions - End-of-Here - - return $script; -} - -sub _setupCommonDmScript -{ - my $script = shift; - - $script .= unshiftHereDoc(<<' End-of-Here'); - rllinker xdm 1 10 - # 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 - # avoid annoying messages on removed sound devices - ( su -c "rm ~/.kde4/share/config/phonondevicesrc" - $USER ) & - - # 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 - chmod 0400 /tmp/files.removed ) & - . /etc/X11/xdm/Xreset.system' >/mnt/etc/X11/xdm/Xreset - chmod a+x /mnt/etc/X11/xdm/Xreset* - - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm deleted file mode 100644 index ac14b2a5..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2006..2010 - 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/Suse_10_2.pm -# - provides SUSE-10.2-specific overrides of the Distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Suse_10_2; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Suse); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/opt/gnome/gdm/custom.conf'; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/'; - $configHash->{'daemon'}->{Greeter} = - '/opt/gnome/lib/gdm/gdmgreeter'; - - return $configHash; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index d222c102..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (c) 2006..2010 - 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/Ubuntu.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link 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}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.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/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started via upstart mechanism - mv /mnt/etc/init.inactive/gdm.conf /mnt/etc/init - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - # possible to do this directly? - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - #sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - # -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - - $pathInfo = { - config => "/etc/kde4/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - return { - 'chooser' => { - Multicast => 'false', - }, - 'daemon' => { - AutomaticLoginEnable => 'false', - Group => 'gdm', - User => 'gdm', - DefaultSession => 'default.desktop', - }, - 'security' => { - DisallowTCP => 'true', - }, - 'xdmcp' => { - Enable => 'false', - }, - }; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'General'}->{ServerVTs} = "-7"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/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 - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - mv /mnt/etc/init.inactive/kdm.conf /mnt/etc/init - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm deleted file mode 100644 index 6f00f181..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2006..2010 - 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/Ubuntu_8.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu_8; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/gdm.conf-custom'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.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/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started after dbus/hal - rllinker gdm 5 10 - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - my $kdmVer = "3"; - - $pathInfo = { - config => "/etc/kde$kdmVer/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/'; - - return $configHash; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - # change default theme to openslx-legacy if kdm3 - if ( $kdmVer == "3" ) { - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/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 - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - rllinker kdm 1 10 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm deleted file mode 100644 index 1022d6e8..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2006..2010 - 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/Ubuntu_9_04.pm -# - provides Ubuntu-specific overrides of the distro API for the desktop -# plugin. -# ----------------------------------------------------------------------------- -package desktop::OpenSLX::Distro::Ubuntu_9_04; - -use strict; -use warnings; - -use base qw(desktop::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub GDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::GDMPathInfo(); - - # link gdm.conf-custom instead of gdm.conf - $pathInfo->{config} = '/etc/gdm/gdm.conf-custom'; - - return $pathInfo; -} - -sub setupGDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupGDMScript($repoPath); - - my $configFile = $self->GDMPathInfo->{config}; - - $script .= unshiftHereDoc(<<' End-of-Here'); - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/gdm/PostSession/Default \ - >/mnt/etc/gdm/PostSession/Default.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/*" - echo "$USER files removed by $0" >/tmp/files.removed 2>/dev/null ) & - . /etc/gdm/PostSession/Default.system' >/mnt/etc/gdm/PostSession/Default - chmod a+x /mnt/etc/gdm/PostSession/Default* - # gdm should be started after dbus/hal - rllinker gdm 5 10 - echo '/usr/sbin/gdm' >/mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/metacity - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/gnome-session - # gdm does not like AUFS/UnionFS on its var directory - rm -rf /mnt/var/lib/gdm - mkdir -m 1770 /mnt/var/lib/gdm - chown root:gdm /mnt/var/lib/gdm - sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \ - -i /mnt$configFile - End-of-Here - - return $script; -} - -sub KDMPathInfo -{ - my $self = shift; - - my $pathInfo = $self->SUPER::KDMPathInfo(); - my $kdmVer = "4"; - - $pathInfo = { - config => "/etc/kde$kdmVer/kdm/kdmrc", - paths => [ - '/var/lib/kdm', - '/var/run/kdm', - ], - }; - - return $pathInfo; -} - -sub GDMConfigHashForWorkstation -{ - my $self = shift; - - my $configHash = $self->SUPER::GDMConfigHashForWorkstation(); - $configHash->{'daemon'}->{SessionDesktopDir} = - '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/'; - - return $configHash; -} - -sub KDMConfigHashForWorkstation -{ - my $self = shift; - - my $kdmVer = "4"; - my $configHash = $self->SUPER::KDMConfigHashForWorkstation(); - $configHash->{'General'}->{PidFile} = "/var/run/kdm.pid"; - $configHash->{'X-:0-Core'}->{Setup} = "/etc/kde$kdmVer/kdm/Xsetup"; - $configHash->{'X-:0-Core'}->{Startup} = "/etc/kde$kdmVer/kdm/Xstartup"; - $configHash->{'X-:0-Core'}->{Session} = "/etc/kde$kdmVer/kdm/Xsession"; - $configHash->{'X-:0-Core'}->{Reset} = "/etc/kde$kdmVer/kdm/Xreset"; - $configHash->{'X-:0-Core'}->{SessionsDirs} = - '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions'; - $configHash->{'X-:0-Core'}->{ServerAttempts} = "2"; - - return $configHash; -} - -sub setupKDMScript -{ - my $self = shift; - my $repoPath = shift; - - my $kdmVer = "4"; - my $script = $self->SUPER::setupKDMScript($repoPath); - - # change default theme to openslx-legacy if kdm3 - if ( $kdmVer == "3" ) { - print " * Please change to openslx-legacy theme when using kdm3\n"; - } - - $script .= "kdmver=$kdmVer\n"; - $script .= unshiftHereDoc(<<' End-of-Here'); - - # cleanup after users Xorg session - sed 's,^#!.*,,' /mnt/etc/kde$kdmver/kdm/Xreset \ - >/mnt/etc/kde$kdmver/kdm/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 - chmod 0400 /tmp/files.removed ) & - . /etc/kde$kdmver/kdm/Xreset.system' >/mnt/etc/kde$kdmver/kdm/Xreset - chmod a+x /mnt/etc/kde$kdmver/kdm/Xreset* - - rllinker kdm 1 10 - echo '/usr/bin/kdm' > /mnt/etc/X11/default-display-manager - chroot /mnt update-alternatives --set x-window-manager /usr/bin/kwin - chroot /mnt update-alternatives --set x-session-manager \ - /usr/bin/startkde - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm b/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm deleted file mode 100644 index 7d496483..00000000 --- a/os-plugins/plugins/desktop/OpenSLX/OSPlugin/desktop.pm +++ /dev/null @@ -1,712 +0,0 @@ -# Copyright (c) 2008..2010 - 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.pm -# - implementation of the 'desktop' plugin, which installs -# all needed information for a displaymanager and for the desktop. -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::desktop; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'desktop', - }; - - my $localGDMThemesDir - = "$openslxConfig{'config-path'}/plugins/desktop/themes/gdm"; - mkpath($localGDMThemesDir) unless -e $localGDMThemesDir; - my $localKDMThemesDir - = "$openslxConfig{'config-path'}/plugins/desktop/themes/kdm"; - mkpath($localKDMThemesDir) unless -e $localKDMThemesDir; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Sets a desktop and creates needed configs, theme can be set as well. - End-of-Here - precedence => 40, - # not really required e.g. for modern autoconfiguring systems like Ubuntu - # 10.04 - # required => [ qw( xserver ) ], - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - # stage3 - 'desktop::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'desktop'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'desktop::kind' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which desktop environment shall be used: gnome, kde, or xfce? - End-of-Here - content_regex => qr{^(gnome|kde|xfce)$}, - content_descr => '"gnome", "kde" or "xfce"', - default => undef, - }, - 'desktop::manager' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which display manager to start: gdm, kdm or xdm? - End-of-Here - content_regex => qr{^(gdm|kdm|xdm)$}, - content_descr => '"gdm", "kdm" or "xdm"', - default => undef, - }, - 'desktop::mode' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which type of operation mode shall be activated: - workstattion, kiosk or chooser? - End-of-Here - content_regex => qr{^(workstation|kiosk|chooser)$}, - content_descr => '"workstation", "kiosk" or "chooser"', - default => 'workstation', - }, - 'desktop::theme' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of the theme to apply to the desktop (unset for no theme) - End-of-Here - content_descr => 'one of the entries in "supported_themes"', - default => 'openslx', - }, - 'desktop::allowshutdown' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - allow shutdown of the SLX client via gdm/kdm. "none" disables - this functionality, "root" allows only the sysadmin and - "users" means free4all. - End-of-Here - content_regex => qr{^(none|root|users)$}, - content_descr => 'possible entries "none", "root" or "users"', - default => 'users', - }, - 'desktop::rootlogin' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - allow the system administrator to logon to the graphical - user interface (1 allow, 0 disallow). - End-of-Here - content_descr => '1 means allowed - 0 means forbidden', - content_regex => qr{^(0|1)$}, - default => '1', - }, - # kiosk mode just has the option to logon user nobody - #'desktop::auto-login' => { - # applies_to_systems => 1, - # applies_to_clients => 1, - # description => unshiftHereDoc(<<' End-of-Here'), - # set an arbitrary user which is logged in automatically into - # the graphical user interface (none disables, default). - # End-of-Here - # content_descr => 'none disables - <user> logins in that userid', - # default => 'none', - #}, - - # stage1 - 'desktop::gdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should gdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::gnome' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should gnome be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::kde' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should kde be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::kdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should kdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::supported_themes' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of all themes that shall be installed in vendor-OS (such - that they can be selected via 'desktop::theme' in stage 3). - End-of-Here - content_descr => 'a comma-separated list of theme names', - default => undef, - }, - 'desktop::xdm' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should xdm be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'desktop::xfce' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should xfce be available (installed in vendor-OS)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - }; -} - -sub getDefaultAttrsForVendorOS -{ - my $self = shift; - my $vendorOSName = shift; - - my $attrs = $self->getAttrInfo(); - - if ($vendorOSName =~ m{kde}) { - $attrs->{'desktop::manager'}->{default} = 'kdm'; - $attrs->{'desktop::kind'}->{default} = 'kde'; - } - elsif ($vendorOSName =~ m{gnome}) { - $attrs->{'desktop::manager'}->{default} = 'gdm'; - $attrs->{'desktop::kind'}->{default} = 'gnome'; - } - elsif ($vendorOSName =~ m{xfce}) { - $attrs->{'desktop::manager'}->{default} = 'xdm'; - $attrs->{'desktop::kind'}->{default} = 'xcfe'; - } - else { - $attrs->{'desktop::manager'}->{default} - = $self->{distro}->getDefaultDesktopManager(); - $attrs->{'desktop::kind'}->{default} - = $self->{distro}->getDefaultDesktopKind(); - } - return $attrs; -} - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - - my @problems; - - my $manager = $stage3Attrs->{'desktop::manager'} || ''; - if ($manager eq 'kdm') { - if (!defined $vendorOSAttrs->{'desktop::kdm'} - || $vendorOSAttrs->{'desktop::kdm'} == 1) { - if (!$self->{distro}->isKDMInstalled()) { - push @problems, _tr( - "KDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::kdm'} == 0) { - push @problems, _tr( - "desktop::kdm is 0, so using KDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - elsif ($manager eq 'gdm') { - if (!defined $vendorOSAttrs->{'desktop::gdm'} - || $vendorOSAttrs->{'desktop::gdm'} == 1) { - if (!$self->{distro}->isGDMInstalled()) { - push @problems, _tr( - "GDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::gdm'} == 0) { - push @problems, _tr( - "desktop::gdm is 0, so using GDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - elsif ($manager eq 'xdm') { - if (!defined $vendorOSAttrs->{'desktop::xdm'} - || $vendorOSAttrs->{'desktop::xdm'} == 1) { - if (!$self->{distro}->isXDMInstalled()) { - push @problems, _tr( - "XDM is not installed in vendor-OS, so using it as desktop manager wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::xdm'} == 0) { - push @problems, _tr( - "desktop::xdm is 0, so using XDM as desktop manager is not allowed for this vendor-OS!" - ); - } - } - - my $kind = $stage3Attrs->{'desktop::kind'} || ''; - if ($kind eq 'kde') { - if (!defined $vendorOSAttrs->{'desktop::kde'} - || $vendorOSAttrs->{'desktop::kde'} == 1) { - if (!$self->{distro}->isKDEInstalled()) { - push @problems, _tr( - "KDE is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::kde'} == 0) { - push @problems, _tr( - "desktop::kde is 0, so using KDE as desktop kind is not allowed for this vendor-OS!" - ); - } - } - elsif ($kind eq 'gnome') { - if (!defined $vendorOSAttrs->{'desktop::gnome'} - || $vendorOSAttrs->{'desktop::gnome'} == 1) { - if (!$self->{distro}->isGNOMEInstalled()) { - push @problems, _tr( - "GNOME is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::gnome'} == 0) { - push @problems, _tr( - "desktop::gnome is 0, so using GNOME as desktop kind is not allowed for this vendor-OS!" - ); - } - } - elsif ($kind eq 'xfce') { - if (!defined $vendorOSAttrs->{'desktop::xfce'} - || $vendorOSAttrs->{'desktop::xfce'} == 1) { - if (!$self->{distro}->isXFCEInstalled()) { - push @problems, _tr( - "XFCE is not installed in vendor-OS, so using it as desktop kind wouldn't work!" - ); - } - } - elsif ($vendorOSAttrs->{'desktop::xfce'} == 0) { - push @problems, _tr( - "desktop::xfce is 0, so using XFCE as desktop kind is not allowed for this vendor-OS!" - ); - } - } - - my @supportedThemes - = split ',', $vendorOSAttrs->{'desktop::supported_themes'} || ''; - my $theme = $stage3Attrs->{'desktop::theme'}; - if (defined $theme && !grep { $_ eq $theme } @supportedThemes) { - push @problems, _tr( - "desktop::theme '%s' does not refer to a supported theme!\nSupported themes are: %s", - $theme, $vendorOSAttrs->{'desktop::supported_themes'} || '' - ); - } - - return if !@problems; - - return \@problems; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - # We are going to change some of the stage1 attributes during installation - # (basically we are filling the ones that are not defined). Since the result - # of these changes might change between invocations, we do not want to store - # the resulting values, but we want to store the original (undef). - # In order to do so, we copy all stage1 attributes directly into the - # object hash and change them there. - $self->{gdm} = $self->{attrs}->{'desktop::gdm'}; - $self->{kdm} = $self->{attrs}->{'desktop::kdm'}; - $self->{xdm} = $self->{attrs}->{'desktop::xdm'}; - $self->{gnome} = $self->{attrs}->{'desktop::gnome'}; - $self->{kde} = $self->{attrs}->{'desktop::kde'}; - $self->{xcfe} = $self->{attrs}->{'desktop::xfce'}; - $self->{supported_themes} = $self->{attrs}->{'desktop::supported_themes'}; - - $self->_installRequiredPackages(); - $self->_fillUnsetStage1Attrs(); - $self->_ensureSensibleStage3Attrs(); - - # start to actually do something - according to current stage1 attributes - if ($self->{gdm}) { - $self->_setupGDM(); - } - if ($self->{kdm}) { - $self->_setupKDM(); - } - if ($self->{xdm}) { - $self->_setupXDM(); - } - $self->_setupSupportedThemes(); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - - my $desktopTheme = $attrs->{'desktop::theme'} || '<none>'; - - vlog(1, _tr("desktop-plugin: desktop=%s", $desktopTheme)); - - return; -} - -sub _installRequiredPackages -{ - my $self = shift; - - my $engine = $self->{'os-plugin-engine'}; - - if ($self->{'gnome'} && !$self->{distro}->isGNOMEInstalled()) { - $self->{distro}->installGNOME(); - } - if ($self->{'gdm'} && !$self->{distro}->isGDMInstalled()) { - $self->{distro}->installGDM(); - } - if ($self->{'kde'} && !$self->{distro}->isKDEInstalled()) { - $self->{distro}->installKDE(); - } - if ($self->{'kdm'} && !$self->{distro}->isKDMInstalled()) { - $self->{distro}->installKDM(); - } - if ($self->{'xfce'} && !$self->{distro}->isXFCEInstalled()) { - $self->{distro}->installXFCE(); - } - if ($self->{'xdm'} && !$self->{distro}->isXDMInstalled()) { - $self->{distro}->installXDM(); - } - - return 1; -} - -sub _fillUnsetStage1Attrs -{ - my $self = shift; - - if (!defined $self->{'gnome'}) { - $self->{'gnome'} = $self->{distro}->isGNOMEInstalled(); - } - if (!defined $self->{'gdm'}) { - $self->{'gdm'} = $self->{distro}->isGDMInstalled(); - } - if (!defined $self->{'kde'}) { - $self->{'kde'} = $self->{distro}->isKDEInstalled(); - } - if (!defined $self->{'kdm'}) { - $self->{'kdm'} = $self->{distro}->isKDMInstalled(); - } - if (!defined $self->{'xfce'}) { - $self->{'xfce'} = $self->{distro}->isXFCEInstalled(); - } - if (!defined $self->{'xdm'}) { - $self->{'xdm'} = $self->{distro}->isXDMInstalled(); - } - if (!defined $self->{'supported_themes'}) { - $self->{attrs}->{'desktop::supported_themes'} - = $self->{'supported_themes'} - = join ",", $self->_getAvailableThemes(); - } - - return 1; -} - -sub _ensureSensibleStage3Attrs -{ - my $self = shift; - - # check if current desktop kind is enabled at all and select another - # one, if it isn't - my $kind = $self->{attrs}->{'desktop::kind'} || ''; - if (!$self->{$kind}) { - my @desktops = map { $self->{$_} ? $_ : () } qw( gnome kde xfce ); - if (!@desktops) { - die _tr( - "no desktop kind is possible, plugin 'desktop' wouldn't work!" - ); - } - vlog(0, _tr("selecting %s as desktop kind\n", $desktops[0])); - $self->{attrs}->{'desktop::kind'} = $desktops[0]; - } - - # check if current desktop manager is enabled at all and select another - # one, if it isn't - my $manager = $self->{attrs}->{'desktop::manager'} || ''; - if (!$self->{$manager}) { - my @managers = map { $self->{$_} ? $_ : () } qw( kdm gdm xdm ); - if (!@managers) { - die _tr( - "no desktop manager is possible, plugin 'desktop' wouldn't work!" - ); - } - vlog(0, _tr("selecting %s as desktop manager\n", $managers[0])); - $self->{attrs}->{'desktop::manager'} = $managers[0]; - } - - # check if current theme is supported at all and select another one, if it - # isn't - my $theme = $self->{attrs}->{'desktop::theme'} || ''; - my @supportedThemes = split ",", $self->{'supported_themes'} || ''; - if (!grep { $_ eq $theme } @supportedThemes) { - if (!@supportedThemes) { - vlog( 0, _tr("no themes are supported, using no theme!")); - $self->{attrs}->{'desktop::theme'} = undef; - } - else { - vlog(0, _tr("selecting %s as theme\n", $supportedThemes[0])); - $self->{attrs}->{'desktop::theme'} = $supportedThemes[0]; - } - } - - return 1; -} - -sub _setupGDM -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - mkpath([ - "$repoPath/gdm/workstation", - "$repoPath/gdm/kiosk", - "$repoPath/gdm/chooser", - ]); - - $self->_setupGDMScript(); - - my $configHash = $self->{distro}->GDMConfigHashForWorkstation(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/workstation/gdm.conf"); - - $configHash = $self->{distro}->GDMConfigHashForKiosk(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/kiosk/gdm.conf"); - - $configHash = $self->{distro}->GDMConfigHashForChooser(); - $self->_writeConfigHash($configHash, "$repoPath/gdm/chooser/gdm.conf"); - - return; -} - -sub _setupGDMScript -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - my $script = $self->{distro}->setupGDMScript($repoPath); - - spitFile("$repoPath/gdm/desktop.sh", $script); - - return; -} - -sub _setupKDM -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - mkpath([ - "$repoPath/kdm/workstation", - "$repoPath/kdm/kiosk", - "$repoPath/kdm/chooser", - ]); - - $self->_setupKDMScript(); - - my $configHash = $self->{distro}->KDMConfigHashForWorkstation(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/workstation/kdmrc"); - - $configHash = $self->{distro}->KDMConfigHashForKiosk(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/kiosk/kdmrc"); - - $configHash = $self->{distro}->KDMConfigHashForChooser(); - $self->_writeConfigHash($configHash, "$repoPath/kdm/chooser/kdmrc"); - - return; -} - -sub _setupKDMScript -{ - my $self = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - my $script = $self->{distro}->setupKDMScript($repoPath); - - spitFile("$repoPath/kdm/desktop.sh", $script); - - return; -} - -sub _setupXDM -{ - my $self = shift; -} - -sub _writeConfigHash -{ - my $self = shift; - my $hash = shift || {}; - my $file = shift; - - my $content = ''; - for my $domain (sort keys %$hash) { - $content .= "[$domain]\n"; - for my $key (sort keys %{$hash->{$domain}}) { - my $value - = defined $hash->{$domain}->{$key} - ? $hash->{$domain}->{$key} - : ''; - $content .= "$key=$value\n"; - } - $content .= "\n"; - } - spitFile($file, $content); - - return; -} - -sub _setupSupportedThemes -{ - my $self = shift; - - my $supportedThemes = $self->{attrs}->{'desktop::supported_themes'} || ''; - my @supportedThemes = split m{\s*,\s*}, $supportedThemes; - return if !@supportedThemes; - - # Every theme is copied from the folder where it is found first, such that - # themes in the config folder will be preferred to a theme with the same - # name living in the base folder - my @themeBaseDirs = ( - "$self->{openslxConfigPath}/plugins/desktop/themes", - "$self->{openslxBasePath}/lib/plugins/desktop/themes", - ); - THEME: - for my $theme (@supportedThemes) { - THEME_DIR: - foreach my $themeBaseDir (@themeBaseDirs) { - my $gdmThemeDir = "$themeBaseDir/gdm/$theme"; - my $kdmThemeDir = "$themeBaseDir/kdm/$theme"; - next THEME_DIR if !-d $gdmThemeDir && !-d $kdmThemeDir; - # any of both dirs is enough - - # copy theme into plugin-repo folder - vlog(1, "installing theme '$theme'..."); - my $gdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/gdm"; - mkpath($gdmThemeTargetPath); - slxsystem( - "cp -a $gdmThemeDir $gdmThemeTargetPath/$theme 2>/dev/null" - ) == 0 - or die _tr('unable to copy GDM-theme %s (%s)', $theme, $!); - my $kdmThemeTargetPath = "$self->{pluginRepositoryPath}/themes/kdm"; - mkpath($kdmThemeTargetPath); - slxsystem( - "cp -a $kdmThemeDir $kdmThemeTargetPath/$theme 2>/dev/null" - ) == 0 - or die _tr('unable to copy KDM-theme %s (%s)', $theme, $!); - next THEME; - } - warn _tr('theme "%s" not found - skipped!', $theme); - } - - return; -} - -sub _getAvailableThemes -{ - my $self = shift; - - my %availableThemes; - - # return all themes found in any of these two folders - my @themeBaseDirs = ( - "$self->{openslxConfigPath}/plugins/desktop/themes", - "$self->{openslxBasePath}/lib/plugins/desktop/themes", - ); - for my $themeBaseDir (@themeBaseDirs) { - my @foundGDMThemes - = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/gdm/*"); - @availableThemes{@foundGDMThemes} = (); - my @foundKDMThemes - = map { basename $_ } grep { -d $_ } glob("$themeBaseDir/kdm/*"); - @availableThemes{@foundKDMThemes} = (); - } - - vlog(1, _tr("available themes: %s", join ",", keys %availableThemes)); - - return keys %availableThemes; -} - -1; diff --git a/os-plugins/plugins/desktop/XX_desktop.sh b/os-plugins/plugins/desktop/XX_desktop.sh deleted file mode 100644 index a8cc71fc..00000000 --- a/os-plugins/plugins/desktop/XX_desktop.sh +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2007..2008 - RZ Uni Freiburg -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'desktop' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -if [ -e /initramfs/plugin-conf/desktop.conf ]; then - . /initramfs/plugin-conf/desktop.conf - if [ $desktop_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'desktop' os-plugin ..."; - - # problem which occurs if exporting was forgotten (quick fix code) - if [ -e /mnt/opt/openslx/plugin-repo/desktop/${desktop_manager}/desktop.sh ] - then . /mnt/opt/openslx/plugin-repo/desktop/${desktop_manager}/desktop.sh - else - error "This shouldn't fail - you might have forgotten to export \ -your system." fatal - fi - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'desktop' os-plugin ..."; - - fi -fi diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx-legacy b/os-plugins/plugins/desktop/themes/gdm/openslx-legacy deleted file mode 120000 index d97839a5..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx-legacy +++ /dev/null @@ -1 +0,0 @@ -openslx
\ No newline at end of file diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/GdmGreeterTheme.desktop b/os-plugins/plugins/desktop/themes/gdm/openslx/GdmGreeterTheme.desktop deleted file mode 100755 index 08e5efce..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/GdmGreeterTheme.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[GdmGreeterTheme] -Encoding=UTF-8 -Greeter=theme.xml -Name=OpenSLX GDM theme -Description=GDM Port of Daemonic KDM theme for FreeBSD -Author=MJanc / KDM by aceph <aceph@ventcore.net> -Copyright=Creative Commons -Screenshot=screenshot.png
\ No newline at end of file diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/color.png b/os-plugins/plugins/desktop/themes/gdm/openslx/color.png Binary files differdeleted file mode 100644 index 7a0feb03..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/color.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/environment.png b/os-plugins/plugins/desktop/themes/gdm/openslx/environment.png Binary files differdeleted file mode 100644 index 7ad6783a..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/environment.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector.png b/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector.png Binary files differdeleted file mode 100644 index da016473..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector_inactive.png b/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector_inactive.png Binary files differdeleted file mode 100644 index bb2c8f69..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/language-selector_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/main-runner.png b/os-plugins/plugins/desktop/themes/gdm/openslx/main-runner.png Binary files differdeleted file mode 100644 index dde10cc8..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/main-runner.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo-main.png b/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo-main.png Binary files differdeleted file mode 100644 index f98e6517..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo-main.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo.png b/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo.png Binary files differdeleted file mode 100644 index 8cfaaf94..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/openslx-logo.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/sessions.png b/os-plugins/plugins/desktop/themes/gdm/openslx/sessions.png Binary files differdeleted file mode 100644 index 00d05f29..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/sessions.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/sessions_inactive.png b/os-plugins/plugins/desktop/themes/gdm/openslx/sessions_inactive.png Binary files differdeleted file mode 100644 index 86bbe642..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/sessions_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/system.png b/os-plugins/plugins/desktop/themes/gdm/openslx/system.png Binary files differdeleted file mode 100644 index f7b9e71f..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/system.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/system_inactive.png b/os-plugins/plugins/desktop/themes/gdm/openslx/system_inactive.png Binary files differdeleted file mode 100644 index c3e1719b..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/system_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/theme.xml b/os-plugins/plugins/desktop/themes/gdm/openslx/theme.xml deleted file mode 100644 index 46ef334e..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/theme.xml +++ /dev/null @@ -1,224 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE greeter SYSTEM "greeter.dtd"> -<!-- -GDM-OpenSLX-Theme ---> -<greeter id="theme"> - - <!-- background --> - <item type="pixmap" id="background" background="true"> - <normal file="color.png"/> - <pos x="0" y="0" width="100%" height="100%"/> - </item> - - <!-- top / welcome, clock and big logo --> - <item type="rect" id="top" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="n" x="50%" y="0" width="100%" height="40%"/> - <box orientation="vertical" homogeneous="true"> - - <item type="pixmap" background="true"> - <normal file="welcome-time-shadowed.png"/> - <pos anchor="n" x="50%" y="0" width="80%" height="44"/> - <box orientation="horizontal" homogeneous="true"> - <!-- Welcome on ... --> - <item type="label" background="true"> - <pos anchor="w" x="10%" y="30%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="welcome-label"/> - </item> - <!-- clock --> - <item type="label" id="clock"> - <pos anchor="e" x="90%" y="30%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <text>%c</text> - </item> - </box> - </item> - - <item type="rect" id="logo"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="10%" width="100%" height="100%"/> - <box orientation="vertical" homogeneous="true"> - <item type="pixmap"> - <normal file="openslx-logo-main.png"/> - <pos anchor="c" x="50%" y="50%"/> - </item> - </box> - </item> - - </box> - </item> - - <!-- main part / login, session, menu, ... --> - <item type="pixmap" id="main-runner" background="true"> - <normal file="main-runner.png"/> - <pos anchor="c" x="50%" y="50%" width="100%" height="160"/> - <box orientation="horizontal" homogeneous="true"> - - <item type="rect" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0%" y="50%" width="100%" height="100%"/> - <box orientation="horizontal" homogeneous="true"> - - <!-- left part / login --> - <item type="rect" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0" y="50%" width="100%" height="100%"/> - <box orientation="horizontal"> - - <!-- small logo --> - <item type="pixmap" background="true"> - <normal file="openslx-logo.png"/> - <pos anchor="w" x="30" y="50%"/> - </item> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="70" y="50%" width="box" height="box"/> - <box homogeneous="true" spacing="5"> - <!-- username-label --> - <item type="label" id="pam-prompt"> - <pos anchor="nw" x="0" y="0"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="username-label"/> - </item> - <!-- username-entry --> - <item type="entry" id="user-pw-entry"> - <normal color="#0f0f0f" font="Sans 11"/> - <pos anchor="sw" x="0" y="100%" height="20" width="120"/> - </item> - </box> - </item> - - </box> - </item> - - <!-- middle part / errors, caps info, gdm logo --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="90%" height="100%"/> - <box orientation="vertical"> - - <!-- Login-Error --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="n" x="50%" y="10" width="100%" height="30"/> - <box> - <item type="label" id="pam-error"> - <normal color="#ff8b00" font="Sans 11"/> - <pos anchor="c" x="50%" y="15"/> - <text/> - </item> - </box> - </item> - - <item type="pixmap"> - <normal file="environment.png"/> - <pos anchor="c" x="50%" y="50%"/> - </item> - - <!-- capslock-warning --> - <item type="rect" id="caps-lock-warning"> - <normal color="#000000" alpha="0.4"/> - <pos anchor="s" x="50%" y="-10" width="100%" height="30"/> - <box> - <item type="label"> - <normal color="#ff8b00" font="Sans 11"/> - <pos anchor="c" x="50%" y="15"/> - <stock type="caps-lock-warning"/> - </item> - </box> - </item> - - </box> - </item> - - <!-- right part / sessions, menu --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="e" x="100%" y="50%" width="100%" height="100%"/> - <box orientation="vertical" homogeneous="true" spacing="10"> - - <!-- session-button --> - <item type="rect" id="session_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="se" x="-50" y="100%" width="box" height="box"/> - <box orientation="horizontal"> - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="100%" y="-24"/> - <stock type="session"/> - </item> - <item type="rect" id="session_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="10"/> - </item> - <item type="pixmap" id="session_button" button="true"> - <normal file="sessions_inactive.png"/> - <prelight file="sessions.png"/> - <pos anchor="se" x="100%" y="100%"/> - </item> - </box> - </item> - - <!-- menu-button --> - <item type="rect" id="system_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="ne" x="-50" y="0" width="box" height="box"/> - <box orientation="horizontal"> - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="100%" y="24"/> - <stock type="system"/> - </item> - <item type="rect" id="system_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="10"/> - </item> - <item type="pixmap" id="system_button" button="true"> - <normal file="system_inactive.png"/> - <prelight file="system.png"/> - <pos anchor="ne" x="100%" y="0%"/> - </item> - </box> - </item> - - </box> - </item> - - </box> - </item> - - </box> - </item> - - <!-- language-button --> - <item type="rect" id="language_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="se" x="-10" y="-10" width="box" height="box"/> - <box orientation="horizontal"> - <item type="label"> - <normal color="#3e5d72" font="Sans 11"/> - <prelight color="#557f9c" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="100%" y="16"/> - <stock type="language"/> - </item> - <item type="rect" id="language_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="10"/> - </item> - <item type="pixmap" id="language_button" button="true"> - <normal file="language-selector_inactive.png"/> - <prelight file="language-selector.png"/> - <pos anchor="ne" x="100%" y="0%"/> - </item> - </box> - </item> - -</greeter> diff --git a/os-plugins/plugins/desktop/themes/gdm/openslx/welcome-time-shadowed.png b/os-plugins/plugins/desktop/themes/gdm/openslx/welcome-time-shadowed.png Binary files differdeleted file mode 100644 index 79e872c3..00000000 --- a/os-plugins/plugins/desktop/themes/gdm/openslx/welcome-time-shadowed.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/GdmGreeterTheme.desktop b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/GdmGreeterTheme.desktop deleted file mode 100755 index da63ec08..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/GdmGreeterTheme.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[GdmGreeterTheme] -Encoding=UTF-8 -Greeter=theme.xml -Name=OpenSLX KDM theme -Description=KDM Port of Daemonic KDM theme for FreeBSD -Author=MJanc / KDM by aceph <aceph@ventcore.net> -Copyright=Creative Commons -Screenshot=screenshot.png diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/KdmGreeterTheme.desktop b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/KdmGreeterTheme.desktop deleted file mode 100755 index 3cb9069d..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/KdmGreeterTheme.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[KdmGreeterTheme] -Encoding=UTF-8 -Greeter=theme.xml -Name=OpenSLX KDM theme -Description=KDM Port of Daemonic KDM theme for FreeBSD -Author=MJanc / KDM by aceph <aceph@ventcore.net> -Copyright=Creative Commons -Screenshot=screenshot.png diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/color.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/color.png Binary files differdeleted file mode 100644 index 7a0feb03..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/color.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter.png Binary files differdeleted file mode 100644 index b646e851..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter_inactive.png Binary files differdeleted file mode 100644 index e12cfb8e..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/enter_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/environment.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/environment.png Binary files differdeleted file mode 100644 index b9682822..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/environment.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/main-runner.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/main-runner.png Binary files differdeleted file mode 100644 index 5b3cf656..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/main-runner.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo-main.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo-main.png Binary files differdeleted file mode 100644 index f98e6517..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo-main.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo.png Binary files differdeleted file mode 100644 index 8cfaaf94..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/openslx-logo.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions.png Binary files differdeleted file mode 100644 index 00d05f29..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions_inactive.png Binary files differdeleted file mode 100644 index 86bbe642..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/sessions_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system.png Binary files differdeleted file mode 100644 index f7b9e71f..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system_inactive.png Binary files differdeleted file mode 100644 index c3e1719b..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/system_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/theme.xml b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/theme.xml deleted file mode 100644 index 61ae6644..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/theme.xml +++ /dev/null @@ -1,204 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE greeter SYSTEM "greeter.dtd"> -<!-- -KDM3-OpenSLX-Theme ---> -<greeter> - <!-- main pic, login pic --> - <item type="pixmap"> - <normal file="color.png"/> - <pos x="0" y="0" width="100%" height="100%"/> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="n" x="50%" y="0" width="100%" height="40%"/> - - <item type="pixmap"> - <normal file="welcome-time-shadowed.png"/> - <pos anchor="n" x="50%" y="0" width="80%" height="44"/> - - <!-- Welcome on ... --> - <item type="label"> - <pos anchor="w" x="5%" y="33%"/> - <normal color="#f0f0f0" font="Sans 12"/> - <!-- <stock type="welcome-label"/> --> - <text>OpenSLX Workstation (%h)</text> - </item> - - <!-- clock --> - <item type="label" id="clock"> - <normal color="#f0f0f0" font="Sans 12"/> - <pos anchor="e" x="95%" y="33%"/> - <text>%c</text> - </item> - - </item> - - <item type="pixmap"> - <normal file="openslx-logo-main.png"/> - <pos anchor="n" x="50%" y="20%" height="70%"/> - </item> - - </item> - - <item type="pixmap"> - <normal file="main-runner.png"/> - <pos anchor="c" x="50%" y="50%" width="100%" height="160"/> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0" y="50%" width="35%" height="100%"/> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0" y="50%" width="120" height="100%"/> - <item type="pixmap"> - <normal file="openslx-logo.png"/> - <pos anchor="e" x="100%" y="50%"/> - </item> - </item> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="e" x="-140" y="50%" width="100%" height="100%"/> - - <!-- username-label --> - <item type="label"> - <pos anchor="e" x="-5" y="40%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="username-label"/> - </item> - - <!-- password-label --> - <item type="label"> - <pos anchor="e" x="-5" y="60%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="password-label"/> - </item> - - </item> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="e" x="100%" y="50%" width="140" height="100%"/> - - <!-- username-entry --> - <item type="entry" id="user-entry"> - <pos anchor="w" x="0" y="40%" height="22" width="114"/> - </item> - - <!-- password-entry --> - <item type="entry" id="pw-entry"> - <pos anchor="w" x="0" y="60%" height="22" width="114"/> - </item> - - <item type="pixmap" button="true" id="login_button"> - <pos anchor="e" x="100%" y="60%" height="22" width="22"/> - <normal file="enter_inactive.png"/> - <prelight file="enter.png"/> - </item> - - </item> - - </item> - - <item type="rect"> - <normal color="#ff0000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="30%" height="160"/> - - <!-- capslock-warning --> - <item type="pixmap" id="caps-lock-warning"> - <normal file="error.png"/> - <pos anchor="c" x="50%" y="22" width="100%" height="70"/> - <item type="rect" id="caps-lock-warning"> - <normal color="#000000" alpha="0.4"/> - <pos anchor="c" x="50%" y="50%" width="100%" height="box"/> - <box orientation="vertical" xpadding="10" ypadding="5" spacing="0"> - <item type="label"> - <normal color="#ff8b00" font="Sans 11"/> - <pos x="50%" anchor="n"/> - <stock type="caps-lock-warning"/> - </item> - </box> - </item> - </item> - - <item type="pixmap"> - <normal file="environment.png"/> - <pos anchor="c" x="50%" y="50%" width="186" height="100"/> - </item> - - <!-- Login-Error --> - <item type="pixmap" id="pam-error"> - <normal file="error.png"/> - <pos anchor="c" x="50%" y="-22" width="100%" height="70"/> - <item type="rect"> - <normal color="#000000" alpha="0.4"/> - <pos anchor="c" x="50%" y="50%" width="100%" height="box"/> - <box orientation="vertical" xpadding="10" ypadding="5" spacing="0"> - <item type="label"> - <normal color="#ff8b00" font="Sans 11"/> - <pos anchor="n" x="50%"/> - <text>Login failed!</text> - <text xml:lang="en">Login failed!</text> - <text xml:lang="de">Login fehlgeschlagen!</text> - </item> - </box> - </item> - </item> - - </item> - - <!-- icons and text on the left --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="e" x="100%" y="50%" width="35%" height="100%"/> - - <!-- session-button --> - <item type="rect" id="session_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="se" x="80%" y="50%" width="160" height="50%"/> - - <item type="pixmap" id="session_button" button="true"> - <normal file="sessions_inactive.png"/> - <prelight file="sessions.png"/> - <pos anchor="se" x="94%" y="-8" width="48" height="48"/> - </item> - - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="-70" y="-32"/> - <text>Session</text> - <text xml:lang="en">Session</text> - <text xml:lang="de">Sitzung</text> - </item> - - </item> - - <!-- menu-button --> - <item type="rect" id="system_button" button="true"> - <show modes="console" type="system"/> - <normal color="#000000" alpha="0.0"/> - <pos anchor="ne" x="80%" y="50%" width="160" height="50%"/> - <item type="pixmap" id="system_button" button="true"> - <normal file="system_inactive.png"/> - <prelight file="system.png"/> - <pos anchor="ne" x="94%" y="8" width="48" height="48"/> - </item> - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="-70" y="32"/> - <text>System Menu</text> - <text xml:lang="en">System Menu</text> - <text xml:lang="de">System Menü</text> - </item> - </item> - - </item> - - </item> - </item> -</greeter> diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/welcome-time-shadowed.png b/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/welcome-time-shadowed.png Binary files differdeleted file mode 100644 index 79e872c3..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx-legacy/welcome-time-shadowed.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/KdmGreeterTheme.desktop b/os-plugins/plugins/desktop/themes/kdm/openslx/KdmGreeterTheme.desktop deleted file mode 100755 index 3cb9069d..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/KdmGreeterTheme.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[KdmGreeterTheme] -Encoding=UTF-8 -Greeter=theme.xml -Name=OpenSLX KDM theme -Description=KDM Port of Daemonic KDM theme for FreeBSD -Author=MJanc / KDM by aceph <aceph@ventcore.net> -Copyright=Creative Commons -Screenshot=screenshot.png diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/color.png b/os-plugins/plugins/desktop/themes/kdm/openslx/color.png Binary files differdeleted file mode 100644 index 7a0feb03..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/color.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/enter.png b/os-plugins/plugins/desktop/themes/kdm/openslx/enter.png Binary files differdeleted file mode 100644 index b646e851..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/enter.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/enter_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx/enter_inactive.png Binary files differdeleted file mode 100644 index e12cfb8e..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/enter_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/environment.png b/os-plugins/plugins/desktop/themes/kdm/openslx/environment.png Binary files differdeleted file mode 100644 index b9682822..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/environment.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/main-runner.png b/os-plugins/plugins/desktop/themes/kdm/openslx/main-runner.png Binary files differdeleted file mode 100644 index dde10cc8..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/main-runner.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo-main.png b/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo-main.png Binary files differdeleted file mode 100644 index f98e6517..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo-main.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo.png b/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo.png Binary files differdeleted file mode 100644 index 8cfaaf94..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/openslx-logo.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/sessions.png b/os-plugins/plugins/desktop/themes/kdm/openslx/sessions.png Binary files differdeleted file mode 100644 index 00d05f29..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/sessions.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/sessions_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx/sessions_inactive.png Binary files differdeleted file mode 100644 index 86bbe642..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/sessions_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/system.png b/os-plugins/plugins/desktop/themes/kdm/openslx/system.png Binary files differdeleted file mode 100644 index f7b9e71f..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/system.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/system_inactive.png b/os-plugins/plugins/desktop/themes/kdm/openslx/system_inactive.png Binary files differdeleted file mode 100644 index c3e1719b..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/system_inactive.png +++ /dev/null diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/theme.xml b/os-plugins/plugins/desktop/themes/kdm/openslx/theme.xml deleted file mode 100644 index d748c776..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/theme.xml +++ /dev/null @@ -1,232 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE greeter SYSTEM "greeter.dtd"> -<!-- -KDM-OpenSLX-Theme ---> -<greeter id="theme"> - <style font="Sans 11" window-text-color="#f0f0f0" base-color="#f0f0f0" text-color="#000000"/> - - <!-- background --> - <item type="pixmap" id="background" background="true"> - <normal file="color.png"/> - <pos x="0" y="0" width="100%" height="100%"/> - </item> - - <!-- top / welcome, clock and big logo --> - <item type="rect" id="top" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="n" x="50%" y="0" width="100%" height="40%"/> - <box orientation="vertical" homogeneous="true"> - - <item type="pixmap" background="true"> - <normal file="welcome-time-shadowed.png"/> - <pos anchor="n" x="50%" y="0" width="80%" height="44"/> - <box orientation="horizontal" homogeneous="true"> - <!-- Welcome on ... --> - <item type="label" background="true"> - <pos anchor="w" x="10%" y="30%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="welcome-label"/> - </item> - <!-- clock --> - <item type="label" id="clock"> - <pos anchor="e" x="90%" y="30%"/> - <normal color="#f0f0f0" font="Sans 11"/> - <text>%c</text> - </item> - </box> - </item> - - <item type="rect" id="logo"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="10%" width="100%" height="100%"/> - <box orientation="vertical" homogeneous="true"> - <item type="pixmap"> - <normal file="openslx-logo-main.png"/> - <pos anchor="c" x="50%" y="50%"/> - </item> - </box> - </item> - - </box> - </item> - - <!-- main part / login, session, menu, ... --> - <item type="pixmap" id="main-runner" background="true"> - <normal file="main-runner.png"/> - <pos anchor="c" x="50%" y="50%" width="100%" height="160"/> - <box orientation="horizontal" homogeneous="true"> - - <item type="rect" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0%" y="50%" width="100%" height="100%"/> - <box orientation="horizontal" homogeneous="true"> - - <!-- left part / login --> - <item type="rect" background="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="0" y="50%" width="100%" height="100%"/> - <box orientation="horizontal"> - - <!-- small logo --> - <item type="pixmap" background="true"> - <normal file="openslx-logo.png"/> - <pos anchor="w" x="30" y="50%"/> - </item> - - <!-- login --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="w" x="70" y="50%" width="box" height="box"/> - <box orientation="horizontal" spacing="10"> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="sw" x="0" y="100%" width="box" height="100%"/> - <box homogeneous="true" spacing="10"> - <!-- username-label --> - <item type="label"> - <pos anchor="nw" x="0" y="0"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="username-label"/> - </item> - <!-- password-label --> - <item type="label"> - <pos anchor="sw" x="0" y="-0"/> - <normal color="#f0f0f0" font="Sans 11"/> - <stock type="password-label"/> - </item> - </box> - </item> - - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="nw" x="0" y="0" width="box" height="box"/> - <box homogeneous="true" spacing="10"> - <!-- username-entry --> - <item type="entry" id="user-entry"> - <pos anchor="w" x="0" y="50%" height="20" width="100"/> - </item> - <!-- password-entry --> - <item type="entry" id="pw-entry"> - <pos anchor="w" x="0" y="50%" height="20" width="100"/> - </item> - </box> - </item> - - <item type="pixmap" button="true" id="login_button"> - <pos anchor="sw" x="0" y="-0" height="20" width="20"/> - <normal file="enter_inactive.png"/> - <prelight file="enter.png"/> - </item> - - </box> - </item> - - </box> - </item> - - <!-- middle part / errors, caps info, kdm logo --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="90%" height="100%"/> - <box orientation="vertical"> - - <!-- Login-Error --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="n" x="50%" y="10" width="100%" height="30"/> - <box> - <item type="label" id="pam-error"> - <normal color="#ff8b00" font="Sans 11"/> - <pos anchor="c" x="50%" y="15"/> - <text/> - </item> - </box> - </item> - - <item type="pixmap"> - <normal file="environment.png"/> - <pos anchor="c" x="50%" y="50%"/> - </item> - - <!-- capslock-warning --> - <item type="rect" id="caps-lock-warning"> - <normal color="#000000" alpha="0.4"/> - <pos anchor="s" x="50%" y="-10" width="100%" height="30"/> - <box> - <item type="label"> - <normal color="#ff8b00" font="Sans 11"/> - <pos anchor="c" x="50%" y="15"/> - <stock type="caps-lock-warning"/> - </item> - </box> - </item> - - </box> - </item> - - <!-- right part / sessions, menu --> - <item type="rect"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="e" x="100%" y="50%" width="100%" height="100%"/> - <box orientation="vertical" homogeneous="true" spacing="10"> - - <!-- session-button --> - <item type="rect" id="session_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="se" x="-50" y="100%" width="box" height="box"/> - <box orientation="horizontal"> - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="100%" y="-24"/> - <stock type="session"/> - </item> - <item type="rect" id="session_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="10"/> - </item> - <item type="pixmap" id="session_button" button="true"> - <normal file="sessions_inactive.png"/> - <prelight file="sessions.png"/> - <pos anchor="se" x="100%" y="100%"/> - </item> - </box> - </item> - - <!-- menu-button --> - <item type="rect" id="system_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="ne" x="-50" y="0" width="box" height="box"/> - <box orientation="horizontal"> - <item type="label"> - <normal color="#bbbbbb" font="Sans 11"/> - <prelight color="#f0f0f0" font="Sans 11"/> - <active color="#ff8b00" font="Sans 11"/> - <pos anchor="e" x="100%" y="24"/> - <stock type="system"/> - </item> - <item type="rect" id="system_button" button="true"> - <normal color="#000000" alpha="0.0"/> - <pos anchor="c" x="50%" y="50%" width="10"/> - </item> - <item type="pixmap" id="system_button" button="true"> - <normal file="system_inactive.png"/> - <prelight file="system.png"/> - <pos anchor="ne" x="100%" y="0%"/> - </item> - </box> - </item> - - </box> - </item> - - </box> - </item> - - </box> - </item> - -</greeter> diff --git a/os-plugins/plugins/desktop/themes/kdm/openslx/welcome-time-shadowed.png b/os-plugins/plugins/desktop/themes/kdm/openslx/welcome-time-shadowed.png Binary files differdeleted file mode 100644 index 79e872c3..00000000 --- a/os-plugins/plugins/desktop/themes/kdm/openslx/welcome-time-shadowed.png +++ /dev/null diff --git a/os-plugins/plugins/dropbear/OpenSLX/OSPlugin/dropbear.pm b/os-plugins/plugins/dropbear/OpenSLX/OSPlugin/dropbear.pm deleted file mode 100644 index fc1b96f8..00000000 --- a/os-plugins/plugins/dropbear/OpenSLX/OSPlugin/dropbear.pm +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# dropbear.pm -# - an dropbear implementation of the OSPlugin API (i.e. an os-plugin) -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::dropbear; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'dropbear', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - dropbear is a simple/small ssh daemon (for stage 3) - End-of-Here - precedence => 50, - }; -} - -sub getAttrInfo -{ # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'dropbear::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'dropbear'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - my $openslxConfigPath = $info->{'openslx-config-path'}; - my $attrs = $info->{'plugin-attrs'}; - - my $filesDir = "$openslxBasePath/lib/plugins/dropbear/files"; - - copyFile("$filesDir/dropbearmulti","$pluginRepoPath"); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - - return; -} - -1; diff --git a/os-plugins/plugins/dropbear/XX_dropbear.sh b/os-plugins/plugins/dropbear/XX_dropbear.sh deleted file mode 100644 index cb4321ff..00000000 --- a/os-plugins/plugins/dropbear/XX_dropbear.sh +++ /dev/null @@ -1,58 +0,0 @@ - -# Copyright (c) 2007..2008 - RZ Uni Freiburg -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'dropbear' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -if [ -e /initramfs/plugin-conf/dropbear.conf ]; then - . /initramfs/plugin-conf/dropbear.conf - if [ $dropbear_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'dropbear' os-plugin ..."; - - # setup links to multibinary - ln -sf /mnt/opt/openslx/plugin-repo/dropbear/dropbearmulti /sbin/dropbear - ln -sf /mnt/opt/openslx/plugin-repo/dropbear/dropbearmulti /sbin/dropbearkey - ln -sf /mnt/opt/openslx/plugin-repo/dropbear/dropbearmulti /sbin/dropbearconvert - ln -sf /mnt/opt/openslx/plugin-repo/dropbear/dropbearmulti /bin/dbclient - ln -sf /mnt/opt/openslx/plugin-repo/dropbear/dropbearmulti /bin/scp - - # create dropbear config dir - mkdir -p /etc/dropbear - - # touch some files to get rid of error msgs - touch /var/log/lastlog - touch /var/log/wtmp - - # copy ssh auth keys from stage1 - cp -r /mnt/root/.ssh /root - - # give root a valid shell - sed -i /etc/passwd -e "s/bash/sh/" - - # convert openssh rsa key to dropbear key - if available - if [ -e /mnt/etc/ssh/ssh_host_rsa_key ]; then - dropbearconvert openssh dropbear /mnt/etc/ssh/ssh_host_rsa_key \ - /etc/dropbear/dropbear_rsa_host_key - else - dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key - fi - - echo "OpenSLX Debugshell (stage3)" >> /etc/motd - - /sbin/dropbear - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'dropbear' os-plugin ..."; - - fi -fi diff --git a/os-plugins/plugins/dropbear/files/dropbearmulti b/os-plugins/plugins/dropbear/files/dropbearmulti Binary files differdeleted file mode 100755 index 357e644f..00000000 --- a/os-plugins/plugins/dropbear/files/dropbearmulti +++ /dev/null diff --git a/os-plugins/plugins/dropbear/init-hooks/95-cleanup/dropbear.sh b/os-plugins/plugins/dropbear/init-hooks/95-cleanup/dropbear.sh deleted file mode 100755 index c0c9cffe..00000000 --- a/os-plugins/plugins/dropbear/init-hooks/95-cleanup/dropbear.sh +++ /dev/null @@ -1 +0,0 @@ -killall -9 dropbear >/dev/null 2>&1 diff --git a/os-plugins/plugins/example/OpenSLX/OSPlugin/example.pm b/os-plugins/plugins/example/OpenSLX/OSPlugin/example.pm deleted file mode 100644 index 79f0ba48..00000000 --- a/os-plugins/plugins/example/OpenSLX/OSPlugin/example.pm +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# example.pm -# - an example implementation of the OSPlugin API (i.e. an os-plugin) -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::example; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'example', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - just an exemplary plugin that prints a smiley when the client boots - End-of-Here - precedence => 50, - }; -} - -sub getAttrInfo -{ # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'example::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'example'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - - # plugin specific attributes start here ... - 'example::preferred_side' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - determines to which side you have to tilt your head in order - to read the smiley - End-of-Here - content_regex => qr{^(left|right)$}, - content_descr => q{'left' will print ';-)' - 'right' will print '(-;'}, - default => 'left', - }, - }; -} - -sub installationPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to install required files into the vendor-OS. - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $openslxBasePath = $info->{'openslx-base-path'}; - # the openslx base path (/opt/openslx) bind-mounted into the chroot - my $openslxConfigPath = $info->{'openslx-config-path'}; - # the openslx config path (/etc/opt/openlsx) bind-mounted into the - # chroot - my $attrs = $info->{'plugin-attrs'}; - # attributes in effect for this installation - - # for this example plugin, we simply create two files: - spitFile("$pluginRepoPath/right", "(-;\n"); - spitFile("$pluginRepoPath/left", ";-)\n"); - - # Some plugins have to copy files from their plugin folder into the - # vendor-OS. Here's an example for how to do that: - # - # # get our own name: - # my $pluginName = $self->{'name'}; - # - # # get our own base path: - # my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName"; - # - # # copy all needed files now: - # foreach my $file ( qw( file1, file2 ) ) { - # copyFile("$pluginBasePath/$file", "$pluginRepoPath/"); - # } - - # name of current os - # my $vendorOSName = $self->{'os-plugin-engine'}->{'vendor-os-name'} - - return; -} - -sub removalPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to uninstall no longer required files from the vendor-OS. - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - - return; -} - -1; diff --git a/os-plugins/plugins/example/XX_example.sh b/os-plugins/plugins/example/XX_example.sh deleted file mode 100644 index 18f2e47d..00000000 --- a/os-plugins/plugins/example/XX_example.sh +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# stage3 part of 'example' plugin - the runlevel script -# -# This basically is a runlevel script (just like you know them from 'init'), -# whose purpose is to activate the plugin in stage3. The 'XX' at the beginning -# of the filename will be replaced with a runlevel precedence number taken -# from the configuration of the respective plugin. All plugin runlevel scripts -# will be executed in the order of those precedence numbers. -# -# In order to activate the corresponding plugin, each runlevel script should: -# -# a) read the corresponding configuration file (in this case: -# /initramfs/plugin-conf/example.conf) -# -# b) analyse the client (look at the available hardware) and decide what -# needs to be done, taking into account the settings given in the config -# file -# -# c) activate the plugin by copying/linking appropriate plugin-specific files -# (in this case: from /mnt/opt/openslx/plugins/example/), load required kernel -# modules and whatever else might be necessary. -# -# if you have any questions regarding the use of this file, please drop a mail -# to: ot@openslx.com, or join the IRC-channel '#openslx' (on freenode). -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -if [ -e /initramfs/plugin-conf/example.conf ]; then - . /initramfs/plugin-conf/example.conf - if [ $example_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'example' os-plugin ..."; - - # for this example plugin, we simply take a filename from the - # configuration and cat that file (output the smiley): - cat /mnt/opt/openslx/plugin-repo/example/$preferred_side - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'example' os-plugin ..."; - fi -fi diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Base.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Base.pm deleted file mode 100644 index 83570d7d..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the infoscreen plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub getRequirements -{ - my $self = shift; - - return ('libxml2', 'libcurl', 'libimlib2', 'libx11'); -} - -sub getPackagemanagerCommand -{ - my $self = shift; - - return "yum install"; -} - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 6ac025f5..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index a4252b62..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index c2730674..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Scilin.pm deleted file mode 100644 index e89d6d88..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Scilin.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Scilin.pm -# - provides Scilin-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Scilin; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 21d02fbb..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Suse.pm -# - provides Suse-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/infoscreen/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 10360825..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen/OpenSLX/Distro/Ubuntu.pm -# - provides Debian-specific overrides of the Distro API for the infoscreen -# plugin. -# ----------------------------------------------------------------------------- -package infoscreen::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(infoscreen::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub getRequirements -{ - my $self = shift; - - return ('libxml2', 'libcurl3', 'libimlib2', 'libx11-6'); -} - -sub getPackagemanagerCommand -{ - my $self = shift; - - return "aptitude install"; -} - - -1; diff --git a/os-plugins/plugins/infoscreen/OpenSLX/OSPlugin/infoscreen.pm b/os-plugins/plugins/infoscreen/OpenSLX/OSPlugin/infoscreen.pm deleted file mode 100644 index dadd8fe0..00000000 --- a/os-plugins/plugins/infoscreen/OpenSLX/OSPlugin/infoscreen.pm +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# infoscreen.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::infoscreen; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'infoscreen', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - infoscreen plugin .. - End-of-Here - precedence => 82, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - # attribute 'active' is mandatory for all plugins - 'infoscreen::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'infoscreen'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - my $openslxConfigPath = $info->{'openslx-config-path'}; - my $attrs = $info->{'plugin-attrs'}; - - my $filesDir = "$openslxBasePath/lib/plugins/infoscreen/files"; - - copyFile("$filesDir/empty.xbm","$pluginRepoPath"); - copyFile("$filesDir/kiosk.dpms","$pluginRepoPath"); - - - my @requirements = $self->{distro}->getRequirements(); - - my $pcmd = $self->{distro}->getPackagemanagerCommand(); - my $req = join(' ', @requirements); - - slxsystem("$pcmd $req") or _tr( - "failed to install requirements" - ); - - slxsystem("tar -xzf $filesDir/infoscreenClient.tgz -C / "); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - - return; -} - -1; diff --git a/os-plugins/plugins/infoscreen/XX_infoscreen.sh b/os-plugins/plugins/infoscreen/XX_infoscreen.sh deleted file mode 100644 index e2176387..00000000 --- a/os-plugins/plugins/infoscreen/XX_infoscreen.sh +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -# main script -if [ -e /initramfs/plugin-conf/infoscreen.conf ]; then - . /initramfs/plugin-conf/infoscreen.conf - - if [ $infoscreen_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'infoscreen' os-plugin ..."; - - ln -sf /opt/openslx/plugin-repo/infoscreen/kiosk.dpms \ - /mnt/bin/kiosk.dpms - - # prepare xsession - echo "#!/bin/bash" \ - > /mnt/home/kiosk/.xinitrc - echo "xhost +local:" \ - >> /mnt/home/kiosk/.xinitrc - echo "xsetroot -cursor /opt/openslx/plugin-repo/infoscreen/empty.xbm \\" \ - >> /mnt/home/kiosk/.xinitrc - echo "/opt/openslx/plugin-repo/infoscreen/empty.xbm" \ - >> /mnt/home/kiosk/.xinitrc - echo "/usr/bin/dpclient" \ - >> /mnt/home/kiosk/.xinitrc - - # remove Standby - sed -r "s,(Option.*\"(Blank|Standby|Suspend|Off)Time\"[^\"]*)(.*),\1 \"0\" # disabled by infoscreen \3," \ - -i /mnt/etc/X11/xorg.conf - sed -r "s,(Option.*\"(blank|standby|suspend|off) time\"[^\"]*)(.*),\1 \"0\" # disabled by infoscreen \3," \ - -i /mnt/etc/X11/xorg.conf - - # energy safe - # (requires "xhost +local:") - sed -r "s,(Section \"Module\"),\1\n Load \"dpms\"," -i /mnt/etc/X11/xorg.conf - echo "0 22 * * * root /bin/kiosk.dpms sleep" >> /mnt/etc/crontab - echo "0 7 * * * root /bin/kiosk.dpms wakeup" >> /mnt/etc/crontab - - - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'infoscreen' os-plugin ..."; - - fi - -fi diff --git a/os-plugins/plugins/infoscreen/files/empty.xbm b/os-plugins/plugins/infoscreen/files/empty.xbm deleted file mode 100644 index 73b5f706..00000000 --- a/os-plugins/plugins/infoscreen/files/empty.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define empty_width 16 -#define empty_height 16 -static unsigned char empty_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/os-plugins/plugins/infoscreen/files/infoscreenClient.tgz b/os-plugins/plugins/infoscreen/files/infoscreenClient.tgz Binary files differdeleted file mode 100644 index d1a932c0..00000000 --- a/os-plugins/plugins/infoscreen/files/infoscreenClient.tgz +++ /dev/null diff --git a/os-plugins/plugins/infoscreen/files/kiosk.dpms b/os-plugins/plugins/infoscreen/files/kiosk.dpms deleted file mode 100755 index d8fd57c5..00000000 --- a/os-plugins/plugins/infoscreen/files/kiosk.dpms +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -case "$1" in - "sleep") - xset -display :0 dpms force off - xset -display :0 dpms 0 0 0 - exit 0 - ;; - "wakeup") - xset -display :0 dpms force on - xset -display :0 dpms 0 0 0 - xset -display :0 s reset - xset -display :0 s noblank - xset -display :0 s noexpose - xset -display :0 s 0 0 - xset -display :0 s off - xset -display :0 -dpms - exit 0 - ;; - *) - echo "Usage: kiosk.dpms <command>" - echo "Commands" - echo " sleep : shut monitor down" - echo " wakeup : wake monitor up" - exit 0 - ;; -esac diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Base.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Base.pm deleted file mode 100644 index 8f7e506d..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the kiosk plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub getKgettySetupScript -{ - my $self = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'kiosk' - - kgettyCmd=\$1 - sed -i /mnt/etc/inittab \\ - -e "s,^\(1:[^:]*:respawn\):.*tty1,\\1:\$kgettyCmd," - - End-of-Here - - return $script; - -} - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 08bb18e7..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index 2b9f8ff5..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index c3133f07..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Scilin.pm deleted file mode 100644 index 7423a3b8..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Scilin.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Scilin.pm -# - provides Scilin-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Scilin; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 587d6db3..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Suse.pm -# - provides Suse-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/kiosk/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index b8fcb25b..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk/OpenSLX/Distro/Ubuntu.pm -# - provides Debian-specific overrides of the Distro API for the kiosk -# plugin. -# ----------------------------------------------------------------------------- -package kiosk::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(kiosk::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub getKgettySetupScript -{ - my $self = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'kiosk' - - kgettyCmd=\$1 - sed -i /mnt/etc/event.d/tty1 \\ - -e "s,exec.*,exec \$kgettyCmd," - - End-of-Here - - return $script; - -} - -1; diff --git a/os-plugins/plugins/kiosk/OpenSLX/OSPlugin/kiosk.pm b/os-plugins/plugins/kiosk/OpenSLX/OSPlugin/kiosk.pm deleted file mode 100644 index bfeeae0a..00000000 --- a/os-plugins/plugins/kiosk/OpenSLX/OSPlugin/kiosk.pm +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# kiosk.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::kiosk; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'kiosk', - }; - - mkpath("$openslxConfig{'config-path'}/plugins/kiosk/profiles"); - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - kiosk plugin .. - End-of-Here - precedence => 50, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - # attribute 'active' is mandatory for all plugins - 'kiosk::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'kiosk'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'kiosk::profile' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'kiosk'-plugin setup a specific profile for the - kiosk user? (profile data should be placed in - /etc/opt/openslx/plugins/kiosk/profiles/<profilename>/) - End-of-Here - #content_regex => qr{^(0|1)$}, - content_descr => 'name of profile', - default => 'plain', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - my $openslxConfigPath = $info->{'openslx-config-path'}; - my $attrs = $info->{'plugin-attrs'}; - - my $filesDir = "$openslxBasePath/lib/plugins/kiosk/files"; - - copyFile("$filesDir/kgetty","$pluginRepoPath"); - - system(qq{cp -r $filesDir/profiles/* $openslxConfig{'config-path'}/plugins/kiosk/profiles/}); - - my $scriptpath = "$pluginRepoPath/setup.kgetty"; - my $script = $self->{distro}->getKgettySetupScript(); - - spitFile($scriptpath, $script); - chmod (0744, "$scriptpath"); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - - return; -} - -1; diff --git a/os-plugins/plugins/kiosk/XX_kiosk.sh b/os-plugins/plugins/kiosk/XX_kiosk.sh deleted file mode 100644 index c7e275ad..00000000 --- a/os-plugins/plugins/kiosk/XX_kiosk.sh +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -# main script -if [ -e /initramfs/plugin-conf/kiosk.conf ]; then - . /initramfs/plugin-conf/kiosk.conf - - if [ $kiosk_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'kiosk' os-plugin ..."; - - - profile_path="/etc/opt/openslx/plugins/kiosk/profiles/" - - # avoid ldap conflicts - part I - # hide nsswitch.conf - if [ -e /mnt/etc/nsswitch.conf ]; then - mv /mnt/etc/nsswitch.conf /mnt/etc/nsswitch.conf.bak - fi - - if [ -e /mnt/$profile_path/$kiosk_profile/ ]; then - # create new user - chroot /mnt useradd -s /bin/bash -k $profile_path/$kiosk_profile/ -m kiosk - chroot /mnt chown kiosk /home/kiosk/ -R - else - chroot /mnt useradd -s /bin/bash -k $profile_path/plain/ -m kiosk - fi - - # avoid ldap conflicts - part II - # restore old nsswitch setup - if [ -e /mnt/etc/nsswitch.conf.bak ]; then - mv /mnt/etc/nsswitch.conf.bak /mnt/etc/nsswitch.conf - fi - - # setup custom rungetty - mkdir -p /mnt/root/bin - ln -sf /opt/openslx/plugin-repo/kiosk/kgetty /mnt/root/bin/kgetty - - kgettycmd="/root/bin/kgetty --autologin kiosk tty1" - - /mnt/opt/openslx/plugin-repo/kiosk/setup.kgetty "$kgettycmd" - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'kiosk' os-plugin ..."; - - fi - -fi diff --git a/os-plugins/plugins/kiosk/files/kgetty b/os-plugins/plugins/kiosk/files/kgetty Binary files differdeleted file mode 100755 index a65d96de..00000000 --- a/os-plugins/plugins/kiosk/files/kgetty +++ /dev/null diff --git a/os-plugins/plugins/kiosk/files/profiles/plain/.bashrc b/os-plugins/plugins/kiosk/files/profiles/plain/.bashrc deleted file mode 120000 index cee304e6..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/plain/.bashrc +++ /dev/null @@ -1 +0,0 @@ -bashrc
\ No newline at end of file diff --git a/os-plugins/plugins/kiosk/files/profiles/plain/bashrc b/os-plugins/plugins/kiosk/files/profiles/plain/bashrc deleted file mode 100644 index 28694f85..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/plain/bashrc +++ /dev/null @@ -1,4 +0,0 @@ -if [ "x$(tty)" == "x/dev/tty1" ]; then - startx - exit -fi diff --git a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bash_profile b/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bash_profile deleted file mode 100644 index 099cd106..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bash_profile +++ /dev/null @@ -1,2 +0,0 @@ -# fix for some systems which don't source .bashrc automatically -. ~/.bashrc
\ No newline at end of file diff --git a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bashrc b/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bashrc deleted file mode 120000 index cee304e6..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.bashrc +++ /dev/null @@ -1 +0,0 @@ -bashrc
\ No newline at end of file diff --git a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.xinitrc b/os-plugins/plugins/kiosk/files/profiles/vmchooser/.xinitrc deleted file mode 120000 index 5539532c..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/vmchooser/.xinitrc +++ /dev/null @@ -1 +0,0 @@ -xinitrc
\ No newline at end of file diff --git a/os-plugins/plugins/kiosk/files/profiles/vmchooser/bashrc b/os-plugins/plugins/kiosk/files/profiles/vmchooser/bashrc deleted file mode 100644 index 28694f85..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/vmchooser/bashrc +++ /dev/null @@ -1,4 +0,0 @@ -if [ "x$(tty)" == "x/dev/tty1" ]; then - startx - exit -fi diff --git a/os-plugins/plugins/kiosk/files/profiles/vmchooser/xinitrc b/os-plugins/plugins/kiosk/files/profiles/vmchooser/xinitrc deleted file mode 100644 index 7774f4d2..00000000 --- a/os-plugins/plugins/kiosk/files/profiles/vmchooser/xinitrc +++ /dev/null @@ -1,7 +0,0 @@ -# check if we need to include Xsession script generated by out profile -# plugin -[ -e /etc/X11/Xsession.d/10slx-home_env ] && \ - . /etc/X11/Xsession.d/10slx-home_env - -/usr/bin/xsetroot -solid navy -/opt/openslx/plugin-repo/vmchooser/vmchooser -p /dev/null
\ No newline at end of file diff --git a/os-plugins/plugins/openvz/OpenSLX/OSPlugin/openvz.pm b/os-plugins/plugins/openvz/OpenSLX/OSPlugin/openvz.pm deleted file mode 100644 index 35e12bb2..00000000 --- a/os-plugins/plugins/openvz/OpenSLX/OSPlugin/openvz.pm +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# openvz.pm -# - implementation of the 'openvz' plugin -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::openvz; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'openvz', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Configures openVZ diskless boot, no installation yet. - End-of-Here - precedence => 20, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'openvz::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'openvz'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - # set active to 0, later set specially created openVZ system to 1 - default => '0', - }, - # attribute 'imagesrc' defines where we can find openvz images - 'openvz::imagesrc' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Where do we store our openvz images? NFS? Filesystem? - End-of-Here - content_regex => qr{^(/|nfs://)}, - content_descr => 'local path or URI or "-" (unset)', - default => undef, - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - - # Copy run-virt.include and template files to the appropriate place for - # inclusion in stage4 - my $pluginName = $self->{'name'}; - my $pluginBasePath = - "$self->{openslxBasePath}/lib/plugins/$pluginName/files"; - - foreach my $file ( qw( run-virt.include machine.include ) ) { - copyFile("$pluginBasePath/$file", "$self->{pluginRepositoryPath}/"); - chmod 0644, "$self->{pluginRepositoryPath}/$file"; - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -1; diff --git a/os-plugins/plugins/openvz/XX_openvz.sh b/os-plugins/plugins/openvz/XX_openvz.sh deleted file mode 100644 index 721c76a4..00000000 --- a/os-plugins/plugins/openvz/XX_openvz.sh +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'openvz' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE=/initramfs/plugin-conf/openvz.conf -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/openvz -PLUGINDIR=/mnt/${OPENSLX_DEFAULT_DIR}/plugin-repo/openvz -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/openvz - -# check if the configuration file is available -if [ -e ${CONFFILE} ]; then - - # load needed variables - . ${CONFFILE} - - # Test if this plugin is activated... more or less useless with the - # new plugin system - if [ $openvz_active -ne 0 2>/dev/null ]; then - - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'openvz' os-plugin ..."; - - # load general configuration - . /etc/initramfs-setup - - # get source of openvz image server (get type, server and path) - if strinstr "/" "${openvz_imagesrc}" ; then - vbimgprot=$(uri_token ${openvz_imagesrc} prot) - vbimgserv=$(uri_token ${openvz_imagesrc} server) - vbimgpath="$(uri_token ${openvz_imagesrc} path)" - fi - if [ -n "${vbimgserv}" ] ; then - # directory where qemu images are expected in - mnttarget=${VIRTDIR} - # mount the openvz image source readonly (ro) - fsmount ${vbimgprot} ${vbimgserv} ${vbimgpath} ${mnttarget} ro - else - [ $DEBUGLEVEL -gt 1 ] && \ - error " * Incomplete information in variable ${openvz_imagesrc}." \ - nonfatal - fi - - # copy virtualization include files to config dir - testmkd ${PLUGINCONFDIR} - cp ${PLUGINDIR}/*.include ${PLUGINCONFDIR} - # copy ${CONFFILE} to ${PLUGINCONFDIR} just in case - cp ${CONFFILE} ${PLUGINCONFDIR} - - # activate init files - - fi -fi diff --git a/os-plugins/plugins/openvz/files/machine.include b/os-plugins/plugins/openvz/files/machine.include deleted file mode 100644 index e69de29b..00000000 --- a/os-plugins/plugins/openvz/files/machine.include +++ /dev/null diff --git a/os-plugins/plugins/openvz/files/run-virt.include b/os-plugins/plugins/openvz/files/run-virt.include deleted file mode 100644 index 53c982c8..00000000 --- a/os-plugins/plugins/openvz/files/run-virt.include +++ /dev/null @@ -1,37 +0,0 @@ -# run-virt.include -# ----------------------------------------------------------------------------- -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# ----------------------------------------------------------------------------- -# run-virt.include -# - Include script for running openVZ on an OpenSLX client via run-virt.sh or -# run-vmgrid.sh -################################################################################ - -################################################################################ -### Include general configuration -################################################################################ -if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then - . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf -else - writelog "Problems reading config file of ${self} plugin" - exit 1 -fi - -################################################################################ -### Declaration of default variables -################################################################################ - -PLUGINCONFXEN="${PLUGINCONFROOT}/${self}" -# create TMPDIR for all users -mkdir -m 1777 /tmp/${self} 2>/dev/null -# dir for configs -confdir="/tmp/${self}/${USER}/${VM_ID}" diff --git a/os-plugins/plugins/openvz/init-hooks/20-nw-bridge-config/bridge.sh b/os-plugins/plugins/openvz/init-hooks/20-nw-bridge-config/bridge.sh deleted file mode 100755 index d5245234..00000000 --- a/os-plugins/plugins/openvz/init-hooks/20-nw-bridge-config/bridge.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Copyright (c) 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical to the files of virtualbox and qemukvm plugins) -############################################################################# - -local bridge=br0 -local brnwif=${nwif} -local nwifmac=${macaddr} - -# bridge 0 already defined or some other problem -brctl addbr ${bridge} || exit 0 -brctl stp ${bridge} 0 -brctl setfd ${bridge} 0.000000000001 -ip link set addr ${nwifmac} ${bridge} -ip link set dev ${nwif} up -brctl addif ${bridge} ${nwif} - -# fixme: sending back the variable to init does not work properly at the -# moment -nwif=${bridge} diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Base.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Base.pm deleted file mode 100644 index 5588a177..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the profile plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub getXsessionDPath -{ - my $self = shift; - - return "/etc/X11/Xsession.d/10slx-home_env"; -} - - -sub getProfileDPAth -{ - my $self = shift; - - return "/etc/profile.d/slx-kdehome.sh"; -} - -sub getKdeHome -{ - my $self = shift; - - return ".openslx/unknown/kde"; -} - -sub getGconfPathConfig -{ - my $self = shift; - - return "/etc/gconf/2/path"; -} - - -sub getGconfHome -{ - my $self = shift; - - return ".openslx/unknown/gconf"; -} - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 31ca1e8e..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index 433f6f7f..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index 240811df..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Scilin.pm deleted file mode 100644 index de66f02a..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Scilin.pm +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Scilin.pm -# - provides Scilin-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Scilin; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Suse.pm deleted file mode 100644 index e90e8211..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Suse.pm -# - provides Suse-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub _getKdeHomeMap -{ - my $self = shift; - - return; -} - -sub getProfileDPAth -{ - my $self = shift; - - - return "/etc/profile.d/slx-kdehome.sh"; -} - -sub getKdeHome -{ - my $self = shift; - - return ".openslx/suse/kde"; -} - -sub getGconfPathConfig -{ - my $self = shift; - - return "/etc/gconf/2/path"; -} - - -sub getGconfHome -{ - my $self = shift; - - return ".openslx/suse/gconf"; -} - - - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 26cd9426..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Ubuntu.pm -# - provides Debian-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub _getKdeHomeMap -{ - my $self = shift; - - return; -} - -sub getProfileDPAth -{ - my $self = shift; - - - return "/etc/profile.d/slx-kdehome.sh"; -} - -sub getKdeHome -{ - my $self = shift; - - return ".openslx/ubuntu/kde"; -} - -sub getGconfPathConfig -{ - my $self = shift; - - return "/etc/gconf/2/path"; -} - - -sub getGconfHome -{ - my $self = shift; - - return ".openslx/ubuntu/gconf"; -} - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu_10.pm b/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu_10.pm deleted file mode 100644 index 3b288e97..00000000 --- a/os-plugins/plugins/profile/OpenSLX/Distro/Ubuntu_10.pm +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile/OpenSLX/Distro/Ubuntu.pm -# - provides Debian-specific overrides of the Distro API for the profile -# plugin. -# ----------------------------------------------------------------------------- -package profile::OpenSLX::Distro::Ubuntu_10; - -use strict; -use warnings; - -use base qw(profile::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub _getKdeHomeMap -{ - my $self = shift; - - return; -} - -sub getProfileDPAth -{ - my $self = shift; - - - return "/etc/profile.d/slx-kdehome.sh"; -} - -sub getKdeHome -{ - my $self = shift; - - return ".openslx/ubuntu-lucid.kde"; -} - -sub getGconfPathConfig -{ - my $self = shift; - - return "/etc/gconf/2/path"; -} - - -sub getGconfHome -{ - my $self = shift; - - return ".openslx.ubuntu-lucid.gconf"; -} - -1; diff --git a/os-plugins/plugins/profile/OpenSLX/OSPlugin/profile.pm b/os-plugins/plugins/profile/OpenSLX/OSPlugin/profile.pm deleted file mode 100644 index b9538374..00000000 --- a/os-plugins/plugins/profile/OpenSLX/OSPlugin/profile.pm +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# profile.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::profile; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'profile', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - profile plugin .. - End-of-Here - precedence => 82, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - # attribute 'active' is mandatory for all plugins - 'profile::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'profile'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - }; -} - -sub _writeKdehomeEnv -{ - my $self = shift; - - my $profileFile = unshiftHereDoc(<<' End-of-Here'); - # Do not modify this file. - # File generated by profile plugin. - # For more information have a look at - # http://lab.openslx.org/wiki/openslx/profile - - export KDEHOME=${HOME}/%s - End-of-Here - - $profileFile = sprintf( - $profileFile, - $self->{distro}->getKdeHome() - ); - - spitFile($self->{distro}->getProfileDPAth(), $profileFile); - - return $self->{distro}->getKdeHome(); -} - -sub _modifyGconfPaths -{ - my $self = shift; - - my $cmd = "sed -i \"s,readwrite:\\\$(HOME)/.gconf,readwrite:\\\$(HOME)/%s,\" %s"; - $cmd = sprintf ( - $cmd, - $self->{distro}->getGconfHome(), - $self->{distro}->getGconfPathConfig() - ); - - slxsystem($cmd); - - return $self->{distro}->getGconfHome(); -} - -sub _writeXsessionScript -{ - my $self = shift; - my @paths = @_; - - my $xsessionFile= unshiftHereDoc(<<' End-of-Here'); - # Do not modify this file. - # File generated by profile plugin. - # For more information have a look at - # http://lab.openslx.org/wiki/openslx/profile - - %s - End-of-Here - - my $cmd = "mkdir -p "; - - while (@paths) { - my $path = shift(@paths); - $cmd .= "\${HOME}/$path \\\n"; - } - - $cmd .= "> /dev/null 2>&1 \n"; - - $xsessionFile = sprintf( - $xsessionFile, - $cmd - ); - - spitFile($self->{distro}->getXsessionDPath(), $xsessionFile); - - return; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - my $openslxConfigPath = $info->{'openslx-config-path'}; - my $attrs = $info->{'plugin-attrs'}; - - my @slxHomeEnv; - - push (@slxHomeEnv, $self->_writeKdehomeEnv()); - push (@slxHomeEnv, $self->_modifyGconfPaths()); - - $self->_writeXsessionScript(@slxHomeEnv); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - - return; -} - -1; diff --git a/os-plugins/plugins/profile/XX_profile.sh b/os-plugins/plugins/profile/XX_profile.sh deleted file mode 100644 index 1589bd61..00000000 --- a/os-plugins/plugins/profile/XX_profile.sh +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -# main script -if [ -e /initramfs/plugin-conf/profile.conf ]; then - . /initramfs/plugin-conf/profile.conf - - if [ $profile_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'profile' os-plugin ..."; - - - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'profile' os-plugin ..."; - - fi - -fi diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Base.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Base.pm deleted file mode 100644 index 3425f2ab..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the pvs plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 0382d3b9..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/debian.pm -# - provides Debian-specific overrides of the Distro API for the pvs -# plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(pvs::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index 76b8ffa1..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the pvs -# plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(pvs::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index b943a63b..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the pvs -# plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(pvs::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 411fa1c9..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the pvs plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(pvs::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/pvs/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index c7496ac0..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the Distro API for the pvs -# plugin. -# ----------------------------------------------------------------------------- -package pvs::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -# inherit everything from Debian (as Ubuntu is based on it anyway) -use base qw(pvs::OpenSLX::Distro::Debian); - -1; diff --git a/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm b/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm deleted file mode 100644 index d0a629e4..00000000 --- a/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 2009..2010 - 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/ -# ----------------------------------------------------------------------------- -# pvs.pm - plugin to use the pool video switch tools within OpenSLX environment -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::pvs; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - my $self = { - name => 'pvs', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - return { - description => unshiftHereDoc(<<' End-of-Here'), - enables pvs server (user or xorg) - End-of-Here - # waits for xorg to add configuration if needed - precedence => 70, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'pvs::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'pvs' plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - - 'pvs::mode' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - set pvs to listen on Xorg user sessions (default), general - access to the Xorg server (including displaymanager login) and - console framebuffer. - End-of-Here - content_regex => qr{^(x11user|x11mod|fb)$}, - content_descr => 'x11user for user, x11mod for access via Xorg module or fb', - default => 'x11user', - }, - - 'pvs::scale' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - scale screen size (e.g. as fraction 2/3 or as decimal 0.5) - End-of-Here - content_regex => undef, - content_descr => undef, - default => '', - }, - - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepositoryPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - - # should we distinguish between the two different packages!? - # libvnc should be part of the xorg package!? (so no check needed) - #my $engine = $self->{'os-plugin-engine'}; - #if (!isInPath('pvs')) { - # $engine->installPackages( - # $engine->getInstallablePackagesForSelection('pvs') - # ); - #} else { - # vlog(3, "pvs is already installed"); - #} - - # get path of files we need to install - my $pluginFilesPath = "$openslxBasePath/lib/plugins/$self->{'name'}/files"; - my $script = $self->{distro}->fillRunlevelScript(); - - # copy all needed files now - copyFile("$pluginFilesPath/*", "$pluginRepositoryPath"); - - # link these files - - #chmod 0755, "/etc/init.d/pvs"; - -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; -} - -1; diff --git a/os-plugins/plugins/pvs/XX_pvs.sh b/os-plugins/plugins/pvs/XX_pvs.sh deleted file mode 100644 index 9a86574f..00000000 --- a/os-plugins/plugins/pvs/XX_pvs.sh +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Script is included from init via the "." load function - thus it has all -# variables and functions available - -# Check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -# main script -if [ -e /initramfs/plugin-conf/pvs.conf ]; then - . /initramfs/plugin-conf/pvs.conf - if [ $pvs_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'pvs' os-plugin ..."; - # location of central pvs configuration files - testmkdi /mnt/etc/openslx/pvs - - # add it to the Xserver script (?) - - # link the executables - #for tool in poolVS poolVSClient VNCwrapper ; do - # ln -s /opt/openslx/plugin-repo/pvs/${tool} /mnt/var/X11R6/bin/${tool} - #done - - # write config file - #echo "# parameters generated by $0" > /mnt/etc/pvs/pvs.conf - #echo "pvs_PARAMS=\"$PARAMS\"" >> /mnt/etc/pvs/pvs.conf - #echo "pvs_X11=\"$pvs_X11\"" >> /mnt/etc/pvs/pvs.conf - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'pvs' os-plugin ..."; - - fi - fi -else - [ $DEBUGLEVEL -gt 2 ] && \ - echo "No configuration file found for pvs plugin." -fi diff --git a/os-plugins/plugins/pvs/files/pvs-vncsrv b/os-plugins/plugins/pvs/files/pvs-vncsrv deleted file mode 100755 index 966bf1df..00000000 --- a/os-plugins/plugins/pvs/files/pvs-vncsrv +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2009 - RZ Uni FR -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# pvs-vncsrv -# - This is a generic wrapper script for starting any userspace VNC server -# to offer connectivity from the pvs contol console. The script expects -# start/stop in $1, the port to start on in $2 and the password in $3. The -# latter one should be changed to piping for security reasons ... -# ----------------------------------------------------------------------------- - -# parameters for x11vnc -X11VNC_PARAMS="-bg -forever -display :0 -passwdfile rm:$HOME/.pvs/vncpasswd -o $HOME/.pvs/log.vncsrv -shared" -X11VNC_X11="0" - -# at the moment the poolVSClient is expected to use the ~/.pvs directory -[ -d ~/.pvs ] || mkdir ~/.pvs - -# write the password file -echo -e "$3\n__BEGIN_VIEWONLY__\n$3" > ~/.pvs/vncpasswd - -# find xauthority file -find_xauth () { - FOUND=0 - RETRIES=4 - [ -z "$1" ] || RETRIES="$1" - - [ -e "/var/lib/kdm/" ] && - XAUTHFILE_KDM=`find /var/lib/kdm/ -iname "A\:0-*"` - [ -e "/var/run/xauth/" ] && - XAUTHFILE_KDM2=$(find /var/run/xauth/ -iname "A\:0-*") - [ -e "/var/lib/xdm/authdir/authfiles/" ] && - XAUTHFILE_XDM=$(find /var/lib/xdm/authdir/authfiles/ -iname "A\:0-*") - [ -e "/var/lib/gdm/" ] && - XAUTHFILE_GDM=$(find /var/lib/gdm/ -iname *Xauth*) - - [ -f "$XAUTHFILE_KDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM" - [ -f "$XAUTHFILE_KDM2" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM2" - [ -f "$XAUTHFILE_XDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_XDM" - [ -f "$XAUTHFILE_GDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_GDM" - - if [ "$FOUND" -eq "0" ]; then - if [ "$RETRIES" -gt "0" ]; then - let "RETRIES-=1" - find_xauth "$RETRIES" - else - echo "start FAILED (can't find way to authenticate myself against X)" \ - >>~/.pvs/log.vncsrv - exit -1 - fi - else - echo "found authfile ($XAUTHORITY)" >>~/.pvs/log.vncsrv - fi -} - -START_COMMAND="x11vnc" - -case "$1" in - start) - [ -z "$2" -o -z "$3" ] && echo " Port and/or Password not set" \ - >>~/.pvs/log.vncsrv - echo "$2 $3" >>~/.pvs/log.test - if [ ! -f ~/.pvs/vncpasswd ]; then - echo " Start FAILED (~/.pvs/vncpasswd not found)" >>~/.pvs/log.vncsrv - echo " Create it manualy and retry starting x11vnc" >>~/.pvs/log.vncsrv - exit -1; - fi - - if [ $X11VNC_X11 = 1 ]; then - # find_xauth - START_COMMAND="$START_COMMAND -auth $XAUTHORITY $X11VNC_PARAMS" - else - START_COMMAND="$START_COMMAND $X11VNC_PARAMS" - fi - OUTPUT=$($START_COMMAND -rfbport $2) - echo "$START_COMMAND" >>~/.pvs/log.vncsrv - echo "$OUTPUT" >>~/.pvs/log.vncsrv - ;; - stop) - pid=$(pidof x11vnc) - if [ -z "$pid" ] - then - echo "x11vnc not running" >>~/.pvs/log.vncsrv - exit -1; - else - kill -9 $pid 2>/dev/null - echo "x11vnc stopped" >>~/.pvs/log.vncsrv - fi - ;; - *) - echo "x11vnc startscript" - echo "Usage: $0 (start|stop)" - ;; -esac -exit 0 - diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm deleted file mode 100644 index 1e3a9bfe..00000000 --- a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# qemukvm/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the qemukvm plugin. -# ----------------------------------------------------------------------------- -package qemukvm::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -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; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub fillRunlevelScript -{ - my $self = shift; - my $location = shift; - my $kind = shift; - - my $script = unshiftHereDoc(<<' End-of-Here'); - - # cpuvirt=$(grep -e "vmx|svm" /proc/cpuinfo) - # modprobe $cpuvirt - - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 6e2cab9b..00000000 --- a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# qemukvm/OpenSLX/Distro/debian.pm -# - provides Debian-specific overrides of the Distro API for the qemukvm -# plugin. -# ----------------------------------------------------------------------------- -package qemukvm::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(qemukvm::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub fillRunlevelScript -{ - my $self = shift; - my $location = shift; - my $kind = shift; - - my $script = unshiftHereDoc(<<' End-of-Here'); - - # something into here ... - - End-of-Here - return $script; -} - -1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 719dae2b..00000000 --- a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# qemukvm/OpenSLX/Distro/Suse.pm -# - provides SUSE specific overrides of the distro API for the qemukvm -# plugin. -# ----------------------------------------------------------------------------- -package qemukvm::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(qemukvm::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub fillRunlevelScript -{ - my $self = shift; - my $location = shift; - my $kind = shift; - - my $script = unshiftHereDoc(<<' End-of-Here'); - - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index ac764d31..00000000 --- a/os-plugins/plugins/qemukvm/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# qemukvm/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the Distro API for the qemukvm -# plugin. -# ----------------------------------------------------------------------------- -package qemukvm::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -# inherit everything from Debian (as Ubuntu is based on it anyway) -use base qw(qemukvm::OpenSLX::Distro::Debian); - - -1; diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm deleted file mode 100644 index 14e5917f..00000000 --- a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm +++ /dev/null @@ -1,256 +0,0 @@ -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - 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/ -# ----------------------------------------------------------------------------- -# qemukvm.pm -# - Declares necessary information for the qemukvm plugin -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::qemukvm; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -sub new -{ - my $class = shift; - my $self = { - name => 'qemukvm', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Module for enabling services for the Linux kvm using qemu for - IO on an OpenSLX stateless client. - End-of-Here - precedence => 70, - required => [ qw( desktop ) ], - }; -} - -sub getAttrInfo -{ - # Returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'qemukvm::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'qemukvm'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - # attribute 'imagesrc' defines where we can find qemukvm images - 'qemukvm::imagesrc' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Where do we store our qemukvm images? NFS? Filesystem? - End-of-Here - #TODO: check if the input is valid - #content_regex => qr{^(0|1)$}, - content_descr => 'Allowed values: local path or URI', - default => '', - }, - # attribute 'bridge' defines if bridged network mode should be - # switched on - 'qemukvm::bridge' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Should the bridging (direct access of the qemukvm clients - to the ethernet the host is connected to) be enabled - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => 'Allowed values: 0 or 1', - default => '1', - }, - - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - my $engine = $self->{'os-plugin-engine'}; - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - - # Different names of the tool (should be unified somehow!?) - if (!isInPath('qemu-kvm') || !isInPath('kvm')) { - $engine->installPackages( - $engine->getInstallablePackagesForSelection('qemu-kvm') - ); - } - # Sudo is needed to get access to certain system network commands - if (!isInPath('sudo')) { - $engine->installPackages($self->{distro}->getPackageName('sudo')); - } - - # Copy run-virt.include and template files to the appropriate place for - # inclusion in stage4 - my $pluginName = $self->{'name'}; - my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName/files"; - foreach my $file ( qw( run-virt.include ifup ifdown ) ) { - copyFile("$pluginBasePath/$file", "$pluginRepoPath/"); - } - chmod 0755, "$pluginRepoPath/ifup", "$pluginRepoPath/ifdown"; - - my $initFile = newInitFile(); - $initFile->setName("qemukvm"); - $initFile->setDesc("Setup environment for QEMU/KVM"); - - # TODO: default dirs als globale funktion anbieten - $initFile-> - addToBlock('head','. /etc/opt/openslx/plugins/qemukvm/network.conf'); - - # TODO: remove all runlevel links for qemu-kvm or kvm - my $kvm_module = unshiftHereDoc(<<' End-of-Here'); - # Figure out which module we need. - if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then - module=kvm_intel - elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then - module=kvm_amd - else - module=kqemu - fi - End-of-Here - - my $do_start = unshiftHereDoc(<<' End-of-Here'); - # loading kvm module - kvm_module - [ -n "${module}" ] && modprobe -q ${module} - # load the tunnel device module - modprobe -q tun - # TODO: maybe in the ifup-script better solution? - # configuring the tap0 interface to the existing bridge configured in stage3 - #for i in 0 1 2; do - # /opt/openslx/uclib-rootfs/sbin/tunctl -t tap${i} >/dev/null 2>&1 - # ip link set dev tap${i} up - #done - #/opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tap0 - #ip addr add ${nataddress} dev tap1 - #ip addr add ${hoaddress} dev tap2 - #echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding - #echo "1" >/proc/sys/net/ipv4/conf/tap0/forwarding - # make /dev/fb0 writable for all - # TODO: maybe solve via group or udev, etc... - chmod 766 /dev/fb* - End-of-Here - - my $do_stop = unshiftHereDoc(<<' End-of-Here'); - kvm_module - [ -n "${module}" ] && modprobe -q -r ${module} - modprobe -q -r tun - # TODO: tun removed, so this is not necessary - #/opt/openslx/uclib-rootfs/usr/sbin/brctl delif br0 tap0 - #ip addr del ${nataddress} dev tap1 - #ip addr del ${hoaddress} dev tap2 - #echo "0" >/proc/sys/net/ipv4/conf/br0/forwarding - #echo "0" >/proc/sys/net/ipv4/conf/tap0/forwarding - chmod 760 /dev/fb* - End-of-Here - - my $do_restart = unshiftHereDoc(<<' End-of-Here'); - do_stop && do_start - End-of-Here - - # add helper functions to initfile - # first parameter name of the function - # second parameter content of the function - $initFile->addFunction('kvm_module', $kvm_module); - $initFile->addFunction('do_start', $do_start); - $initFile->addFunction('do_stop', $do_stop); - $initFile->addFunction('do_restart', $do_restart); - - # place a call of the helper function in the stop block of the init file - # first parameter name of the function - # second parameter name of the block - $initFile->addFunctionCall('do_start', 'start'); - $initFile->addFunctionCall('do_stop', 'stop'); - $initFile->addFunctionCall('do_restart', 'restart'); - - my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0]; - - # write qemukvm initfile to plugin path - spitFile( - "$pluginRepoPath/qemukvm", - getInitFileForDistro($initFile, ucfirst($distro)) - ); - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - #my @problems; - - #my $vmimg = $stage3Attrs->{'qemukvm::imagesrc'} || ''; - - return; -} - -# The bridge configuration needs the bridge module to be present in early -# stage3 -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedModules; - - push @suggestedModules, qw( bridge ); - - return @suggestedModules; -} - -1; diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh deleted file mode 100644 index 8a41ff3b..00000000 --- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE=/initramfs/plugin-conf/qemukvm.conf -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/qemukvm -PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/qemukvm -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/qemukvm -LOGDIR=/mnt/${OPENSLX_DEFAULT_LOGDIR} - -# check if the configuration file is available -if [ -e ${CONFFILE} ]; then - - # load needed variables - . ${CONFFILE} - - # Test if this plugin is activated... more or less useless with the - # new plugin system - if [ ${qemukvm_active} -ne 0 2>/dev/null ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'qemukvm' os-plugin ..."; - - # load general configuration - . /initramfs/machine-setup - - # copy virtualization include files and qemukvm.conf to config dir - testmkd ${PLUGINCONFDIR} - cp /mnt/${PLUGINDIR}/run-virt.include ${PLUGINCONFDIR} - cp ${CONFFILE} ${PLUGINCONFDIR} - -# # check for the virtualization CPU features -# if grep -q "vmx" /proc/cpuinfo && modprobe ${MODPRV} kvm_intel ; then -# [ $DEBUGLEVEL -gt 0 ] && echo " * Loaded kvm_intel module" -# echo "kvm=intel" >> ${PLUGINCONFDIR}/qemukvm.conf -# elif grep -q "svm" /proc/cpuinfo && modprobe ${MODPRV} kvm_amd ; then -# [ $DEBUGLEVEL -gt 0 ] && echo " * Loaded kvm_amd module" -# echo "kvm=amd" >> ${PLUGINCONFDIR}/qemukvm.conf -# elif modprobe ${MODPRV} kqemu ; then -# [ $DEBUGLEVEL -gt 0 ] && \ -# error " * Successfully loaded the kqemu module, but loading of kvm_amd \ -#or kvm_intel\n failed, because no virtualization extenstion found in this \ -#CPU. Please\n enable the extension within your machines BIOS or get another \ -#CPU." nonfatal -# else -# error " * All module loading failed including the kqemu module, which \ -#was either\n not found or couldn't be loaded for other reasons. Thus using \ -#qemu(-kvm)\n makes not much sense." nonfatal -# fi - -# # load the tunnel device module -# modprobe tun 2>/dev/null - - # get source of qemukvm image server (get type, server and path) - if strinstr "/" "${qemukvm_imagesrc}" ; then - qkimgprot=$(uri_token ${qemukvm_imagesrc} prot) - qkimgserv=$(uri_token ${qemukvm_imagesrc} server) - qkimgpath="$(uri_token ${qemukvm_imagesrc} path)" - fi - if [ -n "${qkimgserv}" ] ; then - # directory where qemu images are expected in - mnttarget=/mnt/var/lib/virt/qemukvm - # mount the qemukvm image source readonly (ro) - fsmount ${qkimgprot} ${qkimgserv} ${qkimgpath} ${mnttarget} ro - else - [ $DEBUGLEVEL -gt 1 ] && error " * Incomplete information in variable \ -${qemukvm_imagesrc}." nonfatal - fi - - # create a network configuration template (variables should be setable in - # the future, see vmware plugin) - natnetwork="192.168.101" - honetwork="192.168.102" - echo -e "nataddress=${natnetwork}.254/24\nhoaddress=${honetwork}.254/24" \ - >${PLUGINCONFDIR}/network.conf - - # copy the runlevel script (proper place for all distros??) - cp /mnt/${PLUGINDIR}/qemukvm /mnt/etc/init.d - chmod 0755 /mnt/etc/init.d/qemukvm - rllinker "qemukvm" 22 2 - - # copy the /etc/qemu-ifup script and enable extended rights for running - # the emulator and certain network commands via sudo - ln -sf ${PLUGINDIR}/ifup ${PLUGINCONFDIR}/ifup - ln -sf ${PLUGINDIR}/ifdown ${PLUGINCONFDIR}/ifdown - - cat >> /mnt/etc/sudoers << EOF -# allow to start and stop kvm services / load-/unload kvm modules -#ALL ALL=NOPASSWD: /etc/init.d/qemukvm -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/tunctl -t tap* -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tap* -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/bin/ip link set dev tap* up -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/bin/ip addr add * dev tap* -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemukvm/*/udhcpd.conf -ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/bin/cp /tmp/qemukvm/*/forwarding /proc/sys/net/ipv4/conf/tap*/forwarding -#ALL ALL=NOPASSWD: ${killall} udhcpd -EOF - fi -else - [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of 'qemukvm' plugin failed" -fi diff --git a/os-plugins/plugins/qemukvm/files/ifdown b/os-plugins/plugins/qemukvm/files/ifdown deleted file mode 100644 index e741d9ca..00000000 --- a/os-plugins/plugins/qemukvm/files/ifdown +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# ifdown -# - Script used for network cleanup of qemukvm in stage4 -# ----------------------------------------------------------------------------- - -# get VM_ID through tap name -VM_ID=$(echo $1 | grep -oE "0[0-4]$") -QKTMPDIR=/tmp/qemukvm/${USER}/${VM_ID} -touch /tmp/qemukvm/udhcpd.pids -chmod 666 tmp/qemukvm/udhcpd.pids - -case "$1" in - tapnat0*) - # kill udhcpd - cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid - ;; - taphost0*) - # kill udhcpd - cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid - ;; -esac - -# Produce a clean exit status -exit 0 diff --git a/os-plugins/plugins/qemukvm/files/ifup b/os-plugins/plugins/qemukvm/files/ifup deleted file mode 100644 index b3218798..00000000 --- a/os-plugins/plugins/qemukvm/files/ifup +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh -# Copyright (c) 2009..2010 - 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/ -# ----------------------------------------------------------------------------- -# ifup -# - Script used for network setup of qemukvm in stage4 -# ----------------------------------------------------------------------------- - -. /etc/opt/openslx/openslx.conf - -PLUGINCONFDIR=${OPENSLX_DEFAULT_CONFDIR}/plugins/qemukvm - -# get VM_ID through tap name -VM_ID=$(echo $1 | grep -oE "0[0-4]$") -QKTMPDIR=/tmp/qemukvm/${USER}/${VM_ID} - -# Use the udhcpcd as DHCP server and brctl as provided by default in OpenSLX -# environments via uclibc-wrapper. -. ${PLUGINCONFDIR}/network.conf - -# Just decide by the virtual network device used which kind of connection -# should be set up (passed in $1): tap0 = bridge, tap1 = nat, tap2 = hostonly. -case "$1" in - tapbridge0*) - sudo ip link set dev $1 up - # TODO: forwarding?, where needed - echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding - ;; - tapnat0*) - # Configuring DHCP on host tapnat interface and enable IP masquerading - sudo ip addr add ${nataddress} dev $1 - sudo ip link set dev $1 up - # TODO: forwarding?, where needed - echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding - # TODO: we use here atatic address, maybe change later - sed -e "s,NWIF,$1,;s,CNETWORK,192.168.1${VM_ID}," \ - -e "s,PIDFILE,${QKTMPDIR}/udhcpd.pid," \ - -e "s,LEASEFILE,${QKTMPDIR}/udhcpd.leases," \ - ${OPENSLX_DEFAULT_CONFDIR}/udhcpd.conf \ - >${QKTMPDIR}/udhcpd.conf - touch ${QKTMPDIR}/udhcpd.leases - sudo /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \ - -S ${QKTMPDIR}/udhcpd.conf - # iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE - ;; - taphost0*) - # Configuring DHCP on host taphost interface - sudo ip addr add ${hoaddress} dev $1 - sudo ip link set dev $1 up - # TODO: forwarding?, where needed - echo "1" >${QKTMPDIR}/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/br0/forwarding - sudo cp ${QKTMPDIR}/forwarding /proc/sys/net/ipv4/conf/$1/forwarding - sed -e "s,NWIF,$1,;s,USER,${USER},;s,CNETWORK,192.168.1${VM_ID}," \ - -e "s,PIDFILE,${QKTMPDIR}/udhcpd.pid," \ - -e "s,LEASEFILE,${QKTMPDIR}/udhcpd.leases," \ - ${OPENSLX_DEFAULT_CONFDIR}/udhcpd.conf >${QKTMPDIR}/udhcpd.conf - touch ${QKTMPDIR}/udhcpd.leases - sudo /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \ - -S ${QKTMPDIR}/udhcpd.conf - ;; -esac - -exit 0 diff --git a/os-plugins/plugins/qemukvm/files/run-virt.include b/os-plugins/plugins/qemukvm/files/run-virt.include deleted file mode 100644 index 02c70469..00000000 --- a/os-plugins/plugins/qemukvm/files/run-virt.include +++ /dev/null @@ -1,306 +0,0 @@ -# run-virt.include -# ----------------------------------------------------------------------------- -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# ----------------------------------------------------------------------------- -# run-virt.include -# - Include script for running the QEMU/Linux KVM virtual machine on an -# OpenSLX client via the run-virt.sh or run-vmgrid.sh -################################################################################ - -################################################################################ -### Include general configuration -################################################################################ -if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then - . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf -else - writelog "Problems reading config file of ${self} plugin" - # TODO: exit wenn conf wichtig - #exit 1 -fi - -################################################################################ -### Declaration of default variables -################################################################################ - -PLUGINCONFQK="${PLUGINCONFROOT}/${self}" -PLUGINDIRQK=${OPENSLX_DEFAULT_DIR}/plugin-repo/${self} -# create TMPDIR for all users -mkdir -m 1777 /tmp/${self} 2>/dev/null -# TMPDIR -QKTMPDIR="/tmp/${self}/${USER}/${VM_ID}" -# define dirs and files which can be removed after exit, be carefull! -RMDIRS="${QKTMPDIR}" -rm -rf ${RMDIRS} 2>/dev/null -mkdir -m 1777 -p ${QKTMPDIR} 2>/dev/null -# vmpath is the path to the vm, here an image (img|qcow*|vmdk) -diskfile=${vmpath} - -# check the file type -if echo ${imgname} | grep -iE "img|qcow|vmdk" >/dev/null 2>&1; then - imgtype=$(echo ${imgname##*.} | tr [a-z] [A-Z]) -else - writelog "${imgname} is not a valid image type (img|qcow*|vmdk), exiting!" - exit 1 -fi - -# hot keys ALT+CTRL+SHIFT -VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab" - -# display name, remove blanks because of cmdline problems -displayname=$(echo ${displayname} | sed -e "s, ,-,g") -VIRTCMDOPTS="${VIRTCMDOPTS} -name ${displayname}" - -writelog "Directories:" -writelog "\tTMPDIR:\t\t\t$QKTMPDIR" -writelog "Diskimage:" -writelog "\tDisk type:\t\t$imgtype" -writelog "\tDisk file:\t\t$diskfile" - -################################################################################ -### Hardware checks -################################################################################ - -# memory part equal to vmware plugin -# percentage of memory to use for virtualbox in standard case -if [ -n "${forcemem}" ]; then - mem="${forcemem}" -else - permem=30 - if [ "${totalmem}" -ge "1600" ]; then - permem=40 - fi -# # check if /tmp is on harddisk -# if grep -qe "/dev/.* /tmp " /proc/mounts ; then -# permem=60 -# id44="1" -# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well -# # (40% vmware | 40% confdir(vmem...) | 20% host -# # VMplayer 2+ issue -# # TODO: makes this sense for vbox? -# #if [ "${totalmem}" -ge "2500" ]; then -# #permem=40 -# #rmdir ${snapshotdir} -# #snapshotdirold=${snapshotdir} -# #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID} -# #mkdir -p ${snapshotdir} -# #ln -sf ${snapshotdir} ${snapshotdirold} -# #fi -# fi - mem=$(expr ${totalmem} / 100 \* ${permem}) - if [ "${id44}" = "1" ]; then - memhost=$(expr ${totalmem} - ${mem}) - else - memhost=$(expr ${totalmem} - ${mem} - ${mem}) - fi - # static first - permem=50 - mem=$(expr ${totalmem} / 100 \* ${permem}) - if [ "${mem}" -lt "256" ] || [ "${memhost}" -lt "256" ]; then - writelog "Memory out of range: ${mem} MB (guest) / ${memhost} MB (host)!" - writelog "Min. 256 MB for host and guest!" - exit 1 - fi -fi - -VIRTCMDOPTS="${VIRTCMDOPTS} -m ${mem}" - -# network adaptor alternatives: rtl8139, pcnet, e1000 -network_card=${network_card:=pcnet} -VIRTCMDOPTS="${VIRTCMDOPTS} -net nic,macaddr=${macaddr},model=${network_card}" - -# define net kind and apply script -qemu_ifscr="script=${PLUGINCONFQK}/ifup,downscript=${PLUGINCONFQK}/ifdown" -case "${network_kind}" in - bridge*) - VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tapbridge${VM_ID},${qemu_ifscr}" - sudo /opt/openslx/uclib-rootfs/sbin/tunctl -t tapbridge${VM_ID} -u ${USER} \ - >/dev/null 2>&1 - sudo /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tapbridge${VM_ID} - POSTRUN="/opt/openslx/uclib-rootfs/sbin/tunctl -d tapbridge${VM_ID}" - ;; - nat) - VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tapnat${VM_ID},${qemu_ifscr}" - sudo /opt/openslx/uclib-rootfs/sbin/tunctl -t tapnat${VM_ID} -u ${USER} \ - >/dev/null 2>&1 - sudo /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tapnat${VM_ID} - POSTRUN="/opt/openslx/uclib-rootfs/sbin/tunctl -d tapnat${VM_ID}" - ;; - host*) - VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=taphost${VM_ID},${qemu_ifscr}" - sudo /opt/openslx/uclib-rootfs/sbin/tunctl -t taphost${VM_ID} -u ${USER} \ - >/dev/null 2>&1 - sudo /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 taphost${VM_ID} - POSTRUN="/opt/openslx/uclib-rootfs/sbin/tunctl -d taphost${VM_ID}" - ;; - *) - network_kind="user" - VIRTCMDOPTS="${VIRTCMDOPTS} -net user" - ;; -esac - -# translate boot, use if set else set to HardDisk -if [ -n "${boot}" ]; then - case ${boot} in - n*) # usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network - boot="n" - # TODO: does not work yet, can be removed if tap1 solution better - if [ "${network_kind}" = "user" ] && [ -n "${virtualbox_tftpdir}" ]; then - VIRTCMDOPTS="${VIRTCMDOPTS},tftp=${virtualbox_tftpdir}" - fi - ;; - # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM - *) - boot="c" - ;; - esac -else - boot="c" -fi - -# external GUI port -vncport="590${VM_ID}" - -# TODO: most of the following does not make much sense yet ... -# virtual fd/cd/dvd and drive devices, floppy b: for configuration -# if $floppy_0 from run-virt.include set then fdtest="TRUE" -fdtest= -fdtest=${floppy_0:+"TRUE"} -# if $fdtest not set floppy0="FALSE", else "TRUE" -floppy0=${fdtest:-"FALSE"} -floppy1="TRUE" -floppy1name="/var/lib/virt/vmchooser/loopimg/fd.img" -# if $cdrom_0 from run-virt.include set then cdtest="TRUE" -cdtest= -cdtest=${cdrom_0:+"TRUE"} -# if $cdtest not set cdrom0="FALSE", else "TRUE" -cdrom0=${cdtest:-"FALSE"} -# if $cdrom_1 from run-virt.include set then cdtest="TRUE" -cdtest= -cdtest=${cdrom_1:+"TRUE"} -# if $cdtest not set cdrom1="FALSE", else "TRUE" -cdrom1=${cdtest:-"FALSE"} -# ide is expected default, test for the virtual disk image type should -# be done while creating the runscripts ... -ide="TRUE" -hddrv="ide" - -# TODO: nur bei vmchooser -#VIRTCMDOPTS="${VIRTCMDOPTS} -fda /dev/fd0" -#VIRTCMDOPTS="${VIRTCMDOPTS} -fdb ${floppy1name}" - -# audio -VIRTCMDOPTS="${VIRTCMDOPTS} -soundhw all" - -# serial -#VIRTCMDOPTS="${VIRTCMDOPTS} -serial /dev/ttyS0" - -writelog "Virtual Hardware:" -writelog "\tGuest RAM:\t\t${mem} MB" -# echo nur wenn memhost gesetzt -[ -n "${memhost}" ] && writelog "\tHost RAM:\t\t${memhost} MB" -writelog "\tMAC address:\t\t$macaddr" -writelog "\tNetwork card:\t\t${network_card}" -writelog "\tNetwork kind:\t\t${network_kind}" -#writelog "\tCD-ROM1:\t${cdrom0}" -#writelog "\tCD-ROM2:\t${cdrom1}" -#writelog "\tFloppy_A:\t${floppy0}" -#writelog "\tFloppy_B:\t${floppy1}" -#writelog "\tShared Folders 'home':\t/home/${USER}" - -################################################################################ -### finally set env for run-virt.sh -################################################################################ - -# TODO: besser drive statt hda? -#-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i] -# [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off] -# [,cache=writethrough|writeback|none][,format=f][,serial=s] -# [,boot=on|off] -#-snapshot write to temporary files instead of disk image files -#-usb enable the USB driver (will be the default soon) -#-usbdevice name add the host or guest USB device 'name' -#-nographic disable graphical output and redirect serial I/Os to console -#-vga [std|cirrus|vmware|none] select video card type -#-vnc display start a VNC server on display -#-tftp dir allow tftp access to files in dir [-net user] -#-bootp file advertise file in BOOTP replies -#-no-fd-bootchk disable boot signature checking for floppy disks -#-no-acpi disable ACPI -#-kernel bzImage use 'bzImage' as kernel image -#-append cmdline use 'cmdline' as kernel command line -#-initrd file use 'file' as initial ram disk -#-serial dev redirect the serial port to char device 'dev' -#-parallel dev redirect the parallel port to char device 'dev' -#-monitor dev redirect the monitor to char device 'dev' -#-pidfile file write PID to 'file' -#-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items) -#-L path set the directory for the BIOS, VGA BIOS and keymaps -#-bios file set the filename for the BIOS -#-no-kvm disable KVM hardware virtualization -#-enable-nesting enable support for running a VM inside the VM (AMD only) -#-no-reboot exit instead of rebooting -#-no-shutdown stop before shutdown -#-loadvm [tag|id] -# start right away with a saved state (loadvm in monitor) -#-daemonize daemonize QEMU after initializing -#-kvm-shadow-memory megs set the amount of shadow pages to be allocated -#-mem-path set the path to hugetlbfs/tmpfs mounted directory, also -# enables allocation of guest memory with huge pages -#-mem-prealloc toggles preallocation of -mem-path backed physical memory -# at startup. Default is enabled. -#-option-rom rom load a file, rom, into the option ROM space -#-localtime set the real time clock to local time [default=utc] -#-startdate select initial date of the clock -#-icount [N|auto] -# enable virtual instruction counter with 2^N clock ticks per instruction -#-echr chr set terminal escape character instead of ctrl-a -#-virtioconsole c -# set virtio console -#-show-cursor show cursor - -# check for kvm modules -if [ -c /dev/kvm ]; then - for tool in kvm qemu-kvm; do - VIRTCMD=$(which ${tool} 2>/dev/null) - [ -n "$VIRTCMD" ] && break - done -else - VIRTCMD=$(which qemu 2>/dev/null) - writelog "KVM available but /dev/kvm not found!" - writelog "Trying fallback to QEMU emulation." -fi - -if [ -z "${VIRTCMD}" ]; then - writelog "No QEMU/KVM found, exiting!" - rm -rf ${RMDIRS} - exit 1 -elif [ "${VIRTCMD##*/}" = "qemu" ]; then - writelog "User space emulation:\t\t${VIRTCMD}" -else - writelog "User space virtualization:\t${VIRTCMD}" -fi - -# using snapshots -VIRTCMDOPTS="${VIRTCMDOPTS} -snapshot" - -# TODO: boot als var, -boot n, tftp... -VIRTCMDOPTS="${VIRTCMDOPTS} -boot c" - -# set headless mode -# define first, you do not want VIRTCMDOPTS from graphical start -VIRTCMDHL=${VIRTCMD} -VIRTCMDOPTSHL="${VIRTCMDOPTS} -nographic ${diskfile}" - -# graphical start -# vga std/cirrus/vmware? -#VIRTCMDOPTS="${VIRTCMDOPTS} -vga std -full-screen ${diskfile}" -VIRTCMDOPTS="${VIRTCMDOPTS} ${diskfile}" diff --git a/os-plugins/plugins/qemukvm/init-hooks/20-nw-bridge-config/bridge.sh b/os-plugins/plugins/qemukvm/init-hooks/20-nw-bridge-config/bridge.sh deleted file mode 100644 index ccae3381..00000000 --- a/os-plugins/plugins/qemukvm/init-hooks/20-nw-bridge-config/bridge.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Copyright (c) 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical to the files of virtualbox and vmware plugins) -############################################################################# - -local bridge=br0 -local brnwif=${nwif} -local nwifmac=${macaddr} - -# bridge 0 already defined or some other problem -brctl addbr ${bridge} || exit 0 -brctl stp ${bridge} 0 -brctl setfd ${bridge} 0.000000000001 -ip link set addr ${nwifmac} ${bridge} -ip link set dev ${nwif} up -brctl addif ${bridge} ${nwif} - -# fixme: sending back the variable to init does not work properly at the -# moment -nwif=${bridge} diff --git a/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh b/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh deleted file mode 100755 index b4f02389..00000000 --- a/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 - 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical in vmware, virtualbox and qemukvm plugins) -############################################################################# - -. /etc/openslx.conf - -CONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR} -testmkd ${CONFDIR} - -# configuring dhcpd stub for virtual networks -cat > ${CONFDIR}/udhcpd.conf << EOF -# general udhcpd configuration file for virtual machines written by -# $0 during OpenSLX stage3 configuration - -# start and end of the IP lease block -start CNETWORK.20 -end CNETWORK.100 - -# interface that udhcpd will use -interface NWIF - -# how long an offered address is reserved (leased) in seconds -offer_time 6000 - -# location of the leases file -lease_file LEASEFILE - -# location of the pid file -pidfile PIDFILE - -option dns ${domain_name_servers} -option subnet 255.255.255.0 -option router CNETWORK.1 -option wins CNETWORK.10 -option domain virtual.site ${domain_name} - -# additional options known to udhcpd -#subnet #timezone -#router #timesvr -#namesvr #dns -#logsvr #cookiesvr -#lprsvr #bootsize -#domain #swapsvr -#rootpath #ipttl -#mtu #broadcast -#wins #lease -#ntpsrv #tftp -#bootfile -EOF diff --git a/os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm b/os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm deleted file mode 100644 index ed08c5f3..00000000 --- a/os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# syslog/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the syslog plugin. -# ----------------------------------------------------------------------------- -package syslog::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub runlevelInfo -{ - my $self = shift; - my $kind = shift; - - # most distros (well: Debian & Ubuntu) use a different initscript depending - # on which version of syslog is installed ('syslogd', 'syslog-ng' or 'rsyslog') - my %nameMap = ( - 'syslogd' => 'sysklogd', - 'syslog-ng' => 'syslog-ng', - 'rsyslog' => 'rsyslog', - ); - my $rlInfo = { - scriptName => $nameMap{$kind}, - startAt => 2, - stopAt => 15, - }; - - return $rlInfo; -} - -sub getPackageName -{ - my $self = shift; - my $name = shift; - - my %nameMap = ( - 'syslogd' => 'sysklogd', - 'syslog-ng' => 'syslog-ng', - 'rsyslog' => 'rsyslog', - ); - return $nameMap{$name}; -} - -sub getBinaryName -{ - my $self = shift; - my $name = shift; - - my %nameMap = ( - 'syslogd' => 'sysklogd', - 'syslog-ng' => 'syslog-ng', - 'rsyslog' => 'rsyslogd', - ); - return $nameMap{$name}; -} - -1; diff --git a/os-plugins/plugins/syslog/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/syslog/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 7255d6f5..00000000 --- a/os-plugins/plugins/syslog/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# syslog/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the syslog plugin. -# ----------------------------------------------------------------------------- -package syslog::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(syslog::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -sub runlevelInfo -{ - my $self = shift; - my $attrs = shift; - - my $rlInfo = $self->SUPER::runlevelInfo($attrs); - - # SUSE uses a script named 'syslog', no matter if syslogd or syslog-ng - # is installed - $rlInfo->{scriptName} = 'syslog'; - - return $rlInfo; -} - -1; diff --git a/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm b/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm deleted file mode 100644 index c011bf66..00000000 --- a/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm +++ /dev/null @@ -1,322 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# syslog.pm -# - implementation of the 'syslog' plugin, which installs -# all needed information for a displaymanager and for the syslog. -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::syslog; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'syslog', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Sets up system log service for SLX-clients. - End-of-Here - precedence => 50, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'syslog::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'syslog'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'syslog::kind' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - kind of syslog to use \(syslogd-ng or old-style syslog\) - End-of-Here - content_regex => qr{^(syslog-ng|syslogd|rsyslog)$}, - content_descr => 'allowed: syslog-ng, syslogd, rsyslog', - default => 'rsyslog', - }, - 'syslog::host' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name or IP-address of host where syslog shall be sent to - End-of-Here - content_regex => undef, - content_descr => 'a hostname or an IP address', - default => undef, - }, - 'syslog::port' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - port number (UDP) where syslog shall be sent to - End-of-Here - content_regex => undef, - content_descr => 'a port number', - default => 514, - }, - 'syslog::file' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - name of file where all log messages shall be written - End-of-Here - content_regex => undef, - content_descr => 'a complete file path', - default => '/var/log/messages', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - # We are going to change some of the stage1 attributes during installation - # (basically we are filling the ones that are not defined). Since the result - # of these changes might change between invocations, we do not want to store - # the resulting values, but we want to store the original (undef). - # In order to do so, we copy all stage1 attributes directly into the - # object hash and change them there. - $self->{kind} = lc($self->{attrs}->{'syslog::kind'}); - - my $engine = $self->{'os-plugin-engine'}; - - if ($self->{kind} eq 'rsyslog' && !isInPath($self->{distro}->getBinaryName('rsyslog'))) { - $engine->installPackages($self->{distro}->getPackageName('rsyslog')); - } - - if ($self->{kind} eq 'syslog-ng' && !isInPath('syslog-ng')) { - $engine->installPackages($self->{distro}->getPackageName($self->{distro}->getBinaryName('syslog-ng'))); - } - - # not sure if we ever should setup this service - if ($self->{kind} eq 'syslogd' && !isInPath($self->{distro}->getBinaryName('syslogd'))) { - $engine->installPackages($self->{distro}->getPackageName('syslogd')); - } - - if (!$self->{kind}) { - if (qx{which $self->{distro}->getBinaryName('rsyslog')}) { - $self->{kind} = 'rsyslog'; - } - elsif (qx{which $self->{distro}->getBinaryName('syslog-ng')}) { - $self->{kind} = 'syslog-ng'; - } - elsif (qx{which $self->{distro}->getBinaryName('syslogd')}) { - $self->{kind} = 'syslogd'; - } - else { - die _tr( - "no syslog daemon available, plugin 'syslog' wouldn't work!" - ); - } - print _tr("selecting %s as syslog kind\n", $self->{kind}); - } - - # start to actually do something - according to current stage1 attributes - if ($self->{kind} eq 'rsyslog') { - $self->_setupRsyslog($self->{attrs}); - } - elsif ($self->{kind} eq 'syslog-ng') { - $self->_setupSyslogNG($self->{attrs}); - } - elsif ($self->{kind} eq 'syslogd') { - $self->_setupSyslogd($self->{attrs}); - } - else { - die _tr( - 'unknown kind "%s" given, only "rsyslog", "syslog-ng" and "syslogd" are supported!', - $self->{kind} - ); - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub _setupRsyslog -{ - my $self = shift; - my $attrs = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - - my $kind = lc($attrs->{'syslog::kind'}); - my $rlInfo = $self->{distro}->runlevelInfo($kind); - - my $conf = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'syslog' - - testmkd /mnt/var/run/rsyslog - rllinker $rlInfo->{scriptName} $rlInfo->{startAt} $rlInfo->{stopAt} - - End-of-Here - spitFile("$repoPath/syslog.sh", $conf); - - return; -} - -sub _setupSyslogNG -{ - my $self = shift; - my $attrs = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - - my $kind = lc($attrs->{'syslog::kind'}); - my $rlInfo = $self->{distro}->runlevelInfo($kind); - - my $conf = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'syslog' - - cat >/mnt/etc/syslog-ng/syslog-ng.conf <<END - # written by OpenSLX-plugin 'syslog' - source all { - file("/proc/kmsg"); - unix-dgram("/dev/log"); - internal(); - }; - destination console_all { - file("/dev/tty10"); - }; - log { - source(all); - destination(console_all); - }; - END - - if [ -n "\${syslog_host}" ]; then - [ -z \${syslog_port} ] && syslog_port=514 - cat >>/mnt/etc/syslog-ng/syslog-ng.conf <<END - destination loghost { - udp( "\${syslog_host}" port(\${syslog_port}) ); - }; - log { - source(all); - destination(loghost); - }; - END - fi - - if [ -n "\${syslog_file}" ]; then - cat >>/mnt/etc/syslog-ng/syslog-ng.conf <<END - destination allmessages { - file("\${syslog_file}"); - }; - log { - source(all); - destination(allmessages); - }; - END - fi - - rllinker $rlInfo->{scriptName} $rlInfo->{startAt} $rlInfo->{stopAt} - - End-of-Here - spitFile("$repoPath/syslog.sh", $conf); - - return; -} - -sub _setupSyslogd -{ - my $self = shift; - my $attrs = shift; - - my $repoPath = $self->{pluginRepositoryPath}; - - my $kind = lc($attrs->{'syslog::kind'}); - my $rlInfo = $self->{distro}->runlevelInfo($kind); - - my $conf = unshiftHereDoc(<<' End-of-Here'); - #!/bin/sh - # written by OpenSLX-plugin 'syslog' - - cat >/mnt/etc/syslog.conf <<END - # written by OpenSLX-plugin 'syslog' - *.=debug;\ - auth,authpriv.none;\ - news.none;mail.none -/var/log/debug - *.=info;*.=notice;*.=warn;\ - auth,authpriv.none;\ - cron,daemon.none;\ - mail,news.none -/var/log/messages - - END - - if [ -n "\${syslog_host}" ]; then - [ -z \${syslog_port} ] && syslog_port=514 - cat >/mnt/etc/syslog.conf <<END - *.* @${syslog_host} - END - fi - - if [ -n "\${syslog_file}" ]; then - cat >/mnt/etc/syslog.conf <<END - *.* ${syslog_file} - }; - END - fi - - rllinker $rlInfo->{scriptName} $rlInfo->{startAt} $rlInfo->{stopAt} - - End-of-Here - spitFile("$repoPath/syslog.sh", $conf); - - return; -} - -1; diff --git a/os-plugins/plugins/syslog/XX_syslog.sh b/os-plugins/plugins/syslog/XX_syslog.sh deleted file mode 100644 index 0a96814f..00000000 --- a/os-plugins/plugins/syslog/XX_syslog.sh +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2007..2008 - RZ Uni Freiburg -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'syslog' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -if [ -e /initramfs/plugin-conf/syslog.conf ]; then - . /initramfs/plugin-conf/syslog.conf - if [ $syslog_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'syslog' os-plugin ..." - - . /mnt/opt/openslx/plugin-repo/syslog/syslog.sh - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'syslog' os-plugin ..." - - fi -fi diff --git a/os-plugins/plugins/syslog/init-hooks/15-have-ip-config/syslog.sh b/os-plugins/plugins/syslog/init-hooks/15-have-ip-config/syslog.sh deleted file mode 100644 index f0ca370f..00000000 --- a/os-plugins/plugins/syslog/init-hooks/15-have-ip-config/syslog.sh +++ /dev/null @@ -1,18 +0,0 @@ -if [ -e /initramfs/plugin-conf/syslog.conf ]; then - . /initramfs/plugin-conf/syslog.conf - if [ $syslog_active -ne 0 ]; then - # TODO: maybe limit the maximum log file size via rotation? - params="-s 0" - if [ -n "$syslog_host" ]; then - if [ -n "${syslog_port}" ]; then - host="${syslog_host}:${syslog_port}" - else - host="${syslog_host}" - fi - params="$params -R ${host}" - fi - echo "syslogd $params ..." - syslogd $params >/dev/null 2>&1 - klogd >/dev/null 2>&1 - fi -fi diff --git a/os-plugins/plugins/syslog/init-hooks/95-cleanup/syslog.sh b/os-plugins/plugins/syslog/init-hooks/95-cleanup/syslog.sh deleted file mode 100644 index 08076c34..00000000 --- a/os-plugins/plugins/syslog/init-hooks/95-cleanup/syslog.sh +++ /dev/null @@ -1,12 +0,0 @@ -if [ -e /initramfs/plugin-conf/syslog.conf ]; then - . /initramfs/plugin-conf/syslog.conf - if [ $syslog_active -ne 0 ] && [ -n "$syslog_host" ]; then - # kill syslogd, as it is going to be replaced by system's syslog soon - killall syslogd - # remove links to boot.klog, as that will hang (I suppose that is - # because we already emptied /dev/kmsg) - if [ -e /mnt/etc/init.d/boot.klog ]; then - rm /mnt/etc/init.d/boot.d/*.klog - fi - fi -fi diff --git a/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm b/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm deleted file mode 100644 index 9800c203..00000000 --- a/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2007 - 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/ -# ----------------------------------------------------------------------------- -# sysrqshutdown.pm -# - implementation of the 'sysrqshutdow' plugin, which replaces the shutdown -# binary through a SYSRQ shutdown script -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::sysrqshutdown; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'sysrqshutdown', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Replaces the shutdown binary through a SYSRQ shutdown script - End-of-Here - precedence => 10, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'sysrqshutdown::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'sysrqshutdown'-plugin be activated? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - if (! -e "/sbin/shutdown.slxorig") { - # copy files - my $openslxBasePath = $info->{'openslx-base-path'}; - my $pluginName = $self->{'name'}; - my $pluginBasePath - = "$openslxBasePath/lib/plugins/$pluginName/files"; - - system("mv /sbin/shutdown /sbin/shutdown.slxorig"); - system("cp -p $pluginBasePath/shutdown /sbin/"); - chmod 0755, "/sbin/shutdown"; - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - if (-e "/sbin/shutdown.slxorig") { - system("mv /sbin/shutdown.slxorig /sbin/shutdown"); - } - - return; -} - -1; diff --git a/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh b/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh deleted file mode 100644 index 66a728da..00000000 --- a/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE="/initramfs/plugin-conf/sysrqshutdown.conf" -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/sysrqshutdown - -if [ -f $CONFFILE ]; then - - # load needed variables - . $CONFFILE - - if [ ${sysrqshutdown_active} -ne 0 ] ; then - [ ${DEBUGLEVEL} -gt 0 ] && echo "executing the 'sysrqshutdown' plugin ..." - - testmkd ${PLUGINCONFDIR} - cp $CONFFILE ${PLUGINCONFDIR}/sysrqshutdown.conf - - # finished ... - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'sysrqshutdown' plugin ..." - fi -else - [ $DEBUGLEVEL -gt 0 ] && echo " * config of 'sysrqshutdown' plugin failed" -fi - diff --git a/os-plugins/plugins/sysrqshutdown/files/shutdown b/os-plugins/plugins/sysrqshutdown/files/shutdown deleted file mode 100644 index 7f4e9a1f..00000000 --- a/os-plugins/plugins/sysrqshutdown/files/shutdown +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2010 - RZ Uni FR -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# shutdown -# - Script for SYSRQ shutdown -################################################################################ - -. /etc/opt/openslx/openslx.conf - -################################################################################ -### Define default dirs / get configs -################################################################################ - -PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins -PLUGINCONFVMGRID=${PLUGINCONFROOT}/sysrqshutdown -# include general configuration from vmgrid -if [ -f ${PLUGINCONFVMGRID}/sysrqshutdown.conf ]; then - . ${PLUGINCONFVMGRID}/sysrqshutdown.conf -else - sysrqshutdown_active=0 -fi - -if [ ${sysrqshutdown_active} -eq 1 ]; then - # check if reboot or halt - case "$@" in - '-r now') - for i in $(echo s u b); do - echo $i > /proc/sysrq-trigger & - done - exit 0 - ;; - '-h now') - for i in $(echo s u o); do - echo $i > /proc/sysrq-trigger & - done - exit 0 - ;; - esac -fi -# else use orig shutdown -shutdown.slxorig $@ - -exit 0 - diff --git a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Base.pm b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Base.pm deleted file mode 100644 index d26cdfcc..00000000 --- a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# virtualbox/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the VirtualBox plugin. -# ----------------------------------------------------------------------------- -package virtualbox::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; - -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub installVbox -{ - my $self = shift; - - my $engine = $self->{'engine'}; - - # lets try it... we can't loose anything :) - $engine->installPackages('virtualbox-ose'); - - return; -} - -1; diff --git a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Debian.pm deleted file mode 100644 index edd117ca..00000000 --- a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# virtualbox/OpenSLX/Distro/debian.pm -# - provides Debian-specific overrides of the Distro API for the VirtualBox -# plugin. -# ----------------------------------------------------------------------------- -package virtualbox::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(virtualbox::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub installVbox -{ - my $self = shift; - - my $engine = $self->{'engine'}; - my $release = `lsb_release -rs`; - chomp($release); - - # lenny(5.0) has v1.6 - # testing is ok. but no clue which lsb_release -rs it has... - if ( $release eq "999999.0") { - #the usual "in stage1 chroot we get another kernel vers. problem" - # kernel modules need to be installed from the cloned system - #$engine->installPackages('virtualbox-ose'); - #system('/etc/init.d/virtualbox-ose setup'); - } else { - print "Couldn't install VirtualBox, no package from distribution\n"; - exit; - } - - return; -} - -1; diff --git a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 9af3191e..00000000 --- a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# virtualbox/OpenSLX/Distro/Suse.pm -# - provides SUSE specific overrides of the distro API for the VirtualBox -# plugin. -# ----------------------------------------------------------------------------- -package virtualbox::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(virtualbox::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub installVbox -{ - my $self = shift; - - my $engine = $self->{'engine'}; - # should be replaced by proper function - my $release = `lsb_release -rs`; - chomp($release); - - if ( $release eq "11.1" || $release eq "11.0" || $release eq "10.3") { - $engine->installPackages('virtualbox-ose'); - } else { - print "Couldn't install VirtualBox, no package from distribution\n"; - exit; - } - - return; -} - -1; diff --git a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 44695680..00000000 --- a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# virtualbox/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the Distro API for the virtualbox -# plugin. -# ----------------------------------------------------------------------------- -package virtualbox::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -# inherit everything from Debian (as Ubuntu is based on it anyway) -use base qw(virtualbox::OpenSLX::Distro::Debian); -use base qw(virtualbox::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - - -################################################################################ -#### interface methods -################################################################################ -sub installVbox -{ - my $self = shift; - - my $engine = $self->{'engine'}; - my $release = `lsb_release -rs`; - chomp($release); - - # hardy (8.04LTS): only version VBox v1.5 - if ( $release eq "8.10" || $release eq "9.04") { - #the usual "in stage1 chroot we get another kernel vers. problem" - # kernel modules need to be installed from the cloned system - #$engine->installPackages("virtualbox-ose"); - #system('/etc/init.d/virtualbox-ose setup'); - } else { - print "Couldn't install VirtualBox, no package from distribution!\n"; - exit; - } - - - return; -} - -1; diff --git a/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm b/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm deleted file mode 100644 index 07ec9dc0..00000000 --- a/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm +++ /dev/null @@ -1,284 +0,0 @@ -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - 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/ -# ----------------------------------------------------------------------------- -# virtualbox.pm -# - declares necessary information for the virtualbox plugin -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::virtualbox; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -sub new -{ - my $class = shift; - my $self = { - name => 'virtualbox', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Module for enabling services for the VirtualBox on an OpenSLX - stateless client. - End-of-Here - precedence => 70, - # headless mode does not require a desktop! - #required => [ qw( desktop ) ], - }; -} - -sub getAttrInfo -{ - # Returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'virtualbox::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'virtualbox'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 for active, 0 for inactive', - default => '1', - }, - # attribute 'imagesrc' defines where we can find virtualbox images - 'virtualbox::imagesrc' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Where do we store our virtualbox images? NFS? Filesystem? - End-of-Here - content_regex => qr{^(/|nfs://)}, - content_descr => 'local path or URI or "-" (unset)', - default => undef, - }, - # attribute 'bridge' defines if bridged network mode should be - # switched on - # TODO: change to net -> nat, bridge, hostonly? - # TODO: since we use def in XML maybe use to override - 'virtualbox::bridge' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Should the bridging (direct access of the virtualbox clients - to the ethernet the host is connected to) be enabled - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 or 1', - default => '1', - }, - # attribute 'mem' defines if memory should be forced - 'virtualbox::mem' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Do you want to force a ralative amount of RAM? - (Not implemented right now!) - End-of-Here - content_regex => qr{^(\d\d??)$}, - content_descr => 'Between 0 - 99', - default => undef, - }, - # attribute 'kvm' defines if KVM modules should be forced - 'virtualbox::kvm' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Do you want to force the usage of KVM modules where applicable? - (Not implemented right now!) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 or 1', - default => undef, - }, - # attribute 'tftpdir' defines TFTP dir for network boots /w NAT - 'virtualbox::tftpdir' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Do you want to define a stage 4 TFTP dir for netwoork boots when - using NAT? - Hint: Mount your TFTP ro via NFS to a local dir - End-of-Here - content_regex => qr{^(/)}, - content_descr => 'local path or "-" (unset)', - default => '/var/lib/virt/virtualbox', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - my $engine = $self->{'os-plugin-engine'}; - - # Different names of the tool (should be unified somehow!?) - if (!isInPath('VirtualBox')) { - # todo: fix this - $self->{distro}->installVbox(); - } - if (!isInPath('VirtualBox')) { - print - "VirtualBox is not installed. VirtualBox Plugin won't be installed!\n" - ; - #exit - } - - $self->_writeRunlevelScript(); - - # Copy run-virt.include and template files to the appropriate place for - # inclusion in stage4 - my $pluginName = $self->{'name'}; - my $pluginBasePath = - "$self->{openslxBasePath}/lib/plugins/$pluginName/files"; - foreach my $file ( qw( run-virt.include virtualbox.include machine.include - empty-diff.vdi.gz rwimg.vdi.gz ) ) { - copyFile("$pluginBasePath/$file", "$self->{pluginRepositoryPath}/"); - chmod 0644, "$self->{pluginRepositoryPath}/$file"; - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - #my @problems; - - #my $vmimg = $stage3Attrs->{'virtualbox::imagesrc'} || ''; - - return; -} - -# Write the runlevelscript -sub _writeRunlevelScript -{ - my $self = shift; - my $initfile = newInitFile(); - my $script = ""; - - $initfile->setName("vbox-slx"); - $initfile->setDesc("Setup environment for virtualbox. Part of OpenSLX virtualbox plugin."); - - # todo: Function need to be formated proper... not important right now - $initfile->addFunction( - 'running', - 'lsmod | grep -q "$1[^_-]"' - ); - # - $script = unshiftHereDoc(<<' End-of-Here'); - if running vboxdrv; then - if running vboxnetflt; then - echo "VirtualBox kernel modules (vboxdrv and vboxnetflt) are loaded." - else - echo "VirtualBox kernel module is loaded." - fi - #TODO: check it: ignore user check. handling our own way: - for i in /tmp/.vbox-*-ipc; do - echo "Running: " - $(VBoxManage -q list runningvms | sed -e 's/^".*"//' 2>/dev/null) - done - else - echo "VirtualBox kernel module(s) are not loaded." - fi - End-of-Here - $initfile->addFunction( - "vmstatus", - "$script" - ); - $initfile->addFunction( - 'start', - ' modprobe -qa vboxdrv vboxnetflt vboxnetadp', - ); - $initfile->addFunction( - 'stop', - ' rmmod vboxnetadp vboxnetflt vboxdrv', - ); - $initfile->addToCase( - 'start', - 'start' - ); - $initfile->addToCase( - 'stop', - 'stop' - ); - $initfile->addToCase( - 'status', - 'vmstatus' - ); - $initfile->addToCase( - 'restart', - 'stop && start' - ); - - # get distro version - my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0]; - my $runlevelscript = getInitFileForDistro($initfile, $distro); - - spitFile("$self->{'pluginRepositoryPath'}/vbox-slx", $runlevelscript); -} - -# The bridge configuration needs the bridge module to be present in early -# stage3 -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedModules; - - push @suggestedModules, qw( bridge ); - - return @suggestedModules; -} - -1; diff --git a/os-plugins/plugins/virtualbox/XX_virtualbox.sh b/os-plugins/plugins/virtualbox/XX_virtualbox.sh deleted file mode 100644 index b54b4bec..00000000 --- a/os-plugins/plugins/virtualbox/XX_virtualbox.sh +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE=/initramfs/plugin-conf/virtualbox.conf -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox -PLUGINDIR=/mnt/${OPENSLX_DEFAULT_DIR}/plugin-repo/virtualbox -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/virtualbox - -# check if the configuration file is available -if [ -e ${CONFFILE} ]; then - - # load needed variables - . ${CONFFILE} - - # Test if this plugin is activated... more or less useless with the - # new plugin system - if [ $virtualbox_active -ne 0 2>/dev/null ]; then - - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'virtualbox' os-plugin ..."; - - # load general configuration - . /etc/initramfs-setup - - # get source of virtualbox image server (get type, server and path) - if strinstr "/" "${virtualbox_imagesrc}" ; then - vbimgprot=$(uri_token ${virtualbox_imagesrc} prot) - vbimgserv=$(uri_token ${virtualbox_imagesrc} server) - vbimgpath="$(uri_token ${virtualbox_imagesrc} path)" - fi - if [ -n "${vbimgserv}" ] ; then - # directory where qemu images are expected in - mnttarget=${VIRTDIR} - # mount the virtualbox image source readonly (ro) - fsmount ${vbimgprot} ${vbimgserv} ${vbimgpath} ${mnttarget} ro - else - [ $DEBUGLEVEL -gt 1 ] && \ - error " * Incomplete information in variable ${virtualbox_imagesrc}." \ - nonfatal - fi - - # copy virtualization include files to config dir - testmkd ${PLUGINCONFDIR} - cp ${PLUGINDIR}/*.include ${PLUGINCONFDIR} - # copy ${CONFFILE} to ${PLUGINCONFDIR} just in case - cp ${CONFFILE} ${PLUGINCONFDIR} - -# # TODO: create rawdisk if requested -# # create raw disk -# for part in $(grep -qE " 44 | 45 " /etc/disk.partition); do -# case "${part}" in -# * 45 *) -# id4x=$(grep " 45 " /etc/disk.partition | grep -E " 44 | 45 " \ -# | awk '{print $1}' | cut -c -8) -# break -# ;; -# * 44 *) -# id4x=$(grep " 44 " /etc/disk.partition | grep -E " 44 | 45 " \ -# | awk '{print $1}' | cut -c -8) -# break -# ;; -# esac -# if [ -n "${id4x}" ]; then -# mount --bind /dev /mnt/dev -# chroot /mnt VBoxManage -q internalcommands createrawvmdk -filename \ -# ${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox/raw.vmdk -rawdisk ${id4x} -# chmod 777 ${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox/raw.vmdk -# umount -f /mnt/dev 2>/dev/null -# fi - - # copy and activate init file - cp ${PLUGINDIR}/vbox-slx /mnt/etc/init.d/ - chmod 755 /mnt/etc/init.d/vbox-slx - rllinker "vbox-slx" 20 2 - - mknod -m 0660 /dev/vboxdrv c 10 59 - chown root:vboxusers /dev/vboxdrv - - # finished ... - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'virtualbox' os-plugin ..." - fi -else - [ $DEBUGLEVEL -gt 0 ] \ - && echo " * Configuration of 'virtualbox' plugin failed" -fi diff --git a/os-plugins/plugins/virtualbox/files/empty-diff.vdi.gz b/os-plugins/plugins/virtualbox/files/empty-diff.vdi.gz Binary files differdeleted file mode 100644 index 24697b58..00000000 --- a/os-plugins/plugins/virtualbox/files/empty-diff.vdi.gz +++ /dev/null diff --git a/os-plugins/plugins/virtualbox/files/machine.include b/os-plugins/plugins/virtualbox/files/machine.include deleted file mode 100644 index 96acd7a2..00000000 --- a/os-plugins/plugins/virtualbox/files/machine.include +++ /dev/null @@ -1,132 +0,0 @@ -# Include file (machine template) for run-virt.include of the virtualbox plugin -cat << EOF > "${machconfig}" -<?xml version="1.0"?> -<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.9-linux"> - <Machine uuid="{${machineuuid}}" name="${vm_name}" OSType="${vmostype}"> - <ExtraData> - <ExtraDataItem name="GUI/AutoresizeGuest" value="on"/> - <ExtraDataItem name="GUI/Fullscreen" value="on"/> - <ExtraDataItem name="GUI/LastCloseAction" value="powerOff"/> - <ExtraDataItem name="GUI/MiniToolBarAlignment" value="top"/> - <ExtraDataItem name="GUI/MiniToolBarAutoHide" value="on"/> - <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/> - <ExtraDataItem name="GUI/Seamless" value="off"/> - <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/> - </ExtraData> - <Hardware version="2"> - <CPU count="${cpu_cores}"> - <HardwareVirtEx enabled="${enablevt}" exclusive="true"/> - <HardwareVirtExNestedPaging enabled="${npaging}"/> - <HardwareVirtExVPID enabled="false"/> - <PAE enabled="true"/> - </CPU> - <Memory RAMSize="${mem}"/> - <Boot> - <Order position="1" device="${boot}"/> <!-- HardDisk, DVD, Network, Floppy --> - <Order position="2" device="None"/> - <Order position="3" device="None"/> - <Order position="4" device="None"/> - </Boot> - <Display VRAMSize="24" monitorCount="1" accelerate3D="false" accelerate2DVideo="false"/> - <!-- authType="External", "Guest", "Null" --> - <RemoteDisplay enabled="false" port="${vrdpport}" authType="Null" authTimeout="5000"/> - <BIOS> - <ACPI enabled="true"/> - <IOAPIC enabled="true"/> - <Logo fadeIn="false" fadeOut="false" displayTime="0"/> - <BootMenu mode="MessageAndMenu"/> - <TimeOffset value="0"/> - <PXEDebug enabled="false"/> - </BIOS> - <USBController enabled="true" enabledEhci="true"/> - <Network> - <Adapter slot="0" enabled="true" MACAddress="${macaddr}" cable="true" speed="0" type="${vb_network_card}"> - <${network_kind}/> - </Adapter> - <Adapter slot="1" enabled="false" MACAddress="0800279312FB" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="2" enabled="false" MACAddress="080027A3A3CA" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="3" enabled="false" MACAddress="0800277356F6" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="4" enabled="false" MACAddress="080027CEA83A" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="5" enabled="false" MACAddress="0800271B8D7A" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="6" enabled="false" MACAddress="08002771BBD7" cable="true" speed="0" type="Am79C973"/> - <Adapter slot="7" enabled="false" MACAddress="080027EB6A12" cable="true" speed="0" type="Am79C973"/> - </Network> - <UART> - <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> - <Port slot="1" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> - </UART> - <LPT> - <Port slot="0" enabled="false" IOBase="0x378" IRQ="4"/> - <Port slot="1" enabled="false" IOBase="0x378" IRQ="4"/> - </LPT> - <AudioAdapter controller="AC97" driver="Alsa" enabled="${audio}"/> <!-- OSS, Alsa, Pulse (HANGS!) --> - <SharedFolders> - <SharedFolder name="${sharename}" hostPath="${sharepath}" writable="true"/> - </SharedFolders> - <Clipboard mode="Bidirectional"/> - <Guest memoryBalloonSize="0" statisticsUpdateInterval="0"/> - <!-- - <GuestProperties> - <GuestProperty name="/VirtualBox/HostGuest/SysprepExec" value="" timestamp="1268140071072779000" flags="TRANSIENT, RDONLYGUEST"/> - <GuestProperty name="/VirtualBox/HostGuest/SysprepArgs" value="" timestamp="1268140071072939000" flags="TRANSIENT, RDONLYGUEST"/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Linux" timestamp="1268140265864540000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="2.6.27.21" timestamp="1268140265894019000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/Version" value="#3 SMP Fri Feb 26 16:38:21 CET 2010" timestamp="1268140265898448000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/ServicePack" value="" timestamp="1268140265899571000" flags=""/> - <GuestProperty name="/VirtualBox/GuestAdd/Revision" value="57640" timestamp="1268140265900144000" flags=""/> - <GuestProperty name="/VirtualBox/GuestAdd/Version" value="3.1.4" timestamp="1268140265899937000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/LoggedInUsers" value="1" timestamp="1268164075148440000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/Count" value="4" timestamp="1268164075148790000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/IP" value="132.230.4.224" timestamp="1268164075149053000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Broadcast" value="132.230.4.255" timestamp="1268164075149297000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Netmask" value="255.255.255.0" timestamp="1268164075149596000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/0/Status" value="Up" timestamp="1268164075149829000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/IP" value="192.168.112.1" timestamp="1268164075150037000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/Broadcast" value="192.168.112.255" timestamp="1268164075150238000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/Netmask" value="255.255.255.0" timestamp="1268164075150439000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/1/Status" value="Up" timestamp="1268164075150635000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/2/V4/IP" value="192.168.54.1" timestamp="1268164075150835000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/2/V4/Broadcast" value="192.168.54.255" timestamp="1268164075151072000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/2/V4/Netmask" value="255.255.255.0" timestamp="1268164075151282000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/2/Status" value="Up" timestamp="1268164075151479000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/NoLoggedInUsers" value="false" timestamp="1268140276063587000" flags=""/> - <GuestProperty name="/VirtualBox/GuestAdd/Vbgl/Video/SavedMode" value="1024x768x32" timestamp="1268140287190297000" flags=""/> - <GuestProperty name="/VirtualBox/GuestAdd/HostVerLastChecked" value="3.1.4" timestamp="1268140310962236000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/3/V4/IP" value="192.168.122.1" timestamp="1268164075152293000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/3/V4/Broadcast" value="192.168.122.255" timestamp="1268164075152615000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/3/V4/Netmask" value="255.255.255.0" timestamp="1268164075152828000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/3/Status" value="Up" timestamp="1268164075153029000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/4/V4/IP" value="169.254.4.104" timestamp="1265728007966805000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/4/V4/Broadcast" value="169.254.255.255" timestamp="1265728007967184000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/4/V4/Netmask" value="255.255.0.0" timestamp="1265728007967487000" flags=""/> - <GuestProperty name="/VirtualBox/GuestInfo/Net/4/Status" value="Up" timestamp="1265728007967829000" flags=""/> - <GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="de_DE" timestamp="1268140070610343000" flags=""/> - <GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="3.1.4" timestamp="1268154582522485000" flags="TRANSIENT, RDONLYGUEST"/> - <GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="57640" timestamp="1268154582522507000" flags="TRANSIENT, RDONLYGUEST"/> - <GuestProperty name="/VirtualBox/GuestInfo/OS/LoggedInUsersList" value="vmuser" timestamp="1268164075147867000" flags=""/> - </GuestProperties> - --> - </Hardware> - <StorageControllers> - <StorageController name="IDE-Controller" type="PIIX4" PortCount="2"> - <AttachedDevice type="HardDisk" port="0" device="0"> - <Image uuid="{${imageuuid}}"/> - </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! --> - <AttachedDevice passthrough="false" type="DVD" port="0" device="1"> - <HostDrive src="${cdrom_0}"/> - </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! --> - </StorageController> - <!-- - <StorageController name="Disketten-Controller" type="I82078" PortCount="1"> - <AttachedDevice type="Floppy" port="0" device="0"/> - </StorageController> - <StorageController name="SCSI-Controller" type="LsiLogic" PortCount="16"> - <AttachedDevice type="HardDisk" port="0" device="0"> - <Image uuid="{812c82bf-bd1a-4f59-a5b6-b54ae2f6c669}"/> - </AttachedDevice> - </StorageController> - --> - </StorageControllers> - </Machine> -</VirtualBox> -EOF diff --git a/os-plugins/plugins/virtualbox/files/run-virt.include b/os-plugins/plugins/virtualbox/files/run-virt.include deleted file mode 100644 index 53120f2c..00000000 --- a/os-plugins/plugins/virtualbox/files/run-virt.include +++ /dev/null @@ -1,372 +0,0 @@ -# run-virt.include -# ----------------------------------------------------------------------------- -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# ----------------------------------------------------------------------------- -# run-virt.include -# - Include script for running the VirtualBox on an OpenSLX client via the -# run-virt.sh or run-vmgrid.sh -################################################################################ - -################################################################################ -### Include general configuration -################################################################################ -if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then - . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf -else - writelog "Problems reading config file of ${self} plugin" - exit 1 -fi - -################################################################################ -### Declaration of default variables -################################################################################ - -PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}" -PLUGINDIRVIRTUALBOX="${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}" -# create TMPDIR for all users -TMPDIR=/tmp/${self} -mkdir -m 1777 ${TMPDIR} 2>/dev/null -# dir for configs -confdir="/tmp/${self}/${USER}/${VM_ID}" -# use alternate configuration directory instead of $HOME/.VirtualBox -export VBOX_USER_HOME=${confdir} -# define dirs and files which can be removed after exit, be carefull! -RMDIRS="${snapshotdir} ${confdir} /tmp/.vbox-${USER}-ipc" -rm -rf ${RMDIRS} 2>/dev/null -machfolder="${confdir}/Machines" -# use vm_shortname for dir and config names since vm_name can be very long -machconfig="${machfolder}/${vm_shortname}/${vm_shortname}.xml" -diskfolder="${confdir}/HardDisks" -snapshotdir=${machfolder}/${vm_shortname}/Snapshots -mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null -# check if diskless var empty? -[ -z "${diskless}" ] && diskless=0 - -# configure our own rwimg, empty image which we support -if [ "${imgmode}" = "rwimg" ]; then - # what is our rwimg called? - imgname="${vm_shortname}.vdi" - vmpath=${imgpath}/${imgname} - if ! [ -e "${vmpath}" ]; then - cat ${PLUGINDIRVIRTUALBOX}/rwimg.vdi.gz | gunzip > "${vmpath}" - fi -fi - -# link to image -diskfile="${diskfolder}/${imgname}" -[ ${diskless} -eq 0 ] && ln -sf ${vmpath} ${diskfile} - -# check the file type -if echo ${imgname} | grep -qiE "vdi|vmdk|vhd" && [ ${diskless} -eq 0 ]; then - imgfmt=$(echo ${imgname##*.} | tr [a-z] [A-Z]) -elif [ ${diskless} -eq 0 ]; then - writelog "${imgname} is not a valid image format (vdi|vmdk|vhd), exiting!" - cleanexit 1 -fi - -# TODO: maybe rewrite, to reduce checks, merge it with network option, -# so we can have a "compatibility to vmware config" section -case "${vmostype}" in - winxp*|windowsxp*) - vmostype="WindowsXP" - ;; - winvista*|windowsvista*) - vmostype="WindowsVista" - ;; - windows7*) - vmostype="Windows7" - ;; - linux*|*ubuntu*|*suse*|debian*|*sci*) - if echo "${vmostype}" | grep -q "64"; then - vmostype="Linux26_64" - # check for vtflag - if [ ${vtflag} -ne 1 ]; then - writelog "You are trying to boot a 64 bit OS without a VT enabled CPU" - writelog "This is not supported, exiting!" - cleanexit 1 - fi - # check if host is only 32 bit, then use only 1 cpu (only 1 supported) - if echo "${host_arch}" | grep -qE "i.86"; then - cpu_cores=1 - fi - else - vmostype="Linux26" - fi - ;; -esac - -writelog "Directories:" -writelog "\tConfig dir:\t\t$confdir" -writelog "\tMachines dir:\t\t$machfolder" -writelog "\tMachine config:\t\t$machconfig" -[ ${diskless} -eq 0 ] && writelog "\tHardDisks dir:\t\t$diskfolder" - -################################################################################ -### Hardware checks -################################################################################ - -# remove ':' from MAC addr for vbox -macaddr=$(echo ${macaddr} | sed 's/://g') - -# machine UUID, MAC addr part of it -machineuuid="00000000-0000-0000-0000-${macaddr}" -# cosmetical, since UUID in lower case -machineuuid=$(echo ${machineuuid} | tr [A-Z] [a-z]) -# get UUID of VBox image, if not diskless -[ ${diskless} -eq 0 ] && diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} \ - | grep UUID | awk '{print $2}') -# make disk immutable -imgtype="Immutable" -# snapshot UUID is static -snapshotuuid="88bc8b6d-f248-468a-95fe-318084904f8b" -# imageuuid in machine.include, dafault snapshotuuid -imageuuid=${snapshotuuid} - -# check if rw image -# remove disk and add rwimg if set -if echo "${imgmode}" | grep -q rw; then - # lock existing? - if [ -e "${vmpath}.lock" ]; then - writelog "This rw image is already in use." - writelog "Found lock: ${vmpath}.lock, exiting!" - writelog "Remove lock if you are sure that this is not the case" - cleanexit 1 - # image rw? - elif ! [ -w ${vmpath} ]; then - writelog "You defined mode rw, but image ${vmpath} is not rw! \c" - writelog "Please correct, exiting!" - cleanexit 1 - fi - # add lock - touch "${vmpath}.lock" - # remove lock after VM stopped - RMDIRS="${RMDIRS} ${vmpath}.lock" - imgtype="Normal" - # replace image uuid in machine config - imageuuid=${diskuuid} -elif [ ${diskless} -eq 0 ]; then - # use temp disk as snapshot - cat ${PLUGINDIRVIRTUALBOX}/empty-diff.vdi.gz \ - | gunzip > "${snapshotdir}/{${snapshotuuid}}.vdi" -fi - -# TODO: MEM muss noch angepasst werden. Maschine crasht wenn nehr als 50% MEM -# memory part equal to vmware plugin -# percentage of memory to use for virtualbox in standard case -#if [ -n "${forcemem}" ]; then -# mem="${forcemem}" -#else -# permem=30 -# if [ "${totalmem}" -ge "1600" ]; then -# permem=40 -# fi -# # check if /tmp is on harddisk -# if grep -qe "/dev/.* /tmp " /proc/mounts ; then -# permem=60 -# id44="1" -# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well -# # (40% vmware | 40% confdir(vmem...) | 20% host -# # VMplayer 2+ issue -# # TODO: makes this sense for vbox? -# #if [ "${totalmem}" -ge "2500" ]; then -# #permem=40 -# #rmdir ${snapshotdir} -# #snapshotdirold=${snapshotdir} -# #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID} -# #mkdir -p ${snapshotdir} -# #ln -sf ${snapshotdir} ${snapshotdirold} -# #fi -# fi -# mem=$(expr ${totalmem} / 100 \* ${permem}) -# if [ "${id44}" = "1" ]; then -# hostmem=$(expr ${totalmem} - ${mem}) -# else -# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) -# fi -# #permem=40 -# #mem=$(expr ${totalmem} * ${permem}) -# if [ "${mem}" -lt "256" ] || [ "${hostmem}" -lt "256" ]; then -# writelog "Memory out of range: ${mem} MB (guest) / ${hostmem} MB (host)!" -# writelog "Min. 256 MB for host and guest!" -# cleanexit 1 -# fi -#fi - -# translate network cards -case "${network_card}" in - e1000) - vb_network_card="82540EM" - ;; - virtio) - vb_network_card="virtio" - ;; - *) - network_card="pcnet" - vb_network_card="Am79C973" -esac - -# translate network kinds (nat, bridged, host-only) -case "${network_kind}" in - bridge*) - network_kind='BridgedInterface name="br0"' - ;; - host*) - network_kind='HostOnlyInterface name="vboxnet0"' - ;; - *) - network_kind="NAT" -esac - -# translate boot, use if set else set to HardDisk -# usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network -# support nfs and tftp as well -case ${boot} in - n*|tftp) - boot="Network" - if [ "${network_kind}" = "NAT" ] && [ -n "${virtualbox_tftpdir}" ]; then - # use vm_shortname to avoid Problems /w TFTP in NAT - vm_name=${vm_shortname} - # link TFTP dir for NAT TFTP boots - mkdir -p ${confdir}/TFTP - if [ -e ${virtualbox_tftpdir}/pxelinux.0 ]; then - cp ${virtualbox_tftpdir}/pxelinux.0 ${confdir}/TFTP/${vm_name}.pxe - else - writelog "${virtualbox_tftpdir}/pxelinux.0 not found!" - writelog "Network boot won't work, exiting!" - cleanexit 1 - fi - for i in $(ls ${virtualbox_tftpdir}); do - ln -sf ${virtualbox_tftpdir}/${i} ${confdir}/TFTP/${i} - done - fi - ;; - # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM - *) - boot="HardDisk" - ;; -esac - -# nested paging -npaging="false" -# enable VT -enablevt="false" -# check for VT, if not available use only 1 cpu (only 1 supported) -[ ${vtflag} -eq 0 ] && cpu_cores=1 -[ ${vtflag} -eq 1 ] && enablevt="true" - -# external GUI -vrdpport=${remotedesktopport} - -[ ${diskless} -eq 0 ] && writelog "\tSnapshots dir:\t\t$snapshotdir" -writelog "Diskimage:" -[ ${diskless} -eq 0 ] && writelog "\tDisk file:\t\t$diskfile" -[ ${diskless} -eq 0 ] && writelog "\tDisk format:\t\t$imgfmt" -[ ${diskless} -eq 0 ] && writelog "\tDisk type:\t\t$imgtype" - writelog "\tVMostype:\t\t$vmostype" - writelog "\tMachine UUID:\t\t$machineuuid" -[ ${diskless} -eq 0 ] && writelog "\tDisk UUID:\t\t$diskuuid" -writelog "Virtual Hardware:" -writelog "\tCPU cores:\t\t${cpu_cores}\c" -[ ${vtflag} -eq 0 ] && writelog "" -[ ${vtflag} -eq 1 ] && writelog " (VT enabled CPU)" -writelog "\tGuest RAM:\t\t${mem} MB" -# echo nur wenn hostmem gesetzt -[ -n "${hostmem}" ] && writelog "\tHost RAM:\t\t${hostmem} MB" -writelog "\tMAC address:\t\t$macaddr" -writelog "\tNetwork card:\t\t${vb_network_card}" -writelog "\tNetwork kind:\t\t${network_kind}" -writelog "\tBooting from:\t\t${boot}\c" -[ ${diskless} -eq 0 ] && writelog "" -[ ${diskless} -eq 1 ] && writelog " 'diskless'" -# TODO: server start activate via xml, etc... -#writelog "\tGuest VRDP port:\t${vrdpport}" -writelog "\tCD-ROM1:\t\t${cdrom0}" -#writelog "\tCD-ROM2:\t\t${cdrom1}" -#writelog "\tFloppy_A:\t\t${floppy0}" -#writelog "\tFloppy_B:\t\t${floppy1}" -# defined in run-virt.sh and run-vmgrid.sh -writelog "\tShared Folders '${sharename}':\t${sharepath}" - -################################################################################ -### Pepare and configure virtual machine and disk image -################################################################################ - -# create Virtualbox.xml -. ${PLUGINCONFVIRTUALBOX}/virtualbox.include - -# remove snapshot disk when using rw images -if [ "${imgtype}" != "Immutable" ]; then - sed -i "/${snapshotuuid}/d" "${confdir}/VirtualBox.xml" -fi - -# TODO: add rawdisk if requested -#"raw.vmdk" format="VMDK" type="Writethrough"/> - -# create machine.xml -. ${PLUGINCONFVIRTUALBOX}/machine.include - -# remove CD-ROM -if [ "${cdrom0}" != "TRUE" ]; then - sed -i "/HostDrive/d" ${machconfig} - sed -i '/AttachedDevice.*type="DVD"/d' ${machconfig} - sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! -->/d" ${machconfig} -fi - -# if diskless remove all disks -if [ ${diskless} -eq 1 ]; then - sed -i "/<HardDisk/d;/<\/HardDisk/d" "${confdir}/VirtualBox.xml" - sed -i "/${imageuuid}/d" ${machconfig} - sed -i '/AttachedDevice type="HardDisk"/d' ${machconfig} - sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! -->/d" ${machconfig} -fi - -# define redirects -if [ ${redirects} -ge 1 ]; then - (( i=1 )) - writelog "\tGuest redirects:\t\c" - while [ ${i} -le ${redirects} ]; do - extradataitem='<ExtraDataItem name="VBoxInternal/Devices' - extradataitem="${extradataitem}/${network_card}/0/LUN#0/Config" - extradataitem="${extradataitem}/${redirect_name[$i]}/" - extradataprotocol="Protocol\" value=\"${redirect_proto[$i]}\"/>" - extradatahostport="HostPort\" value=\"${redirect_hport[$i]}\"/>" - extradataguestport="GuestPort\" value=\"${redirect_gport[$i]}\"/>" - sed -i "s,</ExtraData>, ${extradataitem}${extradataguestport}\n\ - ${extradataitem}${extradatahostport}\n\ - ${extradataitem}${extradataprotocol}\n\ - </ExtraData>," "${machconfig}" - writelog "${tabspace}${redirect_name[$i]} port: ${redirect_hport[$i]}" - tabspace='\t\t\t\t' - (( i=$i+1 )) - done -fi - -################################################################################ -### finally set env for run-virt.sh -################################################################################ - -# wait for a certain command to settle -# get the PID of the right process -# kill PID, seems to work -VBMANPID=$(pstree -p | grep VBoxXPCOMIPCD | grep -ivE "VirtualBox|VBoxHeadless"\ - | sed -e "s/.*VBoxXPCOMIPCD(\(.*\)).*/\1/") -for i in $(echo ${VBMANPID}); do - kill -9 ${VBMANPID} >/dev/null 2>&1 -done - -# set the variables appropriately (several interfaces with different names) -VIRTCMD=$(which VirtualBox 2>/dev/null) -VIRTCMDOPTS="--startvm ${machineuuid} --start-running" - -# set headless mode (-v off to disable vrdp) -VIRTCMDHL=$(which VBoxHeadless 2>/dev/null) -VIRTCMDOPTSHL="-s ${machineuuid}" diff --git a/os-plugins/plugins/virtualbox/files/rwimg.vdi.gz b/os-plugins/plugins/virtualbox/files/rwimg.vdi.gz Binary files differdeleted file mode 100644 index e2133d6d..00000000 --- a/os-plugins/plugins/virtualbox/files/rwimg.vdi.gz +++ /dev/null diff --git a/os-plugins/plugins/virtualbox/files/virtualbox.include b/os-plugins/plugins/virtualbox/files/virtualbox.include deleted file mode 100644 index 9576fc9c..00000000 --- a/os-plugins/plugins/virtualbox/files/virtualbox.include +++ /dev/null @@ -1,47 +0,0 @@ -# Include file (general template) for run-virt.include of the virtualbox plugin -cat << EOF > "${confdir}/VirtualBox.xml" -<?xml version="1.0"?> -<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.9-linux"> <!-- 1.7-linux --> - <Global> - <ExtraData> - <ExtraDataItem name="GUI/Input/AutoCapture" value="true"/> - <ExtraDataItem name="GUI/Input/HostKey" value="65300"/> <!-- scroll lock / Rollen --> - <ExtraDataItem name="GUI/LastVMSelected" value="${machineuuid}"/> - <ExtraDataItem name="GUI/LicenseAgreed" value="1,2,3,4,5,6,7,8,9"/> - <ExtraDataItem name="GUI/MaxGuestResolution" value="any"/> <!-- auto, width,height --> - <ExtraDataItem name="GUI/SUNOnlineData" value="triesLeft=0"/> - <ExtraDataItem name="GUI/SuppressMessages" value=",remindAboutAutoCapture,confirmInputCapture,remindAboutWrongColorDepth,confirmGoingFullscreen,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,showRuntimeError.warning.DevATA_DISKFULL,remindAboutPausedVMInput,confirmVMReset,showRuntimeError.warning.HostAudioNotResponding"/> - <ExtraDataItem name="GUI/TrayIcon/Enabled" value="false"/> - <ExtraDataItem name="GUI/UpdateCheckCount" value="2"/> - <ExtraDataItem name="GUI/UpdateDate" value="never"/> - </ExtraData> - <MachineRegistry> - <MachineEntry uuid="{${machineuuid}}" src="Machines/${vm_shortname}/${vm_shortname}.xml"/> - </MachineRegistry> - <MediaRegistry> - <HardDisks> - <HardDisk uuid="{${diskuuid}}" location="${diskfile}" format="${imgfmt}" type="${imgtype}"> - <HardDisk uuid="{${snapshotuuid}}" location="${snapshotdir}/{${snapshotuuid}}.vdi" format="VDI" autoReset="true"/> - </HardDisk> - </HardDisks> - <!-- - <DVDImages> - <Image uuid="{dcd1e32a-729f-4faa-b319-67adca15e4a4}" location="/.../gpxe-1.0.0+-virtio-net.iso"/> - <Image uuid="{b71450c6-b8ff-43c1-a290-2a793b3023d8}" location="/.../gpxe-1.0.0+-e1000.iso"/> - </DVDImages> - --> - <FloppyImages/> - </MediaRegistry> - <NetserviceRegistry> - <DHCPServers> - <DHCPServer networkName="HostInterfaceNetworking-vboxnet0" IPAddress="192.168.56.100" networkMask="255.255.255.0" lowerIP="192.168.56.101" upperIP="192.168.56.254" enabled="1"/> - <!-- - <DHCPServer networkName="HostInterfaceNetworking-vboxnet1" IPAddress="0.0.0.0" networkMask="0.0.0.0" lowerIP="0.0.0.0" upperIP="0.0.0.0" enabled="0"/> - --> - </DHCPServers> - </NetserviceRegistry> - <SystemProperties defaultMachineFolder="${machfolder}" defaultHardDiskFolder="${diskfolder}" defaultHardDiskFormat="VDI" remoteDisplayAuthLibrary="VRDPAuth" webServiceAuthLibrary="VRDPAuth" LogHistoryCount="3"/> - <USBDeviceFilters/> - </Global> -</VirtualBox> -EOF diff --git a/os-plugins/plugins/virtualbox/init-hooks/20-nw-bridge-config/bridge.sh b/os-plugins/plugins/virtualbox/init-hooks/20-nw-bridge-config/bridge.sh deleted file mode 100644 index a6d335c5..00000000 --- a/os-plugins/plugins/virtualbox/init-hooks/20-nw-bridge-config/bridge.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 - 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical to the files of virtualbox and qemukvm plugins) -############################################################################# - -local bridge=br0 -local brnwif=${nwif} -local nwifmac=${macaddr} - -# bridge 0 already defined or some other problem -brctl addbr ${bridge} || exit 0 -brctl stp ${bridge} 0 -brctl setfd ${bridge} 0.000000000001 -ip link set addr ${nwifmac} ${bridge} -ip link set dev ${nwif} up -brctl addif ${bridge} ${nwif} - -# fixme: sending back the variable to init does not work properly at the -# moment -nwif=${bridge} diff --git a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm deleted file mode 100644 index 43e4ea1f..00000000 --- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmchooser/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the vmchooser plugin. -# ----------------------------------------------------------------------------- -package vmchooser::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - - -sub copyDefaultSession -{ - my $self = shift; - my $pluginroot = shift; - - - # Take the default path of SuSE - # (as we have the most experience with it) - if( -f "/etc/X11/session/default.desktop") { - rename("/etc/X11/session/default.desktop", - "/etc/X11/session/default.desktop.back") - } - copyFile("$pluginroot/default.desktop","/etc/X11/session"); - - return 1; -}
\ No newline at end of file diff --git a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 173f249e..00000000 --- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmchooser/OpenSLX/Distro/Debian.pm -# - provides Debian implementation of the Distro API for the vmchooser plugin. -# ----------------------------------------------------------------------------- -package vmchooser::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use base qw(vmchooser::OpenSLX::Distro::Base); - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub copyDefaultSession -{ - my $self = shift; - my $pluginroot = shift; - - - # Take the default path of SuSE - # (as we have the most experience with it) - if( -f "/usr/share/xsessions/default.desktop") { - rename("/usr/share/xsessions/default.desktop", - "/usr/share/xsessions/default.desktop.back") - } - copyFile("$pluginroot/default.desktop","/usr/share/xsessions"); - - return 1; -}
\ No newline at end of file diff --git a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm deleted file mode 100644 index c93a066b..00000000 --- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# vmchooser/OpenSLX/Distro/Suse.pm -# - provides Suse implementation of the Distro API for the vmchooser plugin. -# ----------------------------------------------------------------------------- -package vmchooser::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use base qw(vmchooser::OpenSLX::Distro::Base); - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub copyDefaultSession -{ - my $self = shift; - my $pluginroot = shift; - - # Take the default path of SuSE - # (as we have the most experience with it) - if( -f "/etc/X11/session/default.desktop") { - rename("/etc/X11/session/default.desktop", - "/etc/X11/session/default.desktop.back") - } - copyFile("$pluginroot/default.desktop","/etc/X11/session"); - return 1; -}
\ No newline at end of file diff --git a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 1677321f..00000000 --- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmchooser/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu implementation of the Distro API for the vmchooser plugin. -# ----------------------------------------------------------------------------- -package vmchooser::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use base qw(vmchooser::OpenSLX::Distro::Base); - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - -sub copyDefaultSession -{ - my $self = shift; - my $pluginroot = shift; - - - # Take the default path of SuSE - # (as we have the most experience with it) - if( -f "/usr/share/xsessions/default.desktop") { - rename("/usr/share/xsessions/default.desktop", - "/usr/share/xsessions/default.desktop.back") - } - copyFile("$pluginroot/default.desktop","/usr/share/xsessions"); - - return 1; -}
\ No newline at end of file diff --git a/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm b/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm deleted file mode 100644 index 71ce3637..00000000 --- a/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright (c) 2008, 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/ -# ----------------------------------------------------------------------------- -# vmchooser.pm -# - allows user to pick from a list of virtual machine images -# -# - serves as base for virtualizer plugins / and requires one of these -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::vmchooser; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'vmchooser', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - allows user to pick from a list of different virtual machine images - based on xml-files, which tell about available images. One of the - virtualization tools like vmware*, virtualbox or qemu/kvm is - required. - End-of-Here - precedence => 50, - required => [ qw( desktop ) ], - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'vmchooser::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'vmchooser'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'vmchooser::env' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - environment, seperates pools based on XML configuration - End-of-Here - #TODO: - #content_regex => qr{^(0|1)$}, - content_descr => 'name of environment', - default => 'default', - }, - 'vmchooser::xmlpath' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - location of XML configuration for virtual images - End-of-Here - #TODO: - #content_regex => qr{^(0|1)$}, - content_descr => 'path to xml files', - default => '/var/lib/virt', - }, - - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - - # copy all needed files now: - my $pluginName = $self->{'name'}; - my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName/files"; - foreach my $file ( qw( vmchooser printer.sh scanner.sh xmlfilter.sh - default.desktop mesgdisp run-virt.sh ) ) { - copyFile("$pluginBasePath/$file", "$pluginRepoPath/"); - chmod 0755, "$pluginRepoPath/$file"; - } - - # set ditro-specific default session - $self->{distro}->copyDefaultSession($pluginRepoPath); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - my $pluginRepoPath = "$openslxConfig{'base-path'}/lib/plugins/vmchooser"; - - $makeInitRamFSEngine->addCMD( - "cp -a $pluginRepoPath/files/mkdosfs $targetPath/bin" - ); - - vlog(1, _tr("vmchooser-plugin: ...")); - - return; -} - -1; - diff --git a/os-plugins/plugins/vmchooser/README b/os-plugins/plugins/vmchooser/README deleted file mode 100644 index 29434bcc..00000000 --- a/os-plugins/plugins/vmchooser/README +++ /dev/null @@ -1,21 +0,0 @@ - -VirtualMachine Chooser - plugin -=============================== - -This Plugin uses an additionally provided program to display a list of virtual -machine sessions (vm's provided by other plugins), from which a user can choose. - -This Programm is included in binary format. You can look into the sources at -svn://svn.openslx.org/srv/svn/openslx/openslx-src-tools/os-plugins/plugins/vmchooser/ - -There you can change the program to your needs and compile it with the included -Makefile. - -Additionally the plugin provides a script to start a specific virtual machine -preconfigured. Parts of the configuration are taken from an xml file which -should be provided with each container file. You will find additional infor- -mation online at: http://lab.openslx.org/wiki/openslx/Vmchooser - -Use at your own risk! No warranty is given by the author of this software for -any purposes! - diff --git a/os-plugins/plugins/vmchooser/XX_vmchooser.sh b/os-plugins/plugins/vmchooser/XX_vmchooser.sh deleted file mode 100644 index 168bcda1..00000000 --- a/os-plugins/plugins/vmchooser/XX_vmchooser.sh +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2008, 2009 - RZ Uni Freiburg -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE="/initramfs/plugin-conf/vmchooser.conf" -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser -BINDIR=/mnt/${OPENSLX_DEFAULT_BINDIR} -PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/vmchooser -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR} - -if [ -e $CONFFILE ]; then - . $CONFFILE - if [ $vmchooser_active -ne 0 ] ; then - [ $DEBUGLEVEL -gt 0 ] \ - && echo "vmchooser: copying stage3 configuration file ..." - testmkd ${PLUGINCONFDIR}/loopimg - testmkd ${PLUGINCONFDIR}/fd-loop 1777 - cp $CONFFILE ${PLUGINCONFDIR}/vmchooser.conf - ln -s ${PLUGINDIR}/run-virt.sh ${BINDIR}/run-virt.sh - ln -s ${PLUGINDIR}/vmchooser ${BINDIR}/vmchooser - - # setup all generic virtualization / starting stuff like the floppy image - # loop file for exchanging information between linux and vm guest - if modprobe ${MODPRV} loop; then - mdev -s - else - : #|| error "" nonfatal - fi - # mount a clean tempfs (bug in UnionFS prevents loopmount to work) - grep -qE "unionfs |aufs " /proc/mounts && \ - mount -n -o size=1500k -t tmpfs vm-loopimg ${PLUGINCONFDIR}/loopimg - # create an empty floppy image of 1.4MByte size - dd if=/dev/zero of=${PLUGINCONFDIR}/loopimg/fd.img count=2880 bs=512 \ - 2>/dev/null - chmod 0777 ${PLUGINCONFDIR}/loopimg/fd.img - # use dos formatter copied into stage3 - mkdosfs ${PLUGINCONFDIR}/loopimg/fd.img >/dev/null 2>&1 #|| error - mount -n -t msdos -o loop,umask=000 ${PLUGINCONFDIR}/loopimg/fd.img \ - ${PLUGINCONFDIR}/fd-loop - - # finished ... - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmchooser' os-plugin ..." - fi -fi diff --git a/os-plugins/plugins/vmchooser/files/default.desktop b/os-plugins/plugins/vmchooser/files/default.desktop deleted file mode 100644 index 91540228..00000000 --- a/os-plugins/plugins/vmchooser/files/default.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=virtual machine chooser (default) -Name[de]=Virtuelle Maschine auswählen -Comment=This session starts the vm session chooser -Comment[de]=Diese Sitzung startet das Auswahlmenü für die vorhandenen Sitzungen -Exec=/opt/openslx/plugin-repo/vmchooser/vmchooser -TryExec=/opt/openslx/plugin-repo/vmchooser/vmchooser -Icon= -Type=Application diff --git a/os-plugins/plugins/vmchooser/files/mesgdisp b/os-plugins/plugins/vmchooser/files/mesgdisp Binary files differdeleted file mode 100755 index 41e3721c..00000000 --- a/os-plugins/plugins/vmchooser/files/mesgdisp +++ /dev/null diff --git a/os-plugins/plugins/vmchooser/files/mkdosfs b/os-plugins/plugins/vmchooser/files/mkdosfs deleted file mode 120000 index c3fa8102..00000000 --- a/os-plugins/plugins/vmchooser/files/mkdosfs +++ /dev/null @@ -1 +0,0 @@ -busybox
\ No newline at end of file diff --git a/os-plugins/plugins/vmchooser/files/printer.sh b/os-plugins/plugins/vmchooser/files/printer.sh deleted file mode 100755 index 8f1d5ffa..00000000 --- a/os-plugins/plugins/vmchooser/files/printer.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -#echo "<printer name=\"info\" path=\"//printserver/info\"> some pseudo printer </printer>" - -for(( i=0; $i<10; i=$i+1)); do - echo -e "printserver$i\tprinter$i\tPrinter Description $i" -done - -echo -e "printserver.ruf.uni-freiburg.de\treal-printer-name\tSome really long printer Description" - diff --git a/os-plugins/plugins/vmchooser/files/run-virt.sh b/os-plugins/plugins/vmchooser/files/run-virt.sh deleted file mode 100644 index 23f026c7..00000000 --- a/os-plugins/plugins/vmchooser/files/run-virt.sh +++ /dev/null @@ -1,402 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2007..2010 - RZ Uni FR -# Copyright (c) 2007..2010 - 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/ -# ----------------------------------------------------------------------------- -# run-virt.sh -# - This is the generic wrapper for the several virtualization solutions. -# The idea is to setup a set of variables used by at least two different -# tools and then include the specific plugin which configures the speci- -# fied virtualization tool. -################################################################################ - -. /etc/opt/openslx/openslx.conf - -################################################################################ -### Define default dirs / get configs -################################################################################ - -PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins -PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser -# include general configuration from vmchooser -[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \ - . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf -# load general virtualization information -[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \ - . ${PLUGINCONFROOT}/virtualization/virtualization.conf - -################################################################################ -### Functions used throughout the script -################################################################################ - -# function to write to stdout and logfile -LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-virt.${USER}.$$.log -writelog () { - # write to stdout - echo -e "$1" - # log into file - echo -e "$1" >> ${LOGFILE} -} - -# remove config dirs when exit -cleanexit () { - if echo "${RMDIRS}" 2>/dev/null | grep -q ${xmlvirt}; then - writelog "${xmlvirt} exited. Cleanning up... \c" - rm -rf ${RMDIRS} >/dev/null 2>&1 - writelog "done" - fi - - exit "$1" -} - -# Check for important files used -filecheck () -{ - filecheck=$(LANG=us ls -lh ${diskfile} 2>&1) - writelog "Filecheck:\n${filecheck}\n" - noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l) - rightsfile=${diskfile} - - # Check if link - if [ -L "${diskfile}" ]; then - # take link target - rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F '-> *' '{print $2}') - rightsfile=${vmdir}/${rightsfile} - filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1) - fi - - # Does file exist - if [ "${noimage}" -ge "1" ]; then - writelog "Virtual Machine Image Problem:\c " - writelog "\tThe image you've specified doesn't exist." - writelog "Filecheck says:\c " - writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory" - writelog "Hint:\c " - writelog "\t\t\tCompare spelling of the image with your options.\n" - exit 1 - fi - - # Readable by calling user - if ! [ -r "${diskfile}" >/dev/null 2>&1 \ - -o -r "${diskfile}" >/dev/null 2>&1 ]; then - writelog "Vmware Image Problem:\c " - writelog "\tThe image you've specified has wrong rights." - writelog "Filecheck says:\t\t$(echo ${filecheck} \ - | awk '{print $1" "$3" "$4}') ${rightsfile}" - writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" - exit 1 - fi - - # Writable (for persistent-mode)? - if ! [ -w "${diskfile}" >/dev/null 2>&1 \ - -o -w "${diskfile}" >/dev/null 2>&1 ] \ - && [ "${np}" = "independent-persistent" ]; then - writelog "Vmware Image Problem:\c " - writelog "\tThe image you have specified has wrong rights." - writelog "Filecheck says:\t\t$(echo ${filecheck} \ - | awk '{print $1" "$3" "$4}') ${rightsfile}" - writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n" - exit 1 - fi -} - -################################################################################ -### Get XML file and dir -################################################################################ - -# absolute or relative path? -xmlfile=$1 -if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then - xmlpath=$(dirname ${xmlfile}) - xmlfile=$(basename ${xmlfile}) -else - xmlpath=${vmchooser_xmlpath} -fi -# full path -xmlfile="${xmlpath}/${xmlfile%.xml}.xml" - -################################################################################ -### Sanity checks -################################################################################ - -# test if the xml file is valid -if ! [ -r "${xmlfile}" ]; then - writelog "${xmlfile} not a readable XML file!" - exit 1 -fi - -# test if XML file -if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then - writelog \ - "Submitted configuration file ${xmlfile} seems to have wrong XML format" - exit 1 -fi - -# Theck for running in graphical environment otherwise no much use here -[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \ - && exit 1 - -################################################################################ -### Logo for console -################################################################################ - -cat <<EOL - __ __ - .----.--.--.-----.___.--.--.|__|.----.| |_ - | _| | | |___| | || || _|| _| - |__| |_____|__|__| \___/ |__||__| |____| - OpenSLX virtual machine environment preparation script ... - -EOL - -################################################################################ -### Read needed variables from XML file -################################################################################ - -writelog "Starting configuration..." -writelog "\tLogfile:\t\t${LOGFILE}" -writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c" -writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')" -writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})" -writelog "\tXML file:\t\t${xmlfile}" -writelog "VM config:" - -# name of the virt image -imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') - -# imagename /w full path -if echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then - imgpath=$(dirname ${imgname}) - imgname=$(basename ${imgname}) - vmpath=${imgpath}/${imgname} -# if old vmchooser binary stuff -# we do not need folder name as it is already included by vmchooser -elif echo ${xmlfile} 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then - vmpath=$imgname - imgname=$(basename ${imgname}) -# else use same path as xml -else - imgpath=${xmlpath} - vmpath=${imgpath}/${imgname} -fi - -# check if virtual machine container file exists -if ! [ -e "${vmpath}" ]; then - writelog "Virtual machine image ${vmpath} not found!" - exit 1 -fi - -# name of the virt machine, sed because of Windows formatting -vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') -# if ${vm_name} not defined use ${xmlfile} -vm_name=${vm_name:-${xmlfile%.xml}} - -# define vm_shortname since vm_name can be very long -vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g") - -# vm_name = displayname, define for old scripts -displayname=${vm_name} - -# image is for the following virtual machine -xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') - -# make a guess from the filename extension if ${xmlvirt} is empty -# (not set within the XML file) -# TODO: implement possibility to submit own configuration files -if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then - writelog "No virtual machine parameter defined in ${xmlfile}" - writelog "Trying to guess VM...\c" - case "$(cat ${additional_config} | tr [A-Z] [a-z])" in - *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*) - xmlvirt="vmware" - ;; - *innotek*|*virtualbox*) - xmlvirt="virtualbox" - ;; - *qemu*|*kvm*) - xmlvirt="qemukvm" - ;; - *) - xmlvirt="none" - ;; - esac -elif [ -z "${xmlvirt}" ]; then - case "$(echo ${imgname##*.} | tr [A-Z] [a-z])" in - vmdk) - xmlvirt="vmware" - ;; - vbox) - xmlvirt="virtualbox" - ;; - img|qcow*) - xmlvirt="qemukvm" - ;; - *) - xmlvirt="none" - ;; - esac - writelog "result:\t${xmlvirt}" -fi - -# definition of the client system -vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' \ - | tr [A-Z] [a-z]) - -# definition of the networking the client system is connected to -network_kind=$(grep -io '<network param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }' | tr [A-Z] [a-z]) -network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }'| tr [A-Z] [a-z]) - -# set redirects to 0, see vmgrid if you want to define some -redirects=0 - -# Serial/parallel ports defined (e.g. "ttyS0" or "autodetect") -serial=$(grep -io '<serialport param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }') -parallel=$(grep -io '<parport param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }') - -writelog "\tVirtualization:\t\t$xmlvirt" -writelog "\tVM name:\t\t$vm_name" -writelog "\tVM short name:\t\t$vm_shortname" - -############################################################################### -### Declaration of default variables -############################################################################### - -# VM-ID static (00) -VM_ID="00" - -# make sure cpu_cores is not empty -cpu_cores=${cpu_cores:-"1"} - -# total amount of memory defined in stage 3 -permem=50 -# get a result which can be divided through 4 -mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) -if [ -n "${mainvirtmem}" ]; then - forcemem=$(expr ${mainvirtmem} / 4 \* 4) - mem=${forcemem} -fi -hostmem=$(expr ${totalmem} - ${mem}) - -# configuring ethernet mac address: first 3 bytes are fixed (00:50:56) -# 4th byte is the VM-ID (0D) -# last two bytes are taken from the bridge of the host -# define one MAC per guest -macguestpart="00:50:56:${VM_ID}" -machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}') -macaddr=$(echo "${macguestpart}:${machostpart}" | tr [a-z] [A-Z]) - -# virtual fd/cd/dvd and drive devices, floppy b: for configuration -# if $floppy_0 from run-virt.include set then fdtest="TRUE" -fdtest= -fdtest=${floppy_0:+"TRUE"} -# if $fdtest not set floppy0="FALSE", else "TRUE" -floppy0=${fdtest:-"FALSE"} -floppy1="TRUE" -floppy1name="${PLUGINCONFDIR}/loopimg/fd.img" -# if $cdrom_0 from run-virt.include set then cdtest="TRUE" -cdtest= -cdtest=${cdrom_0:+"TRUE"} -# if $cdtest not set cdrom0="FALSE", else "TRUE" -cdrom0=${cdtest:-"FALSE"} -# if $cdrom_1 from run-virt.include set then cdtest="TRUE" -cdtest= -cdtest=${cdrom_1:+"TRUE"} -# if $cdtest not set cdrom1="FALSE", else "TRUE" -cdrom1=${cdtest:-"FALSE"} -# ide is expected default, test for the virtual disk image type should -# be done while creating the runscripts ... -ide="TRUE" -scsi="FALSE" -hddrv="ide" -audio="true" -remotedesktopport="590${VM_ID}" - -# Display resolution within the host system -hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$") -xres=$(echo "${hostres}" | awk '{print $3}') -yres=$(echo "${hostres}" | awk '{print $7}') - -# enable 3D -enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/dev/null | \ - awk -F '=' {'print $2'}) - -# add rw share -sharepath="${HOME}" -sharename="home" - -# set hostname: using original hostname and adding string -hostname="virt-$(hostname)" - -writelog "\tVM Hostname:\t\t$hostname" - -################################################################################ -### Setup the rest of the environment and run the configured vm -################################################################################ - -# Adjust sound volume -writelog "Unmuting sound...\c " -amixer -q sset Master 80% unmute 2>/dev/null -amixer -q sset PCM 80% unmute 2>/dev/null -amixer -q sset CD 80% unmute 2>/dev/null -amixer -q sset Headphone 80% unmute 2>/dev/null -amixer -q sset Front 80% umute 2>/dev/null # in SUSE 11.0 it's headphone -amixer -q sset Speaker 0 mute 2>/dev/null # annoying built-in speaker -writelog "finished\n" - -# Copy guest configuration (with added information) config.xml to be accessed -# via virtual floppy -# fixme -> to be changed (vmchooser adapts the file content!?) -#TODO: wozu echo? -#echo "Please fix the config.xml generation" -cp ${xmlfile} ${PLUGINCONFDIR}/fd-loop/config.xml - -# Check if virtual machine container file exists -#filecheck - -# Get all virtual machine specific stuff from the respective include file -if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then - self=${xmlvirt} - . ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include - # start a windowmanager for easier handling - # (expect problems /w windows opening in background /w vmware without wm) - for dm in xfwm4 metacity openbox blackbox kwin fvwm2 ; do - if which $dm >/dev/null 2>&1 ; then - if [ "$dm" = "fvwm2" ] ; then - echo "EdgeScroll 0 0" > ${redodir}/fvwm - fvwm2 -f ${redodir}/fvwm >/dev/null 2>&1 & - else - $dm >/dev/null 2>&1 & - fi - break - fi - done - ${VIRTCMD} ${VIRTCMDOPTS} - writelog "Bye." - cleanexit 0 -else - writelog "Failed because of missing ${xmlvirt} plugin." - cleanexit 1 -fi - -# postrun for scripts after virtualization finishes -if [ -n "${POSTRUN}" ]; then - eval ${POSTRUN} >/dev/null 2>&1 -fi - -cleanexit 0 -exit 0 diff --git a/os-plugins/plugins/vmchooser/files/scanner.sh b/os-plugins/plugins/vmchooser/files/scanner.sh deleted file mode 100755 index dcb94c68..00000000 --- a/os-plugins/plugins/vmchooser/files/scanner.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - - -echo -e "scanserver\tscanner1hp\tThis is a test Scanner" diff --git a/os-plugins/plugins/vmchooser/files/vm-template.xml b/os-plugins/plugins/vmchooser/files/vm-template.xml deleted file mode 100755 index f6b59fea..00000000 --- a/os-plugins/plugins/vmchooser/files/vm-template.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<settings>
- <entry>
- <!-- "vmware", "virtualbox", "qemu" -->
- <virtualmachine param="vmware"/>
- <!-- VM-name with ending .vmdk, .img, .vdi, .qcow2 -->
- <image_name param="vm-image.vmdk"/>
- <!-- sort after parameters then alphabet, values 0(top) - 9(bottom) -->
- <priority param="5"/>
- <!-- title shown in the menu -->
- <title param="My VM Image"/>
- <!-- description shown when image is chosen -->
- <description>Image for lectures with a lot of software: office, ...
- </description>
- <!-- if active="true" the image is selectable via vmchooser -->
- <active param="true"/>
- <!-- in which environment this image will be selectable via vmchooser -->
- <environment param="default"/>
- <!-- image locked with a password? -->
- <locked param="false"/>
- <creator param="Your Name"/>
- <email param="your@e-mail.add"/>
- <phone param="0123-12345678"/>
- <!-- when should this image be deactivated automatically -->
- <valid_until param="DD-MM-YY"/>
- <!-- type of the OS: if you do not know use "other" -->
- <!-- vmware refer to: http://sanbarrow.com/vmx/vmx-guestos.html -->
- <os param="winxppro"/>
- <!-- "nat", "bridge", "hostonly" -->
- <network param="nat"/>
- <!-- use a different virtual network card than default -->
- <netcard param="e1000"/>
- <!-- activate serial port: "ttyS0", "auto" (recommended) -->
- <serialport param="false"/>
- <!-- activate parallel port: "parport0" (recommended) -->
- <parport param="false"/>
- <!-- enable 3D support -->
- <enable3d param="true"/>
- <!-- which shared folders should be connected -->
- <shared_folders param="true">
- <!-- name="Home" path="/home/$USER" for internal VMware sf -->
- <shared_folder name="" path="" pass=""></shared_folder>
- </shared_folders>
- <!-- which printers should be connected -->
- <printers>
- <printer name="" path="">Human readable description</printer>
- </printers>
- <!-- which scanners should be connected -->
- <scanners>
- <scanner name="" path="">Description</scanner>
- </scanners>
- <!-- added automatically through vmchooser when started
- <username param="user-id"/>
- -->
- <!-- obsolete, maybe for future implementations
- <xdm param="false">
- </xdm>
- -->
- </entry>
-</settings>
diff --git a/os-plugins/plugins/vmchooser/files/vmchooser b/os-plugins/plugins/vmchooser/files/vmchooser Binary files differdeleted file mode 100644 index fc12e0fe..00000000 --- a/os-plugins/plugins/vmchooser/files/vmchooser +++ /dev/null diff --git a/os-plugins/plugins/vmchooser/files/xmlfilter.sh b/os-plugins/plugins/vmchooser/files/xmlfilter.sh deleted file mode 100755 index 5196992c..00000000 --- a/os-plugins/plugins/vmchooser/files/xmlfilter.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2007..2009 - RZ Uni FR -# Copyright (c) 2007..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/ -# ----------------------------------------------------------------------------- -# xmlfilter.sh -# - This script is invoked by the vmchooser tool. It simply filters xml- -# files (taking the path to these files in $1). You might modify it in any -# way to match your needs, e.g. ask some database instead. You can re- -# implement it in any other programming language too. You simply have to -# return a list of proper xml files to be interpreted by the vmchooser -# binary). Please check for vmchooser.sh too ... -# ----------------------------------------------------------------------------- - -# This script . -# -# currently: -# - filter for slxgrp (which comes from /etc/machine-setup) -# - -# include default directories -. /etc/opt/openslx/openslx.conf - -if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then - . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf -fi - -for FILE in $1/*.xml; do - # filter all xmls which aren't set active - if [ $(grep "<active param=.*true.*" ${FILE} | wc -l) -eq 1 ]; then - if [ -n ${vmchooser_env} ]; then - # filter all xmls with pool-param not equal to vmchooser::env - if [ $(grep "<pools param=\"${vmchooser_env}\"" ${FILE} | wc -l) -eq 1 ];\ - then - echo ${FILE}; - fi - else - # if there is no pool set, just take all available xmls - echo -e ${active} - fi - fi -done diff --git a/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh b/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh deleted file mode 100644 index 7f1ae20d..00000000 --- a/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2009 - RZ Uni Freiburg -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Stage3 part of 'vmchooser' plugin - this script detects additionally to the -# the standard hardware configuration the availability of optical and floppy -# drives for virtual machines. -# -# The script is included from init via the "." load function - thus it has all -# variables and functions available. - -waitfor /tmp/hwcfg -( hwinfo --cdrom | grep -i "Device File:" | awk {'print $3'} >/etc/hwinfo.cdrom ) & -( hwinfo --floppy | grep -i "Device File:" | awk {'print $3'} >/etc/hwinfo.floppy ) & diff --git a/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh b/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh deleted file mode 100644 index 73a65ac5..00000000 --- a/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# virtual virtualization plugin -# make sure that this file is the same in vmgrid and vmchooser plugin! - -# include default directories -. /etc/openslx.conf - -CONFFILEVMCHOOSER="/initramfs/plugin-conf/vmchooser.conf" -CONFFILEVMGRID="/initramfs/plugin-conf/vmgrid.conf" -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization - -# check if plugins available -active=0 -[ -f ${CONFFILEVMCHOOSER} ] && . ${CONFFILEVMCHOOSER} -[ "x${vmchooser_active}" = "x1" ] && active=1 -[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID} -[ "x${vmgrid_active}" = "x1" ] && active=1 - -[ $DEBUGLEVEL -gt 0 ] \ - && echo -e "Executing the 'virtualization' plugin ... \c" - -if [ ${active} -ne 0 ] ; then - - # load general configuration - . /etc/initramfs-setup - # include functions - . /etc/functions - - testmkd ${PLUGINCONFDIR} - - # check if vmgrid active and change free mem - totalmem=$(expr $(grep -i "memtotal" /proc/meminfo \ - | awk '{print $2}') / 1024) - echo "totalmem=${totalmem}" >> ${PLUGINCONFDIR}/virtualization.conf - - if [ "x${vmgrid_active}" = "x1" ]; then - - totalmemtest=$(expr $(echo ${vmgrid_memratio} \ - | awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}')) - - # not more than 100% memory assigned - if [ ${totalmemtest} -le 100 2>/dev/null ]; then - - # host mem - hostratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $6}') - hostmem=$(expr ${totalmem} \* ${hostratio} / 100 2>/dev/null) - if [ ${hostmem} -lt 256 2>/dev/null ]; then - # min. 256 MB for host - hostmem=256 - fi - - # main vm mem (vmchooser) - if [ "x${vmchooser_active}" = "x1" ]; then - mainvirtratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $5}') - mainvirtmem=$(expr ${totalmem} \* ${mainvirtratio} / 100 2>/dev/null) - if [ ${mainvirtmem} -lt 512 2>/dev/null ]; then - # min. 512 for vmchooser - mainvirtmem=512 - fi - else - mainvirtratio=0 - mainvirtmem=0 - fi - - cat << EOF >> ${PLUGINCONFDIR}/virtualization.conf -hostratio=${hostratio} -hostmem=${hostmem} -mainvirtratio=${mainvirtratio} -mainvirtmem=${mainvirtmem} -EOF - - fi - fi - - # cpu cores - CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l) - if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then - echo "cpu_cores=${CPU_CORES}" \ - >> ${PLUGINCONFDIR}/virtualization.conf - else - echo 'cpu_cores=1' >> ${PLUGINCONFDIR}/virtualization.conf - fi - - # arch - echo "host_arch=$(uname -m)" >> ${PLUGINCONFDIR}/virtualization.conf - - # VT enabled cpu? - if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then - echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf - echo 'kvm_module="kvm_intel"' >> ${PLUGINCONFDIR}/virtualization.conf - elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then - echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf - echo 'kvm_module="kvm_amd"' >> ${PLUGINCONFDIR}/virtualization.conf - else - echo "vtflag=0" >> ${PLUGINCONFDIR}/virtualization.conf - fi - - # write mac - echo "hostmacaddr=${macaddr}" >> ${PLUGINCONFDIR}/virtualization.conf - # ip addr - echo "hostip=${clientip}" >> ${PLUGINCONFDIR}/virtualization.conf - # hostname - echo "hostname=${host_name}" >> ${PLUGINCONFDIR}/virtualization.conf - - # get further hw information - waitfor /etc/hwinfo.cdrom - j=0 - for i in $(cat /etc/hwinfo.cdrom); do - echo "cdrom_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf - j=$(expr $j + 1) - done - - waitfor /etc/hwinfo.floppy - j=0 - for i in $(cat /etc/hwinfo.floppy); do - echo "floppy_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf - j=$(expr $j + 1) - done - - # copy host information to rwshare of vmgrid plugin - if [ "x${vmgrid_active}" = "x1" ]; then - cp ${PLUGINCONFDIR}/virtualization.conf ${vmgrid_rwmnt}/host.conf - fi - - # finished ... - [ $DEBUGLEVEL -gt 0 ] \ - && echo "ok" -else - [ $DEBUGLEVEL -gt 0 ] \ - && echo "failed" -fi diff --git a/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm b/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm deleted file mode 100644 index 0965b482..00000000 --- a/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm +++ /dev/null @@ -1,319 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - 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 -# ----------------------------------------------------------------------------- -# vmgrid.pm -# - ... -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::vmgrid; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'vmgrid', - }; - - return bless $self, $class; -} - -# TODO: desc -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - ... - End-of-Here - precedence => 80, - #required => [ qr{^(vmware|virtualbox|qemukvm|xen)$} ], - #openvz|vserver - # TODO: virtaul plugin (requires, provides?) - #required => [ qw( virtualization ) ], - #provided => [ qw( virtualization ) ], - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'vmgrid::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'vmgrid'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'vmgrid::virt' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which virtualization technique schould be used? - End-of-Here - content_regex => qr{^(virtualbox|qemukvm|xen)$}, - #openvz|vserver - content_descr => 'virtualbox, qemukvm, xen', - #openvz, vserver - default => undef, - }, - 'vmgrid::roshare' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - do you want to mount external resources? - e.g. NFS share /w virt images ... - will be mounted to /var/lib/virt/vmgrid - End-of-Here - content_regex => qr{^nfs://}, - content_descr => 'NFS share as URI (nfs://...)', - default => undef, - }, - 'vmgrid::rwshare' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - do you want a persistent storage device? - use local hard drive (ID45) or NFS share. - will be mounted to /var/opt/openslx/plugins/vmgrid/share - End-of-Here - content_regex => qr{^(id45|nfs://)}, - content_descr => 'NFS share as URI (nfs://...) or "id45"', - default => undef, - }, - 'vmgrid::imgpath' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - location of virtual images - for starts /w relative path - End-of-Here - content_descr => 'absolute path to vm image files', - default => '/var/lib/virt/vmgrid/images', - }, - 'vmgrid::xmlpath' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - location of XML configuration for virtual images - for starts /w relative path - End-of-Here - content_descr => 'absolute path to vm xml files', - default => '/var/lib/virt/vmgrid/xml', - }, - 'vmgrid::startvms' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - which virtaul machines should be started per default - comma separated list. first will be started first, - second second, and so on, max. 4 VMs - End-of-Here - content_descr => 'name of xml file e.g. scilin-5.4-wn(.xml)', - default => undef, - }, - 'vmgrid::vt' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - use hardware virtualization, if applicable - override the settings of the corresponding virt plugin - (only if supported by plugin) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '"0", "1" or "-" (for unset)', - default => undef, - }, - 'vmgrid::maxvcpus' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - use this number of vcpus as maximum for one vm - (only if supported by plugin) - End-of-Here - content_regex => qr{^(1|2|4|8|16)$}, - content_descr => '1, 2, 4, 8, 16', - default => undef, - }, - 'vmgrid::minvcpus' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - use this number of vcpus as minimum for one vm - (only if supported by plugin) - End-of-Here - content_regex => qr{^(1|2|4|8|16)$}, - content_descr => '1, 2, 4, 8, 16', - default => undef, - }, - 'vmgrid::memratio' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - define memory ratio in nn% - order: grid client 1, 2, 3, 4, other VMs, host - if desktop virtualization defined the free memory will be - distributed between the remaining grid clients, - according to their ratio - if less than 4 VMs defined in startvms the memory is being - reserved for a later manual start - set to 0 if you do not intend to start them manually - (only if supported by plugin) - End-of-Here - content_regex => qr{^(\d\d??,\d\d??,\d\d??,\d\d??,\d\d??,\d\d??)$}, - content_descr => '\d\d??,\d\d??,\d\d??,\d\d??,\d\d??,\d\d??', - default => '40,0,0,0,40,20', - }, - 'vmgrid::maxmem' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - maximum RAM used by one vm - (only if supported by plugin) - End-of-Here - content_regex => qr{^(\d\d\d\d??\d??)$}, - content_descr => 'absolute amount: \d\d\d\d??\d??', - default => undef, - }, - 'vmgrid::minmem' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - minimum RAM used by one vm - (only if supported by plugin) - End-of-Here - content_regex => qr{^(\d\d\d\d??\d??)$}, - content_descr => 'absolute amount: \d\d\d\d??\d??', - default => undef, - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - - $self->_writeRunlevelScript(); - - # copy all needed files now: - my $pluginName = $self->{'name'}; - my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName/files"; - foreach my $file ( qw( vmgrid run-vmgrid.sh ) ) { - copyFile("$pluginBasePath/$file", "$pluginRepoPath/"); - chmod 0755, "$pluginRepoPath/$file"; - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -# Write the runlevelscript -sub _writeRunlevelScript -{ - my $self = shift; - my $initfile = newInitFile(); - - $initfile->setName("vmgrid"); - $initfile->setDesc("Setup environment for vmgrid. Part of OpenSLX vmgrid plugin."); - - # todo: Function need to be formated proper... not important right now - #$initfile->addFunction( - # 'running', - # 'lsmod | grep -q "$1[^_-]"' - #); - -# # Is a VM running? -# my $runningvms = unshiftHereDoc(<<' End-of-Here'); -# if [ -e /tmp/vmgrid/vmgrid.pids ]; then -# for pid in $(cat /tmp/vmgrid/vmgrid.pids); do -# if ps aux | grep " ${pid} " | grep vmgrid; then -# echo "Running: ${pid}" -# fi -# done -# fi -# End-of-Here - - # Kill all VMS! - my $killvms = unshiftHereDoc(<<' End-of-Here'); - if [ -e /tmp/vmgrid/vmgrid.pids ]; then - for pid in $(cat /tmp/vmgrid/vmgrid.pids); do - if ps aux | grep " ${pid} " | grep vmgrid; then - kill ${pid} - fi - done - fi - End-of-Here - - # FORCE: Kill all VMS! - my $fkillvms = unshiftHereDoc(<<' End-of-Here'); - if [ -e /tmp/vmgrid/vmgrid.pids ]; then - for pid in $(cat /tmp/vmgrid/vmgrid.pids); do - if ps aux | grep " ${pid} " | grep vmgrid; then - kill -9 ${pid} - fi - done - fi - End-of-Here - - $initfile->addFunction( - 'start', - ' vmgrid', - ); - $initfile->addToCase( - 'kill', - 'killvms' - ); - $initfile->addToCase( - 'force-kill', - 'fkillvms' - ); - $initfile->addToCase( - 'status', - 'runningvms' - ); - $initfile->addToCase( - 'restart', - 'stop && start' - ); - -# # get distro version -# my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0]; -# my $runlevelscript = getInitFileForDistro($initfile, $distro); -# -# spitFile("$self->{'pluginRepositoryPath'}/vmgrid-slx", $runlevelscript); -} - -1; diff --git a/os-plugins/plugins/vmgrid/XX_vmgrid.sh b/os-plugins/plugins/vmgrid/XX_vmgrid.sh deleted file mode 100644 index 16f5fbd1..00000000 --- a/os-plugins/plugins/vmgrid/XX_vmgrid.sh +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE="/initramfs/plugin-conf/vmgrid.conf" -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/vmgrid -VIRTUALIZATIONPLUGIN=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization -#RWSHARE=/mnt/${OPENSLX_DEFAULT_VARDIR}/plugins/vmgrid/share -RWSHARE=/mnt/var/opt/openslx/plugins/vmgrid/share -RWSHAREMNT=/mnt/var/opt/openslx/mnt/vmgrid -BINDIR=/mnt/${OPENSLX_DEFAULT_BINDIR} -PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/vmgrid -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/vmgrid - -if [ -f $CONFFILE ]; then - - # load needed variables - . $CONFFILE - - if [ ${vmgrid_active} -ne 0 ] ; then - [ ${DEBUGLEVEL} -gt 0 ] && echo "executing the 'vmgrid' os-plugin ..." - - # load general configuration - . /etc/initramfs-setup - # include functions - . /etc/functions - - testmkd ${PLUGINCONFDIR} - testmkd ${VIRTDIR} - cp $CONFFILE ${PLUGINCONFDIR}/vmgrid.conf - # create link to binpath - ln -fs ${PLUGINDIR}/vmgrid ${BINDIR}/vmgrid - ln -fs ${PLUGINDIR}/run-vmgrid.sh ${BINDIR}/run-vmgrid.sh - - # mount nfs virt ro share - if strinstr "nfs://" "${vmgrid_roshare}"; then - virtsrcprot=$(uri_token ${vmgrid_roshare} prot) - virtsrcserv=$(uri_token ${vmgrid_roshare} server) - virtsrcpath="$(uri_token ${vmgrid_roshare} path)" - if [ -n "${virtsrcprot}" -a -n "${virtsrcserv}" -a -n "${virtsrcpath}" ]; - then - virtsrctarget=${VIRTDIR} - # mount the vmgrid source ro - fsmount ${virtsrcprot} ${virtsrcserv} ${virtsrcpath} ${virtsrctarget} \ - ro - fi - fi - - # create rw share - testmkd ${RWSHARE} - # bind mount id 45 to ${RWSHARE} - if strinstr "id45" "${vmgrid_rwshare}" ; then - id45part=$(grep " 45 " /etc/disk.partition | awk '{print $1}' | \ - cut -f 3,3 -d /) - if [ -n "${id45part}" ]; then - testmkd /mnt/media/${id45part}/vmgrid - mount --bind -n /mnt/media/${id45part}/vmgrid ${RWSHARE} \ - >>/tmp/vmgrid.log 2>&1 - fi - # mount nfs rw share - elif strinstr "nfs://" "${vmgrid_rwshare}" ; then - rwshareprot=$(uri_token ${vmgrid_rwshare} prot) - rwshareserv=$(uri_token ${vmgrid_rwshare} server) - rwsharepath="$(uri_token ${vmgrid_rwshare} path)" - if [ -n "${rwshareprot}" -a -n "${rwshareserv}" -a -n "${rwsharepath}" ]; - then - # mount to a dir fist to create spec host dir, then bind mount - testmkd ${RWSHAREMNT} - rwtarget=${RWSHAREMNT} - # mount the vmgrid source rw - fsmount ${rwshareprot} ${rwshareserv} ${rwsharepath} ${rwtarget} rw - # hostname? - host_name=${host_name:=$clientip} - testmkd ${RWSHAREMNT}/${host_name} - mount --bind ${RWSHAREMNT}/${host_name} ${RWSHARE} \ - >>/tmp/vmgrid.log 2>&1 - fi - else - testmkd /mnt/tmp/vmgrid - mount --bind -n /mnt/tmp/vmgrid ${RWSHARE} >>/tmp/vmgrid.log 2>&1 - fi - # chmod so that everybody can write - chmod 1777 ${RWSHARE} - echo "vmgrid_rwmnt=${RWSHARE#/mnt}" >> ${PLUGINCONFDIR}/vmgrid.conf - - # finished ... - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmgrid' os-plugin ..." - fi -else - [ $DEBUGLEVEL -gt 0 ] && echo " * configuration of 'vmgrid' os-plugin failed" -fi diff --git a/os-plugins/plugins/vmgrid/files/run-vmgrid.sh b/os-plugins/plugins/vmgrid/files/run-vmgrid.sh deleted file mode 100644 index 51cb5dbc..00000000 --- a/os-plugins/plugins/vmgrid/files/run-vmgrid.sh +++ /dev/null @@ -1,430 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2010 - RZ Uni FR -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# vmgrid -# - This is the generic wrapper for the several virtualization solutions... -################################################################################ - -. /etc/opt/openslx/openslx.conf - -################################################################################ -### Define default dirs / get configs -################################################################################ - -PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins -PLUGINCONFVMGRID=${PLUGINCONFROOT}/vmgrid -RWSHARE=/var/opt/openslx/plugins/vmgrid/share -# include general configuration from vmgrid -[ -f ${PLUGINCONFVMGRID}/vmgrid.conf ] && \ - . ${PLUGINCONFVMGRID}/vmgrid.conf -# load general virtualization information -[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \ - . ${PLUGINCONFROOT}/virtualization/virtualization.conf -# get the vmchooser_active var -[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \ - . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf - -################################################################################ -### Functions used throughout the script -################################################################################ - -# function to write to stdout and logfile -LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-vmgrid.${USER}.$$.log -writelog () { - # write to stdout - echo -e "$1" - # log into file - echo -e "$1" >> ${LOGFILE} - # log into share dir, so that log is available in vm as well - echo -e "$1" >> ${vmgrid_rwmnt}/logs/run-vmgrid.${USER}.$$.log -} - -# remove config dirs when exit -cleanexit () { - if echo "${RMDIRS}" 2>/dev/null | grep -q ${vmgrid_virt}; then - writelog "${vmgrid_virt} exited. Cleanning up... \c" - rm -rf ${RMDIRS} >/dev/null 2>&1 - writelog "done" - fi - - exit "$1" -} - -################################################################################ -### Get XML file and dir -################################################################################ - -# check if mem, nice or graphical mode set -headless=1 -unice=19 -while [ $# -gt 0 ]; do - case "$1" in - -h|--help) - echo -e "Usage: run-vmgrid.sh [-g] [--mem <memory size in MB>] \c" - echo -e "[--nice <nice level>] [/path/]filename[.xml]" - exit - ;; - -g) - headless=0 - ;; - --mem) - # get a result which can be divided through 4 - if echo $2 | grep -qE \ - '^[2-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^1[0-9][0-9][0-9][0-9]$'; - then - forcemem=$(expr $2 / 4 \* 4) - else - echo "memory $2 not supported (200-19999)!" - exit 1 - fi - shift - ;; - --nice) - # set nice level - if echo $2 | grep -qE '^-[1-9]$|-1[0-9]$|^-20$|^[0-9]$|^1[0-9]$'; then - unice=$2 - else - echo "nice level $2 does not exist!" - exit 1 - fi - shift - ;; - *) - xmlfile=$@ - break - ;; - esac - shift -done - -# absolute or relative path? -if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then - xmlpath=$(dirname ${xmlfile}) - xmlfile=$(basename ${xmlfile}) -else - xmlpath=${vmgrid_xmlpath} -fi -# full path -xmlfile="${xmlpath}/${xmlfile%.xml}.xml" - -################################################################################ -### Sanity checks -################################################################################ - -# test if the xml file is valid -if ! [ -r "${xmlfile}" ]; then - writelog "${xmlfile} not a readable XML file!" - run-vmgrid.sh -h & - exit 1 -fi - -# start to log, create shrare log dir -mkdir -m 1777 -p ${vmgrid_rwmnt}/logs -echo "Starting to log at $(date)" \ - >${vmgrid_rwmnt}/logs/run-vmgrid.${USER}.$$.log - -# test how many instances running -runningvms=$(ps aux | grep "run-vmgrid.sh " | grep -v grep | wc -l) -# 2 steps, /w only one is seems not to work -runningvms=$(expr ${runningvms} - 1) -# if Xen use different method -if [ "${vmgrid_virt}" = "xen" ]; then - runningvms=$(xm list 2>/dev/null | grep -vE "Domain-0|Name.*ID" | wc -l) - runningvms=$(expr ${runningvms} + 1) -fi -# check value -if [ ${runningvms} -le 0 ]; then - writelog "Error in value: Running VMs: ${runningvms}. Exit!" - exit 1 -fi -# check if vmchooser plugin installed -if [ -n "${vmchooser_active}" ] && [ ${runningvms} -gt 1 ]; then - # only allow one instance of vmgrid - writelog "Already 1 VMs running and vmchooser plugin is active." - writelog "Can't start ${xmlfile}, exiting!" - exit 1 -# else allow max. 4 instances -elif [ ${runningvms} -gt 4 ]; then - writelog "Already 4 VMs running, exiting!" - exit 1 -fi -VM_ID="0${runningvms}" - -# test if XML file -if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then - writelog \ - "Submitted configuration file ${xmlfile} seems to have wrong XML format" - exit 1 -fi - -################################################################################ -### Logo for console -################################################################################ - -cat <<EOL - __ __ - .----.--.--.-----.___.--.--.--------.-----.----.|__|.--| | - | _| | | |___| | | | _ | _|| || _ | - |__| |_____|__|__| \___/|__|__|__|___ |__| |__||_____| - |_____| - OpenSLX virtual machine environment preparation script ... - -EOL - -################################################################################ -### Read needed variables from XML file -################################################################################ - -writelog "Starting configuration..." -writelog "\tVM-ID:\t\t\t${VM_ID}" -writelog "\tLogfile:\t\t${OPENSLX_DEFAULT_LOGDIR}/run-vmgrid.${USER}.$$.log" -writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c" -writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')" -writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})" -writelog "\tXML file:\t\t${xmlfile}" -writelog "VM config:" - -# name of the virt image or dir -imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') - -# image mode -imgmode=$(grep -io '<image_mode param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') - -# get boot attr -boot=$(grep -io 'boot param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }') -diskless=0 - -# special rw image -if [ "${imgmode}" = "rwimg" ]; then - # maybe you want to use an empty rw imgae? - # define only for writelog, will be set in the plugin include again! - vmpath="{special rw image}" - # add new path for rwimg - imgpath=${vmgrid_rwmnt}/specialrwimages - unset $imgname - mkdir -m 1777 -p ${imgpath} -# diskless boot -elif [ "${boot}" = "n" ] && [ -z "${imgname}" ]; then - diskless=1 - vmpath="{diskless boot}" -# imagename /w full path -elif echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then - imgpath=$(dirname ${imgname}) - imgname=$(basename ${imgname}) - vmpath=${imgpath}/${imgname} -# get path from var -else - imgpath=${vmgrid_imgpath} - vmpath=${imgpath}/${imgname} -fi - -# check if virtual machine container file exists, only if not rwimg -if ! [ -e "${vmpath}" ] && [ "${imgmode}" != "rwimg" ] && [ ${diskless} -eq 0 ]; -then - writelog "Virtual machine image or directory ${vmpath} not found!" - exit 1 -fi - -# name of the virt machine, sed because of Windows formatting -vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') -# if ${vm_name} not defined use ${xmlfile} -vm_name=${vm_name:-${xmlfile%.xml}} - -# define vm_shortname since vm_name can be very long -vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g") - -# vm_name = displayname, define for old scripts -displayname=${vm_name} - -[ "${imgmode}" != "rwimg" ] && [ ${diskless} -eq 0 ] \ - && writelog "\tVM Image dir:\t\t${imgpath}" -writelog "\tVM file/dir:\t\t$vmpath" - -# is there an additional configuration provided? -additional_config=$(grep -o 'additional_config param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') - -# image is for the following virtual machine -xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') - -# make a guess from the filename extension if ${xmlvirt} is empty -# (not set within the XML file) -# TODO: implement possibility to submit own configuration files -if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then - writelog "No virtual machine parameter defined in ${xmlfile}" - writelog "Trying to guess VM...\c" - case "$(cat ${additional_config} | tr [A-Z] [a-z])" in - *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*) - xmlvirt="vmware" - ;; - *innotek*|*virtualbox*) - xmlvirt="virtualbox" - ;; - *qemu*|*kvm*) - xmlvirt="qemukvm" - ;; - *) - xmlvirt="none" - ;; - esac -elif [ -z "${xmlvirt}" ]; then - case "$(echo ${imgname##*.} | tr [A-Z] [a-z])" in - vmdk) - xmlvirt="vmware" - ;; - vbox) - xmlvirt="virtualbox" - ;; - img|qcow*) - xmlvirt="qemukvm" - ;; - *) - xmlvirt="none" - ;; - esac - writelog "result:\t${xmlvirt}" -fi - -# check for virt -if [ "${vmgrid_virt}" != "${xmlvirt}" ]; then - writelog "The virtual machine specified in ${xmlfile}" - writelog "does not match the virtualization used here (${vmgrid_virt})" - exit 1 -fi - -# definition of the client system -vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' \ - | tr [A-Z] [a-z]) - -# definition of the networking the client system is connected to -network_kind=$(grep -io '<network param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }' | tr [A-Z] [a-z]) -network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \ - | awk -F '"' '{ print $2 }'| tr [A-Z] [a-z]) - -# define redirects -redirects=$(grep -ic '<redirect name=.*"' ${xmlfile}) -[ -z "${redirects}" ] && redirects=0 -(( i=1 )) -while [ ${i} -le ${redirects} ]; do - # get only the $i-th line - redirect_name[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \ - | grep -o "name=\".*" | awk -F '"' '{ print $2 }') - redirect_proto[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \ - | grep -o "proto=\".*" | awk -F '"' '{ print $2 }') - redirect_hport[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \ - | grep -o "hostport=\".*" | awk -F '"' '{ print $2 }') - redirect_gport[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \ - | grep -o "guestport=\".*" | awk -F '"' '{ print $2 }') - (( i=$i+1 )) -done - -writelog "\tVirtualization:\t\t$xmlvirt" -writelog "\tVM name:\t\t$vm_name" -writelog "\tVM short name:\t\t$vm_shortname" - -############################################################################### -### Declaration of default variables -############################################################################### - -# make sure cpu_cores is not empty -cpu_cores=${cpu_cores:-"1"} -#vmgrid::maxvcpus -#vmgrid::minvcpus -# check for CPU virtualization flags -#vmgrid::vt - -# total amount of memory defined in stage 3 -permem=60 -# get a result which can be divided through 4 -mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) -#vmgrid::maxmem -#vmgrid::minmem - -# configuring ethernet mac address: first 3 bytes are fixed (00:50:56) -# 4th byte is the VM-ID -# last two bytes are taken from the bridge of the host -# define one MAC per guest -macguestpart="00:50:56:${VM_ID}" -machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}') -macaddr=$(echo "${macguestpart}:${machostpart}" | tr [a-z] [A-Z]) - -# ide is expected default, test for the virtual disk image type should -# be done while creating the runscripts ... -# TODO: cdrom / floppy? -ide="TRUE" -scsi="FALSE" -hddrv="ide" -cdrom0="FALSE" -audio="false" -remotedesktopport="590${VM_ID}" - -# add rw share -sharepath="${vmgrid_rwmnt}/folders/${vm_shortname}" -mkdir -p ${sharepath} -chmod -f 1777 "${vmgrid_rwmnt}/folders" -sharename="share" - -# set hostname: using original hostname and adding string -hostname="vmgrid${VM_ID}-$(hostname)" - -writelog "\tVM Hostname:\t\t$hostname" - -################################################################################ -### Setup the rest of the environment and run the configured vm -################################################################################ - -# Copy guest configuration (with added information) config.xml to be accessed -# via virtual floppy -# TODO: virt-floppy needed? - -# Get all virtual machine specific stuff from the respective include file -if [ -e ${PLUGINCONFROOT}/${vmgrid_virt}/run-virt.include ] ; then - writelog "Starting ${vmgrid_virt} specific part ..." - self=${vmgrid_virt} - . ${PLUGINCONFROOT}/${vmgrid_virt}/run-virt.include -else - writelog "Failed because of missing ${vmgrid_virt} plugin" - exit 1 -fi - -# start graphical mode -if [ ${headless} -eq 0 ]; then - if [ -z "${VIRTCMD}" ]; then - writelog "Grapical mode not available, exiting!" - cleanexit 1 - fi - writelog "Starting ${vmgrid_virt} in graphical mode /w nice level ${unice}..." - # start /w low nice level - nice -n ${unice} ${VIRTCMD} ${VIRTCMDOPTS} 2>/dev/null -# start headless -elif [ -n "${VIRTCMDHL}" ]; then - writelog "Starting ${vmgrid_virt} in headless mode /w nice level ${unice}..." - # start /w low nice level - nice -n ${unice} ${VIRTCMDHL} ${VIRTCMDOPTSHL} 2>/dev/null -else - writelog "${vmgrid_virt}: No headless mode defined, exiting!" - cleanexit 1 -fi - -# postrun for scripts after virtualization finishes -if [ -n "${POSTRUN}" ]; then - eval ${POSTRUN} >/dev/null 2>&1 -fi - -cleanexit 0 -exit 0 diff --git a/os-plugins/plugins/vmgrid/files/vmgrid b/os-plugins/plugins/vmgrid/files/vmgrid deleted file mode 100644 index 2bb91481..00000000 --- a/os-plugins/plugins/vmgrid/files/vmgrid +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# Copyright (c) 2010 - RZ Uni FR -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# vmgrid -# - Script for autostarts defined in vmgrid::startvms -################################################################################ - -# include default directories -. /etc/opt/openslx/openslx.conf - -################################################################################ -### Manual Start -################################################################################ - -if [ -n "$1" ]; then - if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then - echo -e "Usage: vmgrid [[-g] [--mem <memory size in MB>] \c" - echo -e "[--nice <nice level>] [/path/]filename[.xml]]" - exit 0 - else - echo "Starting run-vmgrid.sh with options '$@'" - run-vmgrid.sh $@ 2>/dev/null - exit - fi -fi - -################################################################################ -### Define default dirs / get configs -################################################################################ - -PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins -PLUGINCONFDIR=${PLUGINCONFROOT}/vmgrid -RWSHARE=/var/opt/openslx/plugins/vmgrid/share -# include general configuration from vmgrid -[ -f ${PLUGINCONFDIR}/vmgrid.conf ] && \ - . ${PLUGINCONFDIR}/vmgrid.conf -# load general virtualization information -[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \ - . ${PLUGINCONFROOT}/virtualization/virtualization.conf - -################################################################################ -### Functions used throughout the script -################################################################################ - -# function to write to stdout and logfile -writelog () { - # write to stdout - echo -e "$1" - # log into file - echo -e "$1" >> ${OPENSLX_DEFAULT_LOGDIR}/vmgrid.${USER}.$$.log - # log into share dir, so that log is available in vm as well - echo -e "$1" >> ${vmgrid_rwmnt}/logs/vmgrid.${USER}.$$.log -} - -################################################################################ -### Configure VMs for autostart and set RAM -################################################################################ - -# start to log, create share log dir -mkdir -m 1777 -p ${vmgrid_rwmnt}/logs -mkdir -m 1777 -p /tmp/vmgrid -mkdir -p /tmp/vmgrid/${USER} -echo "Starting to log at $(date)" \ - >${vmgrid_rwmnt}/logs/vmgrid.${USER}.$$.log - -if [ -z "${hostratio}" ]; then - writelog "There has been an error in the memory configuration in stage 3" - writelog "Please check your memory ratio settings, exiting!" - exit 1 -fi - -if [ -z "${hostratio}" ]; then - writelog "There has been an error in the memory configuration in stage 3" - writelog "Please check your memory ratio settings, exiting!" - exit 1 -fi - -# remove blanks -vmgrid_startvms=$(echo ${vmgrid_startvms} | sed -e "s, *,,g") -vmgrid_memratio=$(echo ${vmgrid_memratio} | sed -e "s, *,,g") - -# hostmem, mainvirt from virtualization plugin -# ratio minus other vms and host -restratio=$(expr 100 - ${hostratio} - ${mainvirtratio}) - -# hostmem, totalmem, mainvirtmem from virtualization plugin -# calculate freemem -freemem=$(expr ${totalmem} - ${hostmem} - ${mainvirtmem} 2>/dev/null) -if [ ${freemem} -lt 512 2>/dev/null ]; then - writelog "Not enough free RAM for this plugin, free: ${freemem} MB" - exit 1 -fi - -# get clients mem ratio -vmsumratios=0 -for i in {1..4}; do - vm[$i]=$(echo ${vmgrid_startvms} | awk -F ',' '{print $1}') - # remove ${vm[$i]} from list because of '{print $1}' - vmgrid_startvms=$(echo ${vmgrid_startvms} | sed -e "s,${vm[$i]}\,*,,") - vmratio[$i]=$(echo ${vmgrid_memratio} | awk -F ',' '{print $1}') - # remove ${vmratio[$i]} from list because of '{print $1}' - vmgrid_memratio=$(echo ${vmgrid_memratio} | sed -e "s/${vmratio[$i]},*//") - vmsumratios=$(expr ${vmsumratios} + ${vmratio[$i]} 2>/dev/null) -done - -for i in {1..4}; do - # calculate VMs mem: mem = $freemem * $vmratio/100 * 100/$restratio - # multiple of 4 - vmmem[$i]=$(expr ${freemem} \* ${vmratio[$i]} / ${restratio} / 4 \* 4 \ - 2>/dev/null) - if [ -n "${vm[$i]}" ] && [ ${vmmem[$i]} -lt 512 2>/dev/null ]; then - writelog "Not enough free RAM for ${vm[$i]} (min. 512 MB), \c" - writelog "free: ${vmmem[$i]} MB" - unset vm[$i] - fi -done - -################################################################################ -### Start the VMs -################################################################################ - -# start vms -for i in {1..4}; do - if [ -n "${vm[$i]}" ]; then - alreadyrunning=$(ps aux | grep run-vmgrid.sh | grep -v grep \ - | grep "${vm[$i]}" | wc -l) - # if Xen use different method - if [ "${vmgrid_virt}" = "xen" ]; then - alreadyrunning=$(xm list 2>/dev/null | grep -vE "Domain-0|Name.*ID" \ - | grep "${vm[$i]}-0.$" | wc -l) - fi - if [ ${alreadyrunning} -gt 0 2>/dev/null ]; then - writelog "${vm[$i]} already running, skipping!" - else - writelog "Starting ${vm[$i]} via run-vmgrid.sh with ${vmmem[$i]} MB RAM" - run-vmgrid.sh --mem ${vmmem[$i]} ${vm[$i]} 2>/dev/null & - echo $! > /tmp/vmgrid/${USER}/vmgrid.pids - # wait 10 secs for the next vm to start - sleep 10 - fi - fi -done - -exit 0 diff --git a/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh b/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh deleted file mode 100644 index 73a65ac5..00000000 --- a/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# virtual virtualization plugin -# make sure that this file is the same in vmgrid and vmchooser plugin! - -# include default directories -. /etc/openslx.conf - -CONFFILEVMCHOOSER="/initramfs/plugin-conf/vmchooser.conf" -CONFFILEVMGRID="/initramfs/plugin-conf/vmgrid.conf" -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization - -# check if plugins available -active=0 -[ -f ${CONFFILEVMCHOOSER} ] && . ${CONFFILEVMCHOOSER} -[ "x${vmchooser_active}" = "x1" ] && active=1 -[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID} -[ "x${vmgrid_active}" = "x1" ] && active=1 - -[ $DEBUGLEVEL -gt 0 ] \ - && echo -e "Executing the 'virtualization' plugin ... \c" - -if [ ${active} -ne 0 ] ; then - - # load general configuration - . /etc/initramfs-setup - # include functions - . /etc/functions - - testmkd ${PLUGINCONFDIR} - - # check if vmgrid active and change free mem - totalmem=$(expr $(grep -i "memtotal" /proc/meminfo \ - | awk '{print $2}') / 1024) - echo "totalmem=${totalmem}" >> ${PLUGINCONFDIR}/virtualization.conf - - if [ "x${vmgrid_active}" = "x1" ]; then - - totalmemtest=$(expr $(echo ${vmgrid_memratio} \ - | awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}')) - - # not more than 100% memory assigned - if [ ${totalmemtest} -le 100 2>/dev/null ]; then - - # host mem - hostratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $6}') - hostmem=$(expr ${totalmem} \* ${hostratio} / 100 2>/dev/null) - if [ ${hostmem} -lt 256 2>/dev/null ]; then - # min. 256 MB for host - hostmem=256 - fi - - # main vm mem (vmchooser) - if [ "x${vmchooser_active}" = "x1" ]; then - mainvirtratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $5}') - mainvirtmem=$(expr ${totalmem} \* ${mainvirtratio} / 100 2>/dev/null) - if [ ${mainvirtmem} -lt 512 2>/dev/null ]; then - # min. 512 for vmchooser - mainvirtmem=512 - fi - else - mainvirtratio=0 - mainvirtmem=0 - fi - - cat << EOF >> ${PLUGINCONFDIR}/virtualization.conf -hostratio=${hostratio} -hostmem=${hostmem} -mainvirtratio=${mainvirtratio} -mainvirtmem=${mainvirtmem} -EOF - - fi - fi - - # cpu cores - CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l) - if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then - echo "cpu_cores=${CPU_CORES}" \ - >> ${PLUGINCONFDIR}/virtualization.conf - else - echo 'cpu_cores=1' >> ${PLUGINCONFDIR}/virtualization.conf - fi - - # arch - echo "host_arch=$(uname -m)" >> ${PLUGINCONFDIR}/virtualization.conf - - # VT enabled cpu? - if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then - echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf - echo 'kvm_module="kvm_intel"' >> ${PLUGINCONFDIR}/virtualization.conf - elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then - echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf - echo 'kvm_module="kvm_amd"' >> ${PLUGINCONFDIR}/virtualization.conf - else - echo "vtflag=0" >> ${PLUGINCONFDIR}/virtualization.conf - fi - - # write mac - echo "hostmacaddr=${macaddr}" >> ${PLUGINCONFDIR}/virtualization.conf - # ip addr - echo "hostip=${clientip}" >> ${PLUGINCONFDIR}/virtualization.conf - # hostname - echo "hostname=${host_name}" >> ${PLUGINCONFDIR}/virtualization.conf - - # get further hw information - waitfor /etc/hwinfo.cdrom - j=0 - for i in $(cat /etc/hwinfo.cdrom); do - echo "cdrom_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf - j=$(expr $j + 1) - done - - waitfor /etc/hwinfo.floppy - j=0 - for i in $(cat /etc/hwinfo.floppy); do - echo "floppy_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf - j=$(expr $j + 1) - done - - # copy host information to rwshare of vmgrid plugin - if [ "x${vmgrid_active}" = "x1" ]; then - cp ${PLUGINCONFDIR}/virtualization.conf ${vmgrid_rwmnt}/host.conf - fi - - # finished ... - [ $DEBUGLEVEL -gt 0 ] \ - && echo "ok" -else - [ $DEBUGLEVEL -gt 0 ] \ - && echo "failed" -fi diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm deleted file mode 100644 index d59227ad..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the vmware plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -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; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Debian.pm deleted file mode 100644 index fb7b4998..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,227 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/debian.pm -# - provides Debian-specific overrides of the Distro API for the vmware -# plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(vmware::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub fillRunlevelScript -{ - my $self = shift; - my $location = shift; - my $kind = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # Ubuntu/Debian specific start/stop script, generated via stage1 'vmware' - # plugin install - # inspiration taken from vmware start script: - # Copyright 1998-2007 VMware, Inc. All rights reserved. - # - # This script manages the services needed to run VMware software - - # Basic support for the Linux Standard Base Specification 1.3 - ### BEGIN INIT INFO - # Provides: VMware - # Required-Start: \$syslog - # Required-Stop: - # Default-Start: 2 3 5 - # Default-Stop: 0 6 - # Short-Description: Manages the services needed to run VMware software - # Description: Manages the services needed to run VMware software - ### END INIT INFO - - load_modules() { - End-of-Here - - # Load modules - if ($kind eq 'local' || $kind eq 'local25' || $kind eq 'local30') { - if ($kind eq 'local30') { - $script .= unshiftHereDoc(<<" End-of-Here"); - # vmplayer 3.0 specific stuff - insmod /lib/modules/\$(uname -r)/misc/vsock.ko || return 1 - insmod /lib/modules/\$(uname -r)/misc/vmci.ko || return 1 - End-of-Here - } - $script .= unshiftHereDoc(<<" End-of-Here"); - # to be filled in via the stage1 configuration script - insmod /lib/modules/\$(uname -r)/misc/vmmon.ko || return 1 - insmod /lib/modules/\$(uname -r)/misc/vmnet.ko || return 1 - insmod /lib/modules/\$(uname -r)/misc/vmblock.o 2>/dev/null || return 0 - End-of-Here - } elsif ($kind eq 'vmpl1.0') { - $script .= unshiftHereDoc(<<" End-of-Here"); - vmware_kind_path=/opt/openslx/plugin-repo/vmware/${kind}/ - module_src_path=\${vmware_kind_path}/vmroot/modules - insmod \${module_src_path}/vmmon.ko - insmod \${module_src_path}/vmnet.ko - End-of-Here - } elsif ($kind eq "vmpl2.0") { - $script .= unshiftHereDoc(<<" End-of-Here"); - vmware_kind_path=/opt/openslx/plugin-repo/vmware/${kind}/ - module_src_path=\${vmware_kind_path}/vmroot/modules - insmod \${module_src_path}/vmmon.ko - insmod \${module_src_path}/vmnet.ko - insmod \${module_src_path}/vmblock.ko - End-of-Here - } elsif ($kind eq 'vmpl2.5') { - $script .= unshiftHereDoc(<<" End-of-Here"); - vmware_kind_path=/opt/openslx/plugin-repo/vmware/${kind}/ - module_src_path=\${vmware_kind_path}/vmroot/modules - insmod \${module_src_path}/vmmon.ko - insmod \${module_src_path}/vmnet.ko - insmod \${module_src_path}/vmblock.ko - End-of-Here - } elsif ($kind eq 'vmpl3.0') { - $script .= unshiftHereDoc(<<" End-of-Here"); - vmware_kind_path=/opt/openslx/plugin-repo/vmware/${kind}/ - module_src_path=\${vmware_kind_path}/vmroot/modules - insmod \${module_src_path}/vmmon.ko - insmod \${module_src_path}/vmnet.ko - insmod \${module_src_path}/vmblock.ko - insmod \${module_src_path}/vsock.ko - insmod \${module_src_path}/vmci.ko - End-of-Here - } - - # unload modules - $script .= unshiftHereDoc(<<" End-of-Here"); - } - - unload_modules() { - # to be filled with the proper list within via the stage1 - # configuration script - rmmod vmmon vmblock vmnet vmmon vmci vsock 2>/dev/null - } - End-of-Here - - # setup vmnet0 and vmnet8 - # depends on specific stage3 setting. I let this if in the code - # because else this whole if-reducing process will become more - # complicated and the code will get less understandable - $script .= unshiftHereDoc(<<" End-of-Here"); - # the bridged interface - setup_vmnet0() { - if [ -n "\$vmnet0" ] ; then - # the path might be directly point to the plugin dir - End-of-Here - if ($kind eq 'vmpl2.5' || $kind eq 'vmpl3.0' || $kind eq 'local25' || $kind eq 'local30') { - $script .= " $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0\n"; - } else { - $script .= " $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0\n"; - } - $script .= unshiftHereDoc(<<" End-of-Here"); - fi - } - # we definately prefer the hostonly interface for NATed operation too - # distinction is made via enabled forwarding - setup_vmnet1() { - if [ -n "\$vmnet1" ] ; then - # the path might be directly point to the plugin dir - $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \\ - /dev/vmnet1 vmnet1 - dhcpif="\$dhcpif vmnet1" - ip addr add \$vmnet1 dev vmnet1 - ip link set vmnet1 up - if [ -n "\$vmnet1nat" ] ; then - # needs refinement interface name for eth0 is known in stage3 already - echo "1" > /proc/sys/net/ipv4/conf/vmnet1/forwarding 2>/dev/null - echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding 2>/dev/null - #iptables -A -s vmnet1 -d eth0 - fi - $location/vmnet-dhcpd -cf /etc/vmware/dhcpd-vmnet1.conf -lf \\ - /var/run/vmware/dhcpd-vmnet1.leases \\ - -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1 2>/dev/null # or logfile - fi - } - # incomplete ... - setup_vmnet8() { - if [ -n "\$vmnet8" ] ; then - # we don't need the following test. It's handled by - # XX_vmware.sh - #test -c /dev/vmnet8 || mknod c 119 8 /dev/vmnet8 - $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \\ - /dev/vmnet8 vmnet8 - ip addr add \$vmnet8 dev vmnet8 - ip link set vmnet8 up - # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50 - $location/vmnet-natd -d /var/run/vmnet-natd-8.pid \\ - -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf 2>/dev/null # or logfile - $location/vmnet-dhcpd -cf /etc/vmware/dhcpd-vmnet8.conf \\ - -lf /var/run/vmware/dhcpd-vmnet8.leases \\ - -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8 2>/dev/null # or logfile - fi - } - # initialize the lsb status messages - . /lib/lsb/init-functions - - case \$1 in - start) - log_daemon_msg "Starting vmware background services ..." "vmware" - # include default directories - . /etc/opt/openslx/openslx.conf - # load the configuration file - . \${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf - mkdir -p /var/run/vmware - touch /var/run/vmware/dhcpd-vmnet1.leases - touch /var/run/vmware/dhcpd-vmnet8.leases - load_modules || log_warning_msg "The loading of vmware modules failed" - setup_vmnet0 || log_warning_msg "Problems setting up vmnet0 interface" - setup_vmnet1 || log_warning_msg "Problems setting up vmnet1 interface" - setup_vmnet8 || log_warning_msg "Problems setting up vmnet8 interface" - log_end_msg $? - ;; - stop) - # message output should match the given vendor-os - log_daemon_msg "Stopping vmware background services ..." "vmware" - killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \\ - vmware-tray vmnet-dhcpd 2>/dev/null - # wait for shutting down of interfaces. vmnet needs kinda - # long - sleep 1 - unload_modules - log_end_msg $? - ;; - # we don't need a status yet... at least as long as it is - # unclear in which path the corresponding binary (see original - # /etc/init.d/vmware) is in our case - #status) - # log_daemon_msg "Say something useful here ..." - #;; - restart) - \$0 stop - \$0 start - exit $? - ;; - *) - log_success_msg "Usage: \$0 {start|stop|restart}" - exit 2 - ;; - esac - exit 0 - End-of-Here - return $script; -} - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index 912bdfa0..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 2007..2010 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the vmware -# plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(vmware::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index 2e1197d8..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the vmware -# plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(vmware::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm deleted file mode 100644 index c1b2ecf4..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the vmware plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(vmware::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 922fb34f..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2007..2010 - 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/ -# ----------------------------------------------------------------------------- -# vmware/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the Distro API for the vmware -# plugin. -# ----------------------------------------------------------------------------- -package vmware::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -# inherit everything from Debian (as Ubuntu is based on it anyway) -use base qw(vmware::OpenSLX::Distro::Debian); - -1; diff --git a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm deleted file mode 100644 index 7e55019c..00000000 --- a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm +++ /dev/null @@ -1,836 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# vmware.pm -# - declares necessary information for the vmware plugin -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::vmware; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Basename; -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'vmware', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Module for enabling services of VMware Inc. on an OpenSLX stateless - client. This plugin might use pre-existing installations of VMware - tools or install addional variants and versions. - End-of-Here - precedence => 70, - required => [ qw( desktop ) ], - }; -} - -sub getAttrInfo -{ - # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'vmware::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'vmware'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - # attribute 'imagesrc' defines where we can find vmware images - 'vmware::imagesrc' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Where do we store our vmware images? NFS? Filesystem? - End-of-Here - #TODO: check if the input is valid - #content_regex => qr{^(0|1)$}, - content_descr => 'Allowed values: path or URI', - default => '', - }, - # attribute 'bridge' defines if bridged network mode should be - # switched on - 'vmware::bridge' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Should the bridging (direct access of the vmware clients - to the ethernet the host is connected to) be enabled - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => 'Allowed values: 0 or 1', - default => '1', - }, - # attribute 'vmnet1' defines if the host connection network mode - # should be switched on and NAT should be enabled - 'vmware::vmnet1' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Format ServerIP/Netprefix without NAT - Format ServerIP/Netprefix,NAT enables NAT/Masquerading - End-of-Here - #TODO: check if the input is valid - #content_regex => qr{^(0|1)$}, - content_descr => 'Allowed value: IP/Prefix[,NAT]', - default => '192.168.101.1/24,NAT', - }, - # attribute 'vmnet8' defines if vmware specific NATed network mode - # should be switched on - 'vmware::vmnet8' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Format ServerIP/Netprefix. Last octet will be omitted - End-of-Here - #TODO: check if the input is valid - #content_regex => qr{^(0|1)$}, - content_descr => 'Allowed value: IP/Prefix. Last octet will be omitted', - default => '192.168.102.x/24', - }, - # attribute 'kind' defines which set of VMware binaries should be - # activated ('local' provided with the main installation set). - 'vmware::kind' => { - applies_to_vendor_os => 0, - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Which set of VMware binaries to use: installed (local) or provided by the - plugin itself (vmpl1.0, vmpl2.0, vmpl2.5, vmpl3.X)? - End-of-Here - # only allow the supported once... - # TODO: modify if we know which of them work - #content_regex => qr{^(local|vmws(5\.5|6.0)|vmpl(1\.0|2\.0))$}, - content_regex => qr{^(local|vmpl3\.0||vmpl2\.0|vmpl1\.0|vmpl2\.5)$}, - content_descr => 'Allowed values: local, vmpl2.0', - #TODO: what if we don't have a local installation. default - # is still local. Someone has a clue how to test - # it and change the default value? - default => 'local', - }, - ## - ## only stage1 setup options: different kinds to setup - 'vmware::local' => { - applies_to_vendor_os => 1, - applies_to_system => 0, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - Set's up stage1 configuration for a local installed - vmplayer or vmware workstation - End-of-Here - content_regex => qr{^(1|0)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'vmware::vmpl2.0' => { - applies_to_vendor_os => 1, - applies_to_system => 0, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - Install and configure vmplayer v2 - End-of-Here - content_regex => qr{^(1|0)$}, - content_descr => '1 means active - 0 means inactive', - default => '0', - }, - 'vmware::vmpl2.5' => { - applies_to_vendor_os => 1, - applies_to_system => 0, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - Install and configure vmplayer v2 - End-of-Here - content_regex => qr{^(1|0)$}, - content_descr => '1 means active - 0 means inactive', - default => '0', - }, - 'vmware::vmpl1.0' => { - applies_to_vendor_os => 1, - applies_to_system => 0, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - Install and configure vmplayer v1 - End-of-Here - content_regex => qr{^(1|0)$}, - content_descr => '1 means active - 0 means inactive', - default => '0', - }, - 'vmware::pkgpath' => { - applies_to_vendor_os => 1, - applies_to_system => 0, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - Path to VMware packages - End-of-Here - #TODO - #content_regex => qr{^(1|0)$}, - content_descr => '1 means active - 0 means inactive', - default => '/root/vmware-pkgs', - }, - # ** set of attributes for the installation of VM Workstation/Player - # versions. More than one package could be installed in parallel. - # To be matched to/triggerd by 'vmware::kind' - }; -} - - -sub preInstallationPhase() -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - $self->{vendorOsPath} = $info->{'vendor-os-path'}; - - my $pkgpath = $self->{attrs}->{'vmware::pkgpath'}; - my $vmpl10 = $self->{attrs}->{'vmware::vmpl1.0'}; - my $vmpl20 = $self->{attrs}->{'vmware::vmpl2.0'}; - my $vmpl25 = $self->{attrs}->{'vmware::vmpl2.5'}; - my $local = $self->{attrs}->{'vmware::local'}; - - if ($local == 0 && $vmpl10 == 0 && $vmpl20 == 0 && $vmpl25 == 0) { - print "\n\n * At least one kind needs to get installed/activated:\n"; - print " vmware::local=1 or\n"; - print " vmware::vmpl1.0=1 or\n"; - print " vmware::vmpl2.0=1\n"; - print " vmware::vmpl2.5=1\n"; - print " * vmware plugin was not installed!\n\n"; - exit 1; - } - - if (! -d $pkgpath && ($vmpl10 == 1 || $vmpl20 == 1 || $vmpl25 == 1)) { - print "\n\n * vmware::pkgpath: no such directory $pkgpath!\n"; - print " See wiki about vmware Plugin\n"; - print " * vmware plugin was not installed!\n\n"; - exit 1; - } - - # test just for the case we only set up local vmware - if (-d $pkgpath && ($vmpl10 == 1 || $vmpl20 == 1 || $vmpl25 == 1)) { - # todo: ask oliver about a similiar function - # like copyFile() just for directorys - # or fix the manual after checked the source of - # copyFile() function. check if copyFile etc. perldoc - # is somewhere in the wiki documented else do it! - system("cp -r $pkgpath $self->{pluginRepositoryPath}/packages"); - } -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - - # copy common part of run-virt.include to the appropriate place for - # inclusion in stage4 - copyFile("$self->{openslxBasePath}/lib/plugins/vmware/files/run-virt.include", - "$self->{pluginRepositoryPath}/"); - - # kinds we will configure and install - # TODO: write a list of installed/setted up and check it in stage3 - # this will avoid conflict of configured vmware version in - # stage3 which are not setted up or installed in stage1 - if ($self->{attrs}->{'vmware::local'} == 1) { - $self->_localInstallation(); - } - if ($self->{attrs}->{'vmware::vmpl2.0'} == 1) { - $self->_vmpl2Installation(); - } - if ($self->{attrs}->{'vmware::vmpl1.0'} == 1) { - $self->_vmpl1Installation(); - } - if ($self->{attrs}->{'vmware::vmpl2.5'} == 1) { - $self->_vmpl25Installation(); - } - - ## prepration for our faster wrapper script - # rename the default vmplayer script and create a link. - # uninstall routine takes care about plugin remove. - # stage3 copys our own wrapper script - if (-e "/usr/bin/vmplayer" && ! -e "/usr/bin/vmplayer.slx-back") { - rename("/usr/bin/vmplayer", "/usr/bin/vmplayer.slx-bak"); - } - # the same with vmware, if ws is installed - if (-e "/usr/bin/vmware" && ! -e "/usr/bin/vmware.slx-bak") { - rename("/usr/bin/vmware", "/usr/bin/vmware.slx-bak"); - } - -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - # restore old start scripts - to be discussed - my @files = qw( vmware vmplayer ); - foreach my $file (@files) { - if (-e "/usr/bin/$file.slx-bak") { - unlink("/usr/bin/$file"); - rename("/usr/bin/$file.slx-bak", "/usr/bin/$file"); - } - } - return; -} - -sub checkStage3AttrValues -{ - my $self = shift; - my $stage3Attrs = shift; - my $vendorOSAttrs = shift; - my @problems; - - my $vm_kind = $stage3Attrs->{'vmware::kind'} || ''; - my $vmimg = $stage3Attrs->{'vmware::imagesrc'} || ''; - - if ($vm_kind eq 'local' && ! -x "/usr/lib/vmware/bin/vmplayer") { - push @problems, _tr( - "No local executeable installation of vmware found! Using it as virtual machine wouldn't work!" - ); - } - - if ($vm_kind eq 'local' && - ! -d "/opt/openslx/plugin-repo/vmware/local") { - push @problems, _tr( - "local vmware installation not configured by slxos-plugin!" - ); - } - - if ($vm_kind eq 'vmpl1.0' && - ! -d "/opt/openslx/plugin-repo/vmware/vmpl1.0/vmroot") { - push @problems, _tr( - "No OpenSLX installation of VMware Player 1 found or installation failed. Using it as virtual machine wouldn't work!" - ); - } - - if ($vm_kind eq 'vmpl2.0' && - ! -d "/opt/openslx/plugin-repo/vmware/vmpl2.0/vmroot") { - push @problems, _tr( - "No OpenSLX installation of VMware Player 2.0 found or installation failed. Using it as virtual machine wouldn't work!" - ); - } - - if ($vm_kind eq 'vmpl2.5' && - ! -d "/opt/openslx/plugin-repo/vmware/vmpl2.5/vmroot") { - push @problems, _tr( - "No OpenSLX installation of VMware Player 2.5 found or installation failed. Using it as virtual machine wouldn't work!" - ); - } - - if ($vm_kind eq 'vmpl3.X' && - ! -d "/opt/openslx/plugin-repo/vmware/vmpl3.X/vmroot") { - push @problems, _tr( - "No OpenSLX installation of VMware Player 3.X found or installation failed. Using it as virtual machine wouldn't work!" - ); - } - - return if !@problems; - - return \@problems; -} - - -####################################### -## local, non-general OpenSLX functions -####################################### - -# Write the runlevelscript -# usage: _writeRunlevelScript("$vmpath", "$kind") -sub _writeRunlevelScript -{ - my $self = shift; - my $vmpath = shift; - my $kind = shift; - my $initfile = newInitFile(); - - my $script = ""; - my $modpath = ""; - my $modlist = ""; - # vmpath is to be redefined here ... - if ($kind =~ /local*/) { - $vmpath = ""; - $modpath = "/lib/modules/\$(uname -r)/misc"; - } elsif ($kind =~ /vmpl*/) { - $vmpath = "/opt/openslx/plugin-repo/vmware/${kind}"; - $modpath = "${vmpath}/vmroot/modules"; - } - - $initfile->setName("vmware-slx"); - $initfile->setDesc("Setup environment for VMware Workstation or Player ($kind)."); - - # functions ... - $modlist = "vmnet vmmon"; - $script = unshiftHereDoc(<<" End-of-Here"); - # VMplayer common stuff - insmod ${modpath}/vmmon.ko || return 1 - insmod ${modpath}/vmnet.ko || return 1 - End-of-Here - if ($kind eq 'local3X' || $kind eq 'vmpl3.X') { - $script .= unshiftHereDoc(<<" End-of-Here"); - # VMplayer 3.X specific stuff - insmod ${modpath}/vmci.ko - insmod ${modpath}/vmblock.ko - insmod ${modpath}/vsock.ko - End-of-Here - $modlist .= "vsock vmci vmblock"; - } elsif ($kind eq 'local20' || $kind eq 'local25' || $kind eq 'vmpl2.0' || $kind eq 'vmpl2.5') { - $script .= unshiftHereDoc(<<" End-of-Here"); - # VMplayer 2.X specific stuff - insmod ${modpath}/vmblock.ko - End-of-Here - $modlist .= "vmblock"; - } - $initfile->addFunction( - "load_modules", - "$script" - ); - $initfile->addFunction( - "unload_modules", - "rmmod $modlist 2>/dev/null" - ); - # vmnet0,1,8 (bridge, nat, host-only) interface definition - $script = unshiftHereDoc(<<" End-of-Here"); - # let point the path directly to the directory where the binary lives - location="$vmpath/usr/bin" - if [ -n "\$vmnet0" ] ; then - # the path might be directly point to the plugin dir - End-of-Here - if ($kind eq 'vmpl1.0' || $kind eq 'vmpl2.0' || $kind eq 'local10' || $kind eq 'local20') { - $script .= " \$location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0\n"; - } else { - $script .= " \$location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0\n"; - } - $script .= unshiftHereDoc(<<" End-of-Here"); - fi - if [ -n "\$vmnet1" ] ; then - \$location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \\ - /dev/vmnet1 vmnet1 - ip addr add \$vmnet1 dev vmnet1 - ip link set vmnet1 up - if [ -n "\$vmnet1nat" ] ; then - echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding 2>/dev/null - echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null - #iptables -A -s vmnet1 -d br0 - fi - /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \\ - -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf - fi - if [ -n "\$vmnet8" ] ; then - \$location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \\ - /dev/vmnet8 vmnet8 - ip addr add \$vmnet8 dev vmnet8 - ip link set vmnet8 up - echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding 2>/dev/null - echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null - iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE - /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \\ - -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf - fi - End-of-Here - $initfile->addFunction( - "vmnetif", - "$script" - ); - # vmblock for handling e.g. removable USB devices - $script = unshiftHereDoc(<<" End-of-Here"); - # let point the path directly to the directory where the binary lives - $vmpath/usr/bin/vmware-usbarbitrator - End-of-Here - $initfile->addFunction( - "vmblock", - "$script" - ); - $script = unshiftHereDoc(<<" End-of-Here"); - # include default directories - . /etc/opt/openslx/openslx.conf - # load the configuration file - . \${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf - # hack to access the first serial/parallel port - chmod a+rw /dev/ttyS0 - chmod a+rw /dev/parport0 - load_modules - vmnetif - End-of-Here - # start the USB arbitrator on higher VMware/player versions (3.0+) - if ($kind eq 'vmpl3.X' || $kind eq 'local3X') { - $script .= unshiftHereDoc(<<" End-of-Here"); - vmblock - End-of-Here - } - $initfile->addToCase( - "start", - "$script" - ); - $script = unshiftHereDoc(<<" End-of-Here"); - killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \\ - vmware-tray vmnet-dhcpd 2>/dev/null - # might take a while until all services are shut down - sleep 1 - unload_modules - End-of-Here - $initfile->addToCase( - "stop", - "$script" - ); - $initfile->addToCase( - "status", - "vmstatus" - ); - $initfile->addToCase( - "restart", - "\$0 stop && \$0 start" - ); - - my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0]; - my $runlevelscript = getInitFileForDistro($initfile, $distro); - # todo: because we dont have distribution or version dependend - # init scripts we could put it directly into /etc/init.d... - spitFile("$self->{'pluginRepositoryPath'}/vmware-slx", $runlevelscript); -} - - -# writes the wrapper script for vmware workstation and player, depending -# on the flag. If player: just player wrapper, if ws: ws+player wrapper -# usage: _writeWrapperScript("$vmpath", "$kind", "player") -# _writeWrapperScript("$vmpath", "$kind", "ws") -sub _writeWrapperScript -{ - my $self = shift; - my $vmpath = shift; - my $kind = shift; - my $type = shift; - my @files; - - if ("$type" eq "ws") { - @files = qw(vmware vmplayer); - } else { - @files = qw(vmplayer); - } - - foreach my $file (@files) { - # create our own simplified version of the vmware and player wrapper - # Depending on the configured kind it will be copied in stage3 - # because of tempfs of /var but not /usr we link the file - # to /var/..., where we can write in stage3 - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # written by OpenSLX-plugin 'vmware' in Stage1 - # radically simplified version of the original script $file by VMware Inc. - End-of-Here - - # kinda ugly and we only need it for local. Preserves errors - if ($kind ne "local") { - $script .= unshiftHereDoc(<<" End-of-Here"); - export LD_LIBRARY_PATH=$vmpath/lib - export GDK_PIXBUF_MODULE_FILE=$vmpath/libconf/etc/gtk-2.0/gdk-pixbuf.loaders - export GTK_IM_MODULE_FILE=$vmpath/libconf/etc/gtk-2.0/gtk.immodules - export FONTCONFIG_PATH=$vmpath/libconf/etc/fonts - export PANGO_RC_FILE=$vmpath/libconf/etc/pango/pangorc - # possible needed... but what are they good for? - #export GTK_DATA_PREFIX= - #export GTK_EXE_PREFIX= - #export GTK_PATH= - End-of-Here - } - - $script .= unshiftHereDoc(<<" End-of-Here"); - PREFIX=$vmpath # depends on the vmware location - exec "\$PREFIX"'/lib/wrapper-gtk24.sh' \\ - "\$PREFIX"'/lib' \\ - "\$PREFIX"'/bin/$file' \\ - "\$PREFIX"'/libconf' "\$@" - End-of-Here - - # TODO: check if these will be overwritten if we have more as - # local defined (add the version/type like vmpl1.0, vmws5.5, ...) - # then we have a lot of files easily distinguishable by there suffix - spitFile("$self->{'pluginRepositoryPath'}/$kind/$file", $script); - chmod 0755, "$self->{'pluginRepositoryPath'}/$kind/$file"; - } -} - -sub _writeVmwareConfigs { - my $self = shift; - my $kind = shift; - my $vmpath = shift; - my %versionhash = (vmversion => "", vmbuildversion => ""); - my $vmversion = ""; - my $vmbuildversion = ""; - my $config = ""; - - %versionhash = _getVersion($vmpath); - - $config .= "version=\"".$versionhash{vmversion}."\"\n"; - $config .= "buildversion=\"".$versionhash{vmbuildversion}."\"\n"; - spitFile("$self->{'pluginRepositoryPath'}/$kind/vmware.conf", $config); - chmod 0755, "$self->{'pluginRepositoryPath'}/$kind/vmware.conf"; - - $config = "libdir = \"$vmpath\"\n"; - spitFile("$self->{'pluginRepositoryPath'}/$kind/config", $config); - chmod 0755, "$self->{'pluginRepositoryPath'}/$kind/config"; -} - -sub _getVersion { - - my $vmpath = shift; - my $vmversion = ""; - my $vmbuildversion = ""; - my %versioninfo = (vmversion => "", vmbuildversion => ""); - - # get version information about installed vmplayer - if (open(FH, "$vmpath/bin/vmplayer")) { - $/ = undef; - my $data = <FH>; - close FH; - # depending on the installation it could differ and has multiple build - # strings - if ($data =~ m{[^\d\.](\d\.\d) build-(\d+)}) { - $vmversion = $1; - $vmbuildversion = $2; - } - if ($data =~ m{\0(2\.[05])\.[0-9]}) { - $vmversion = $1; - } - # else { TODO: errorhandling if file or string doesn't exist } - chomp($vmversion); - chomp($vmbuildversion); - - - $versioninfo{vmversion} = $vmversion; - $versioninfo{vmbuildversion} = $vmbuildversion; - } - return %versioninfo; -} - -######################################################################## -## Functions, which setup the different environments (local, ws-v(5.5|6), -## player-v(1|2) -## Seperation makes this file more readable. Has a bigger benefit as -## one big copy function. Makes integration of new versions easier. -######################################################################## - -# local installation -sub _localInstallation -{ - my $self = shift; - - my $kind = "local"; - my $vmpath = "/usr/lib/vmware"; - my $vmbin = "/usr/bin"; - my %versionhash = (vmversion => "", vmbuildversion => ""); - my $vmversion = ""; - my $vmbuildversion = ""; - - # if vmware ws is installed, vmplayer is installed, too. - # we will only use vmplayer - if (-e "/usr/lib/vmware/bin/vmplayer") { - - ## Get and write version information - %versionhash = _getVersion($vmpath); - $vmversion = $versionhash{vmversion}; - $vmbuildversion = $versionhash{vmbuildversion}; - - # set version information - # VMplayer 2.0 - if ($vmversion eq "2.0" || $vmversion eq "6.0") { - $kind="local20"; - # VMplayer 2.5 - } elsif ($vmversion eq "2.5" || $vmversion eq "6.5") { - $kind="local25"; - # VMplayer 3.0, 3.1, Workstation 7.0, 7.1 - } elsif ($vmversion eq "3.0" || $vmversion eq "7.0" || - $vmversion eq "3.1" || $vmversion eq "7.1") { $kind="local3X"; - } - # Create runlevel script depending on detected version - $self->_writeRunlevelScript("$vmpath", "$kind"); - - # Create wrapper scripts, kind of localNN is set to local - if ( $kind =~ /local*/ ) { $kind = "local"; } - if (-e "/usr/lib/vmware/bin/vmware") { - $self->_writeWrapperScript("$vmpath", "$kind", "ws"); - } - if (-e "/usr/lib/vmware/bin/vmplayer") { - $self->_writeWrapperScript("$vmpath", "$kind", "player"); - } - - # copy nvram file - my $pluginFilesPath - = "$self->{'openslxBasePath'}/lib/plugins/$self->{'name'}/files"; - my @files = qw(nvram); - foreach my $file (@files) { - copyFile("$pluginFilesPath/$file", "$self->{'pluginRepositoryPath'}/$kind"); - } - - } # else { TODO: errorhandling if file or string doesn't exist } - - ## creating needed config /etc/vmware/config - $self->_writeVmwareConfigs("$kind", "$vmpath"); -} - -sub _vmpl2Installation { - my $self = shift; - - my $kind = "vmpl2.0"; - my $vmpath = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/lib/vmware"; - my $vmbin = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/bin"; - - my $pluginFilesPath - = "$self->{'openslxBasePath'}/lib/plugins/$self->{'name'}/files"; - my $installationPath = "$self->{'pluginRepositoryPath'}/$kind"; - - mkpath($installationPath); - - ## - ## Copy needed files - - # copy 'normal' needed files - my @files = qw( nvram install-vmpl.sh ); - foreach my $file (@files) { - copyFile("$pluginFilesPath/$file", "$installationPath"); - } - - # Install the binarys from given pkgpath - system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind"); - - # Create runlevel script - $self->_writeRunlevelScript($vmpath, $kind); - - # Create wrapperscripts - $self->_writeWrapperScript("$vmpath", "$kind", "player"); - - # Creating needed config /etc/vmware/config - $self->_writeVmwareConfigs("$kind", "$vmpath"); - -} - -sub _vmpl25Installation { - my $self = shift; - - my $kind = "vmpl2.5"; - my $vmpath = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/lib/vmware"; - my $vmbin = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/bin"; - my $vmversion = "6.5"; - my $vmbuildversion = "TODO_we_need_it_for_enhanced_runvmware_config_in_stage1"; - - my $pluginFilesPath - = "$self->{'openslxBasePath'}/lib/plugins/$self->{'name'}/files"; - my $installationPath = "$self->{'pluginRepositoryPath'}/$kind"; - - mkpath($installationPath); - - # copy 'normal' needed files - my @files = qw( nvram install-vmpl.sh ); - foreach my $file (@files) { - copyFile("$pluginFilesPath/$file", "$installationPath"); - } - - # Install the binarys from given pkgpath - system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind"); - - # Create runlevel script - $self->_writeRunlevelScript($vmpath, $kind); - - # Create wrapperscripts - $self->_writeWrapperScript("$vmpath", "$kind", "player"); - - # Creating needed config /etc/vmware/config - $self->_writeVmwareConfigs("$kind", "$vmpath"); - -} - -sub _vmpl1Installation { - my $self = shift; - - my $kind = "vmpl1.0"; - my $vmpath = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/lib/vmware"; - my $vmbin = "/opt/openslx/plugin-repo/vmware/$kind/vmroot/bin"; - my $vmversion = "5.5"; - my $vmbuildversion = "TODO_we_need_it_for_enhanced_runvmware_config_in_stage1"; - - my $pluginFilesPath - = "$self->{'openslxBasePath'}/lib/plugins/$self->{'name'}/files"; - my $installationPath = "$self->{'pluginRepositoryPath'}/$kind"; - - mkpath($installationPath); - - # copy 'normal' needed files - my @files = qw( nvram install-vmpl.sh ); - foreach my $file (@files) { - copyFile("$pluginFilesPath/$file", "$installationPath"); - } - - # Download and install the binarys - system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind"); - - # Create runlevel script - $self->_writeRunlevelScript($vmpath, $kind); - - # create wrapper scripts - $self->_writeWrapperScript("$vmpath", "$kind", "player"); - - # creating needed config /etc/vmware/config - $self->_writeVmwareConfigs("$kind", "$vmpath"); - -} - -# The bridge configuration needs the bridge module to be present in early -# stage3 -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedModules; - - push @suggestedModules, qw( bridge ); - - return @suggestedModules; -} - -1; diff --git a/os-plugins/plugins/vmware/XX_vmware.sh b/os-plugins/plugins/vmware/XX_vmware.sh deleted file mode 100644 index 26b49cc5..00000000 --- a/os-plugins/plugins/vmware/XX_vmware.sh +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2007..2009 - RZ Uni Freiburg -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# TODO: -# configs nach /etc/opt/openslx/plugins/vmware -# cp nach run-virt.include - -# TODO: nvram,functions -# write /etc/vmware/config (if a non-standard location of vmware basedir is -# to be configured), /etc/init.d/vmware - -# include default directories -. /etc/openslx.conf - -ETCDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR} -PLUGINCONFDIR=${ETCDIR}/plugins/vmware -BINDIR=/mnt/${OPENSLX_DEFAULT_BINDIR} -PLUGINDIR=/mnt/${OPENSLX_DEFAULT_DIR}/plugin-repo/vmware -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR} - -# check if the configuration file is available -if [ -e /initramfs/plugin-conf/vmware.conf ]; then - - # load needed variables - . /initramfs/plugin-conf/vmware.conf - - # Test if this plugin is activated... more or less useless with the - # new plugin system - if [ $vmware_active -ne 0 ]; then - - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'vmware' os-plugin ..."; - # Load general configuration - . /initramfs/machine-setup - - testmkd /mnt/tmp/vmware 1777 - testmkd /dev/shm/vmware 1777 - testmkd /mnt/var/run/vmware 1777 - testmkd ${PLUGINCONFDIR} - testmkd /mnt/etc/vmware/udhcpd - - # write the ${PLUGINCONFDIR}/vmware.conf file - # check for the several variables and write the several files: - # dhcpd.conf for vmnet* interfaces - # nat.conf for the NAT configuration of vmnet8 - # TODO: vmnet-natd-8.mac not clear if really needed and which mac it - # should contain (seems to be an average one) - echo -e "# configuration file for vmware background services written in \ -stage3 setup" > ${PLUGINCONFDIR}/vmware.conf - if [ "$vmware_bridge" = 1 ] ; then - echo "vmnet0=true" >> ${PLUGINCONFDIR}/vmware.conf - fi - - # variable might contain ",NAT" which is to be taken off - if [ -n "$vmware_vmnet1" ] ; then - local vmnet1=${vmware_vmnet1%,*} # x.x.x.x/yy,NAT => 'x.x.x.x/yy' - local vmnat=${vmware_vmnet1#$vmnet1*} # x.x.x.x/yy,NAT => ',NAT' - local vmip=${vmnet1%/*} # x.x.x.x/yy => 'x.x.x.x'"> - local vmpx=${vmnet1#*/} # x.x.x.x/yy => 'yy' - local vmsub=$(echo $vmip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x - echo -e "vmnet1=$vmnet1" >> ${PLUGINCONFDIR}/vmware.conf - [ -n "$vmnat" ] && echo "vmnet1nat=true" >> ${PLUGINCONFDIR}/vmware.conf - # setting up the udhcpd configuration - sed -e "s,NWIF,vmnet1,;s,/misc/,/vmware/," \ - -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet1.pid," \ - -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet1.leases," \ - /mnt/etc/opt/openslx/udhcpd.conf >/mnt/etc/vmware/udhcpd/udhcpd-vmnet1.conf - fi - - # vmware nat interface configuration - if [ -n "$vmware_vmnet8" ] ; then - local vmnet8ip=${vmware_vmnet8%/*} - local vmpx=${vmware_vmnet8#*/} - local vmsub=$(echo $vmnet8ip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x"> - # vmip is user for vmnet8 device - # vmnet is user for config files nat.conf/dhcp - local vmip="${vmsub}.1" - local vmnet="${vmsub}.2" - echo -e "vmnet8=$vmip/$vmpx" >>${PLUGINCONFDIR}/vmware.conf - # setting up the udhcpd configuration - sed -e "s,NWIF,vmnet8,;s,/misc/,/vmware/," \ - -e "s,CNETWORK,$vmsub,;s,PIDFILE,/var/run/vmware/udhcpd-vmnet8.pid," \ - -e "s,LEASEFILE,/var/run/vmware/udhcpd-vmnet8.leases," \ - /mnt/etc/opt/openslx/udhcpd.conf >/mnt/etc/vmware/udhcpd/udhcpd-vmnet8.conf - # might be not needed any more ... - echo -e "# Linux NAT configuration file" \ - > /mnt/etc/vmware/nat.conf - echo -e "[host]" \ - >> /mnt/etc/vmware/nat.conf - echo -e "ip = $vmnet/$vmpx" \ - >> /mnt/etc/vmware/nat.conf - echo -e "device = /dev/vmnet8" \ - >> /mnt/etc/vmware/nat.conf - echo -e "activeFTP = 1" \ - >> /mnt/etc/vmware/nat.conf - echo -e "[udp]" \ - >> /mnt/etc/vmware/nat.conf - echo -e "timeout = 60" \ - >> /mnt/etc/vmware/nat.conf - echo -e "[incomingtcp]" \ - >> /mnt/etc/vmware/nat.conf - echo -e "[incomingudp]" \ - >> /mnt/etc/vmware/nat.conf - echo "00:50:56:F1:30:50" > /mnt/etc/vmware/vmnet-natd-8.mac - fi - # copy the runlevel script to the proper place and activate it - sed "s/eth0/$nwif/g" ${PLUGINDIR}/vmware-slx > /mnt/etc/init.d/vmware-env \ - || echo " * Error copying runlevel script. Shouldn't happen." - chmod a+x /mnt/etc/init.d/vmware-env - rllinker "vmware-env" 20 2 - - ############################################################################ - # vmware stuff first part: two scenarios - # * VM images in /usr/share/vmware - then simply link - # * VM images via additional mount (mount source NFS, NBD, ...) - - # get source of vmware image server (get type, server and path) - if strinstr "/" "${vmware_imagesrc}" ; then - vmimgprot=$(uri_token ${vmware_imagesrc} prot) - vmimgserv=$(uri_token ${vmware_imagesrc} server) - vmimgpath="$(uri_token ${vmware_imagesrc} path)" - fi - if [ -n "${vmimgserv}" -a -n ${vmimgpath} -a -n ${vmimgprot} ] ; then - mnttarget=${VIRTDIR}/vmware - # mount the vmware image source readonly (ro) - fsmount ${vmimgprot} ${vmimgserv} ${vmimgpath} ${mnttarget} ro - else - [ $DEBUGLEVEL -gt 1 ] && error " * Incomplete information in variable \ -${vmware_imagesrc}." nonfatal - fi - - ############################################################################ - # vmware stuff second part: setting up the environment - # make udhcpd more silent - touch /mnt/var/run/vmware/udhcpd-vmnet1.leases \ - /mnt/var/run/vmware/udhcpd-vmnet8.leases - - # create the needed devices which effects all vmware options - # they are not created automatically via module load - for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \ - "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do - mknod $i - done - chmod 0700 /dev/vmnet* - - echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab - # needed for VMware 5.5.4 and versions below - echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \ - >>/mnt/etc/init.d/boot.slx - - # allow VMware swapping if RamZSWAP is enabled - if grep -E "^ramzswap.*1 -.*" /proc/modules ; then - echo -e '.encoding = "UTF-8"\nprefvmx.minVmMemPct = "50" -prefvmx.useRecommendedLockedMemSize = "TRUE"' | sed -e "s/^ *//" \ - >/mnt/etc/vmware/config - else - # disable VMware swapping else - echo -e '.encoding = "UTF-8"\nprefvmx.minVmMemPct = "100" -prefvmx.useRecommendedLockedMemSize = "TRUE"' | sed -e "s/^ *//" \ - >/mnt/etc/vmware/config - fi - - # copy virtualization include files to config dir - cp ${PLUGINDIR}/run-virt.include ${PLUGINCONFDIR} - # copy version depending files - cp ${PLUGINDIR}/${vmware_kind}/vmplayer ${BINDIR}/vmplayer - if [ -e ${PLUGINDIR}/${vmware_kind}/vmware ]; then - cp ${PLUGINDIR}/${vmware_kind}/vmware ${BINDIR}/vmware - fi - - # affects only kernel and config depending configuration of not - # local installed versions - cat ${PLUGINDIR}/${vmware_kind}/config >>/mnt/etc/vmware/config - chmod 644 /mnt/etc/vmware/config - echo "# stage1 variables produced during plugin install" \ - >>${PLUGINCONFDIR}/vmware.conf - cat ${PLUGINDIR}/${vmware_kind}/vmware.conf >>${PLUGINCONFDIR}/vmware.conf - - # if /tmp resides on nfs: create an empty container file for vmware *.vmem - # it does not like to live on NFS exports (still needed??) - #if [ cat /proc/mounts|grep -qe "^/tmp "|grep -qe "nfs" ] ; then - # dd if=/dev/zero of=/mnt/tmp/vm-container count=1 seek=2048000 - # diskfm /mnt/tmp/vm-container /mnt/tmp/vmware - # chmod a+rwxt /mnt/tmp/vmware - #fi - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmware' os-plugin ..." - - fi -else - [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of vmware plugin failed" -fi diff --git a/os-plugins/plugins/vmware/files/README b/os-plugins/plugins/vmware/files/README deleted file mode 100644 index ae8bf1e7..00000000 --- a/os-plugins/plugins/vmware/files/README +++ /dev/null @@ -1,12 +0,0 @@ -Files -- nvram (version from VMware5) - This nvram supports a second Floppy drive. Helpfull if you want to - get some data from linux to your Windows VirtualMachine (like - Scanner-IP or Userinformation) -- run-virt.include - The main include script for the vmchooser plugin run-virt.sh vir- - tualization environments start script. All vmware related stuff like - the creation of the configuration file is handled within this script. -- install-vmpl.sh - Install script, can handle different vmware version installations - diff --git a/os-plugins/plugins/vmware/files/install-vmpl.sh b/os-plugins/plugins/vmware/files/install-vmpl.sh deleted file mode 100644 index e0795b30..00000000 --- a/os-plugins/plugins/vmware/files/install-vmpl.sh +++ /dev/null @@ -1,284 +0,0 @@ -#!/bin/sh - -cd /opt/openslx/plugin-repo/vmware/ - -### Check if player are still installed -if [ -d ${1}/vmroot/ ]; then - echo " * $1 seems to be installed. There shouldn't be a need for a new installation." - echo " If you want to reinstall $1 press \"y\" else we will exit" - read - if [ "${REPLY}" != "y" ]; then - echo " * $1 is already installed. Nothing to do." - exit - fi - echo " * $1 will be reinstalled" -fi - - -### Now define values -if [ "$1" = "vmpl1.0" ]; then - vmplversion="vmpl1.0" - tgzfile=$(ls packages/VMware-player-1.0.*|sort|tail -n 1) -elif [ "$1" = "vmpl2.0" ]; then - vmplversion="vmpl2.0" - tgzfile=$(ls packages/VMware-player-2.0.*|sort|tail -n 1) -elif [ "$1" = "vmpl2.5" ]; then - vmplversion="vmpl2.5" - tgzfile=$(ls packages/VMware-Player-2.5.*.bundle|sort|tail -n 1) -else - echo "Attribute of install-vmpl.sh isn't valid!" - echo "This shouldn't happen! Fix vmware.pm!" - exit 1; -fi - - -### Main installation part -if [ "${vmplversion}" != "vmpl2.5" ]; then - # tgz Installation of vmpl1.0 and vmpl2.0 - cd ${vmplversion} - - echo " * Unpacking vmplayer ${vmplversion}" - tar xfz ../${tgzfile} - # TODO: errorcheck if tgz wasnt downloaded properly. - # ask on mailinglist if theres a way how to handle it - # in preInstallation() "exit 1" is enough. Perhaps it will work - # here, too. Try first, and then document it in the wiki - - # reduce some errors - echo " * deleting old files if available" - rm -rf vmroot - - echo " * copying files..." - mkdir vmroot - mkdir -p vmroot/modules - mkdir -p vmroot/lib - mv vmware-player-distrib/lib vmroot/lib/vmware - mv vmware-player-distrib/bin vmroot/ - if [ "${vmplversion}" != "vmpl1.0" ]; then - mv vmware-player-distrib/sbin vmroot/ - fi - mv vmware-player-distrib/doc vmroot/ - rm -rf vmware-player-distrib/ - rm -rf vmroot/lib/vmware/modules/binary - - echo " * fixing file permission" - chmod 04755 vmroot/lib/vmware/bin/vmware-vmx - - # I don't want to understand what vmware is doing, but without this - # step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to - # library hell - echo " * fixing librarys..." - cd vmroot/lib/vmware/lib - mkdir test - mv lib* test - mv test/lib*/* . - rm -rf test - cd ../../../.. - - echo " * fixing gdk and pango config files" - sed -i \ - "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders - sed -i \ - "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules - sed -i \ - "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/pango/pango.modules - sed -i \ - "s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/pango/pangorc - sed -i \ - "s,/etc/pango/pango/,/etc/pango/," \ - vmroot/lib/vmware/libconf/etc/pango/pangorc - - echo " * creating /etc/vmware" - rm -rf /etc/vmware - mkdir -p /etc/vmware - - echo " * unpacking kernel modules" - cd vmroot/lib/vmware/modules/source - tar xf vmnet.tar - tar xf vmmon.tar - if [ "${vmplversion}" != "vmpl1.0" ]; then - tar xf vmblock.tar - fi - - echo " * building vmblock module" - if [ "${vmplversion}" != "vmpl1.0" ]; then - cd vmblock-only/ - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmblock.ko vmblock.o ../../../../../modules - cd .. - fi - - echo " * building vmmon module" - cd vmmon-only - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmmon.ko vmmon.o ../../../../../modules - cd .. - - echo " * building vmnet module" - cd vmnet-only - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmnet.ko vmnet.o ../../../../../modules - cd ../../../../../.. - - echo " * setting up EULA" - mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt - - echo " * finishing installation" - - -else - # bundle Installation of vmpl2.5 - # note: the rpm just include the stupid .bundle file... - cd ${vmplversion} - - echo " * Manipulating and extracting vmplayer ${vmplversion} package. this may take a while" - - # fool non-root user extraction... just for testing - sed -i 's/ exit 1/ echo 1/' ../${tgzfile} - # don't use deinstallation stuff and checks of /etc... - # and don't modify file size, else it wont work! - sed -i 's/ migrate_networks/ echo te_networks/' ../${tgzfile} - sed -i 's/ uninstall_legacy/ echo tall_legacy/' ../${tgzfile} - sed -i 's/ uninstall_rpm/ echo tall_rpm/' ../${tgzfile} - sed -i 's/ uninstall_bundle/ echo tall_bundle/' ../${tgzfile} - # this won't work as root on our clients... I hope it don't break - # anything on our clients in stage1 - sh ../${tgzfile} -x temp - # TODO: errorcheck if rpm wasnt downloaded properly. - # ask on mailinglist if theres a way how to handle it - # in preInstallation() "exit 1" is enough. Perhaps it will work - # here, too. Try first, and then document it in the wiki - - # reduce some errors - echo " * deleting old files if available" - rm -rf vmroot - - echo " * copying files..." - mkdir -p vmroot - mkdir -p vmroot/lib - mkdir -p vmroot/modules - - mv temp/vmware-player/lib vmroot/lib/vmware - mv temp/vmware-player/sbin vmroot/ - # the following shouldn't be needed, just to have it 1:1 self-created - # copy of /usr/lib/vmware - # Todo: clean it out when everything is running - mv temp/vmware-installer vmroot/lib/vmware/installer - rm -rf vmroot/lib/vmware/installer/.installer - rm -rf vmroot/lib/vmware/installer/bootstrap - mkdir -p vmroot/lib/vmware/setup - mv temp/vmware-player-setup/vmware-config vmroot/lib/vmware/setup - mv temp/vmware-player/doc vmroot/ - mv temp/vmware-player/bin vmroot/ - - ## - ## left files/dirs - ## - # temp/vmware-player/files/index.theme ... hopefully not needed, - # temp/vmware-player/share => /usr/share ... icons - # temp/vmware-player/etc/... => /etc - # temp/vmware-player/build => unknown... not found... - - - # etc/vmware/ - # bootstrap => Path definitions. confusing due of version 1.0 - # which looks like the instller version - # perhaps just for installer... hopefully - # config => path definition, networking, different configurations - # database => sqlite3 db. includes all files mapped to component - # hopefully just used by installer and some path config - # networking => networking config... has options which are in - # dhcpd.conf, hopefully not needed - # vmnet(1|8) => we know it from v1/v2 - - echo " * fixing file permission" - chmod 755 vmroot/lib/vmware/bin/* - chmod 04755 vmroot/lib/vmware/bin/vmware-vmx - chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-debug - chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-stats - chmod 755 vmroot/bin/* - chmod 755 vmroot/lib/vmware/lib/wrapper-gtk24.sh - - # I don't want to understand what vmware is doing, but without this - # step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to - # library hell - # if this fact is still valid for 2.5 is unclear, but lets do it - echo " * fixing librarys..." - cd vmroot/lib/vmware/lib - mkdir test - mv lib* test - mv test/lib*/* . - rm -rf test - cd ../../../.. - - echo " * fixing gdk and pango config files" - sed -i \ - "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders - sed -i \ - "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules - sed -i \ - "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/pango/pango.modules - sed -i \ - "s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \ - vmroot/lib/vmware/libconf/etc/pango/pangorc - sed -i \ - "s,/etc/pango/pango/,/etc/pango/," \ - vmroot/lib/vmware/libconf/etc/pango/pangorc - - echo " * creating /etc/vmware" - rm -rf /etc/vmware - mkdir -p /etc/vmware - - echo " * unpacking kernel modules" - cd vmroot/lib/vmware/modules/source - tar xf vmnet.tar - tar xf vmmon.tar - tar xf vmblock.tar - #tar xf vmci.tar # just for 2 or more VMs => not needed - #tar xf vmppuser.tar # we don't need it - tar xf vsock.tar - - echo " * building vmblock module" - cd vmblock-only/ - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmblock.ko vmblock.o ../../../../../modules - cd .. - - echo " * building vmmon module" - cd vmmon-only - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmmon.ko vmmon.o ../../../../../modules - cd .. - - echo " * building vmnet module" - cd vmnet-only - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vmnet.ko vmnet.o ../../../../../modules - cd .. - - echo " * building vmsock module" - cd vsock-only - sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile - make -s - mv vsock.ko vsock.o ../../../../../modules - cd ../../../../../.. - - echo " * setting up EULA" - mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt - - echo " * finishing installation" - -fi diff --git a/os-plugins/plugins/vmware/files/nvram b/os-plugins/plugins/vmware/files/nvram Binary files differdeleted file mode 100644 index 85125f1e..00000000 --- a/os-plugins/plugins/vmware/files/nvram +++ /dev/null diff --git a/os-plugins/plugins/vmware/files/run-virt.include b/os-plugins/plugins/vmware/files/run-virt.include deleted file mode 100644 index 2010dc4b..00000000 --- a/os-plugins/plugins/vmware/files/run-virt.include +++ /dev/null @@ -1,448 +0,0 @@ -# run-virt.include -# ----------------------------------------------------------------------------- -# Copyright (c) 2009..2010 - RZ Uni Freiburg -# Copyright (c) 2009..2010 - 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/ -# ----------------------------------------------------------------------------- -# run-virt.include -# - component for vmware/player of the vmchooser plugin run-virt.sh -################################################################################ - -# configuration writer functions -################################################################################ - -runvmwareconfheader () -{ -echo "# This configuration file was generated by $0" >${conffile} - -case "$vmversion" in - *) - svga_autodetect="TRUE" - numvcpus="1" - shared_folder="FALSE" - echo ".encoding = \"UTF-8\" -# version specific stuff - all versions -config.version = \"8\"" >>${conffile} - ;; -esac -case "$vmversion" in - 2.*|3.*|6.*|7.*) - shared_folder="TRUE" - echo " -# version specific stuff - ver. 2.*|3.*|6.*|7.* -sharedFolder.option = \"alwaysEnabled\"" >>${conffile} - ;; -esac -case "$vmversion" in - 2.5|3.*|6.5|7.*) - if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then - numvcpus="2" - fi - cap3d="TRUE" # helper var for loging output - echo " -# version specific stuff - ver. 2.5|3.*|6.5|7.* -ehci.present = \"TRUE\" -mks.enable3d = \"${enable3d}\"" >>${conffile} - ;; -esac -case "$vmversion" in - 3.*|7.*) - numvcpus="${cpu_cores}" - # svga_autodetect="FALSE" # if defined manual, see below - echo " -# version specific stuff - ver. 3.*|7.* -cpuid.coresPerSocket = \"${cpu_cores}\" -maxvcpus = \"4\" -# svga.numDisplays = "2" -# svga.maxWidth = "2560" -# svga.maxHeight = "2048" -# svga.vramSize = "134217728" -monitor.virtual_mmu = \"automatic\" -monitor.virtual_exec = \"automatic\" -floppy1.clientDevice = \"FALSE\" -floppy1.readonly = \"TRUE\"" >>${conffile} - ;; -esac - -echo " -# id -virtualHW.version = \"${hwver}\" -displayName = \"${displayname}\" -guestOS = \"${vmostype}\" - -# CPU/MEM -numvcpus = \"${numvcpus}\" -memsize = \"${mem}\" -MemAllowAutoScaleDown = \"FALSE\" -MemTrimRate = \"-1\" - -# ide-disks -ide0:0.present = \"${ide}\" -ide0:0.fileName = \"${diskfile}\" -ide0:0.mode = \"independent-nonpersistent\" -ide1:0.present = \"${cdrom0}\" -ide1:0.autodetect = \"TRUE\" -ide1:0.fileName = \"auto detect\" -ide1:0.deviceType = \"cdrom-raw\" -ide1:1.present = \"${cdrom1}\" -ide1:1.autodetect = \"TRUE\" -ide1:1.fileName = \"auto detect\" -ide1:1.deviceType = \"cdrom-raw\" - -# scsi-disks -scsi0.present = \"${scsi}\" -scsi0:0.present = \"${scsi}\" -scsi0:0.fileName = \"${diskfile}\" -scsi0.virtualDev = \"${hddrv}\" -scsi0:0.mode = \"independent-nonpersistent\" - -# floppies -floppy0.present = \"${floppy0}\" -floppy0.startConnected = \"FALSE\" -floppy0.autodetect = \"TRUE\" -floppy0.fileName = \"auto detect\" -# we need floppy b: for our windows client configuration -floppy1.present = \"${floppy1}\" -floppy1.startConnected = \"TRUE\" -floppy1.fileType = \"file\" -floppy1.fileName = \"${floppy1name}\" - -# nics -ethernet0.present = \"TRUE\" -ethernet0.addressType = \"static\" -${network_virtualDev} -ethernet0.connectionType = \"${network_kind}\" -#ethernet1.connectionType = \"custom\" -#ethernet1.vnet = \"/dev/vmnet2\" -ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\" -ethernet0.wakeOnPcktRcv = \"FALSE\" - -# sound -sound.present = \"TRUE\" -sound.fileName = \"-1\" -sound.autodetect = \"TRUE\" - -# svga -svga.autodetect = \"${svga_autodetect}\" - -# usb -usb.present = \"TRUE\" -usb.generic.autoconnect = \"TRUE\" - -# shared folders -sharedFolder0.present = \"TRUE\" -sharedFolder0.enabled = \"${shared_folder}\" -sharedFolder0.expiration = \"never\" -sharedFolder0.guestName = \"${sharename}\" -sharedFolder0.hostPath = \"${sharepath}\" -sharedFolder0.readAccess = \"TRUE\" -sharedFolder0.writeAccess = \"TRUE\" -sharedFolder.maxNum = \"1\" - -# dirs/configs -tmpDirectory = \"${redodir}\" -redoLogDir = \"${redodir}\" -mainMem.useNamedFile = \"TRUE\" -snapshot.disabled = \"TRUE\" -tools.syncTime = \"TRUE\" -isolation.tools.hgfs.disable = \"FALSE\" -hgfs.mapRootShare = \"TRUE\" -isolation.tools.dnd.disable = \"FALSE\" -isolation.tools.copy.enable = \"TRUE\" -isolation.tools.paste.enabled = \"TRUE\" - -# serial port -serial0.present = \"${serial}\" -${serialdev} - -# parallel port -parallel0.present = \"${parallel}\" -parallel0.bidirectional = \"${paralbidi}\" -${paraldev}" >>${conffile} - -# set the appropriate permissions for the vmware config file -chmod u+rwx ${conffile} >/dev/null 2>&1 -} - -preferencesheader () -{ -echo ".encoding = \"UTF-8\" -# This configuration file was generated by $0 - -# updates/tips -webUpdate.enabled = \"FALSE\" -pref.downloadPermission = \"deny\" -pref.vmplayer.downloadPermission = \"deny\" -pref.vmplayer.webUpdateOnStartup = \"FALSE\" -pref.tip.startup = \"FALSE\" -hints.hideAll = \"TRUE\" -hint.vmui.showAllUSBDevs = \"FALSE\" - -# configs -prefvmx.defaultVMPath = \"${vmhome}\" -prefvmx.mru.config = \"${conffile}:\" - -# hot keys -pref.hotkey.control = \"true\" -pref.hotkey.alt = \"true\" -pref.hotkey.shift = \"true\" -pref.hotkey.gui = \"true\" -gui.restricted = \"true\" - -# fullscreen/mouse/keyboard -pref.fullscreen.toolbarPixels = \"0\" -pref.vmplayer.fullscreen.autohide = \"TRUE\" -pref.grabOnMouseClick = \"TRUE\" -pref.grabOnKeyPress = \"FALSE\" -pref.motionGrab = \"TRUE\" -pref.motionUngrab = \"TRUE\" -pref.hideCursorOnUngrab = \"TRUE\" -pref.autoFit = \"TRUE\" -pref.autoFitFullScreen = \"fitGuestToHost\" -pref.vmplayer.exit.vmAction = \"poweroff\" -pref.vmplayer.confirmOnExit = \"TRUE\" - -# shared folders -pref.enableAllSharedFolders = \"TRUE\" - -# eula -pref.eula.size = \"2\" -pref.eula.0.appName = \"VMware Player\" -pref.eula.0.buildNumber = \"${vmbuild}\" -pref.eula.1.appName = \"VMware Workstation\" -pref.eula.1.buildNumber = \"${vmbuild}\"" >${vmhome}/preferences -} - - -# declaration of default variables -################################################################################ - -# VM-ID static (0D), remove if changed to 00 -VM_ID="0D" -# temporary disk space for logs, etc... -redodir=/tmp/vmware/${USER} -# dir for configs and vmem file -confdir=${redodir} -# configfile -conffile="${confdir}/run-vmware.conf" -# diskfile -diskfile=${vmpath} -# users vmware config folder -vmhome="${HOME}/.vmware" - -# get several version infos for vmware/player -. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf -vmbuild=$buildversion -vmversion=$version - -# VMware start options -# "-X": start in fullscreen -vmopt="-X" - - -# hardware checks -################################################################################ - -# use different network card -if [ -n "${network_card}" ]; then - network_virtualDev='ethernet0.virtualDev = "e1000"' -else - network_virtualDev='# using default virtualDev for ethernet0' -fi - -case "$enable3d" in - *true*|*TRUE*|*yes*|*YES*) - enable3d="TRUE" - ;; - *) - enable3d="FALSE" - ;; -esac - -# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect") -case "$serial" in - tty*) - serialdev="serial0.filename = \"/dev/${serial}\"" - serial="TRUE" - ;; - auto*) - serialdev="serial0.autodetect = \"TRUE\"" - serial="TRUE" - ;; - *) - serialdev="# no serial port configured" - serial="FALSE" - ;; -esac -case "$parallel" in - lp*|parport*) - paraldev="parallel0.filename = \"/dev/${parallel}\"" - paralbidi="TRUE" - parallel="TRUE" - ;; - auto*) - paraldev="parallel0.autodetect = \"TRUE\"" - paralbidi="TRUE" - parallel="TRUE" - ;; - *) - paraldev="# no parallel port configured" - paralbidi="FALSE" - parallel="FALSE" - ;; -esac - -# adjust memory available for vmware guests -#if [ -n "${forcemem}" ]; then -# mem="${forcemem}" -#else -# case "$vmversion" in -# 2.*|6.*) -# permem=30 -# ;; -# 3.*|7.*) -# permem=25 -# ;; -# esac -# if [ "${totalmem}" -ge "2500" ]; then -# permem=40 -# fi -# # check if /tmp is on harddisk -# if grep -qe "/dev/.* /tmp " /proc/mounts ; then -# permem=60 -# id44="1" -# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well -# # (40% vmware | 40% confdir(vmem...) | 20% host -# # VMplayer 2+ issue -# if [ "${totalmem}" -ge "2500" ]; then -# permem=40 -# confdir=/dev/shm/vmware/$USER -# conffile=${confdir}/run-vmware.conf -# mkdir -p /dev/shm/vmware/$USER -# fi -# fi -# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) -# if [ "${id44}" = "1" ]; then -# hostmem=$(expr ${totalmem} - ${mem}) -# else -# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) -# fi -#fi - -# check if ide/scsi and hwver of image -# read only the first 30 lines to be shure -imghead=$(head -30 ${diskfile}) -hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\ - awk -F '"' '{print $2}') -hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\ - awk -F '"' '{print $2}') -case "${hddrv}" in - ide) - ide="TRUE" - scsi="FALSE" - ;; - lsilogic|buslogic) - ide="FALSE" - scsi="TRUE" - ;; -esac - - -# write configuration files -################################################################################ - -# create vmware directories -mkdir -p ${redodir} >/dev/null 2>&1 -mkdir -p ${confdir} >/dev/null 2>&1 -mkdir -p ${vmhome} >/dev/null 2>&1 - -# create preferences -preferencesheader - -# create VMware startup file -runvmwareconfheader -# link to conffile if confdir != redodir -ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1 - -# sync is needed to ensure that data is really written to virtual disk -sync - -# own nvram. We need it for floppy drive b, default nvram has just drive a -# TODO: optimize, currently kinda inefficient, too much copys, but we -# don't know which one is installed... -for i in /opt/openslx/plugin-repo/vmware/*; do - cp ${i}/nvram ${confdir}/nvram 2>/dev/null -done - - -# logging and stdout -################################################################################ - -# log script information -writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n" -writelog "Starting with non-persistent mode ...\n" - -# check memory range -if [ "${mem}" -lt "256" ] || [ "${hostmem}" -lt "256" ]; then - writelog "\tMemory out of range: ${mem} MB (guest) / ${hostmem} MB (host)!" - writelog "\tMin. 256 MB for host and guest!" - exit 1 -fi - -# write all results to logfile -# log disksetup -writelog "Directories:" -writelog "\tConfdir:\t${confdir}" -writelog "\tConffile:\t${conffile}" -writelog "\tRedodir:\t${redodir}" -writelog "\tVMhome:\t\t${vmhome}" -writelog "\t/tmp info: \ - $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" -# hw setup -writelog "Hardware:" -writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}" -if [ -n "${network_card}" ]; then - writelog "\tNet Adaptor:\t${network_card}" -fi -writelog "\tMem:\t\t${mem} MB" -# echo nur wenn hostmem gesetzt -[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB" -writelog "\tMax. res.:\t${xres}x${yres}" -writelog "\tCD-ROM1:\t${cdrom0}" -writelog "\tCD-ROM2:\t${cdrom1}" -writelog "\tFloppy_A:\t${floppy0}" -if [ "${serial}" = "TRUE" ]; then - writelog "\tSerial Port:\t${serialdev}" -fi -if [ "${parallel}" = "TRUE" ]; then - writelog "\tParallel Port:\t${paraldev}" -fi -# image -writelog "Diskimage:" -writelog "\tDiskfile:\t${diskfile}" -writelog "\tDisktype:\t${hddrv}" -writelog "\tHWVersion:\t${hwver}" -writelog "\tVMostype:\t${vmostype}" -# misc -writelog "Misc:" -writelog "\tDisplayname:\t${displayname}" -if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then - writelog "\t3D Graphics:\tenabled" -fi -# empty line at end -writelog "" - - -# finally set env for run-virt.sh -################################################################################ - -# using the modified version of the wrapper script -VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer" -VIRTCMDOPTS="${vmopt} ${conffile}" diff --git a/os-plugins/plugins/vmware/init-hooks/20-nw-bridge-config/bridge.sh b/os-plugins/plugins/vmware/init-hooks/20-nw-bridge-config/bridge.sh deleted file mode 100755 index 3ae7e946..00000000 --- a/os-plugins/plugins/vmware/init-hooks/20-nw-bridge-config/bridge.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Copyright (c) 2009..2010 - 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical to the files of virtualbox and qemukvm plugins) -############################################################################# - -local bridge=br0 -local brnwif=${nwif} -local nwifmac=${macaddr} - -# bridge 0 already defined or some other problem -brctl addbr ${bridge} || exit 0 -brctl stp ${bridge} 0 -brctl setfd ${bridge} 0.000000000001 -ip link set addr ${nwifmac} ${bridge} -ip link set dev ${nwif} up -brctl addif ${bridge} ${nwif} - -# fixme: sending back the variable to init does not work properly at the -# moment -nwif=${bridge} diff --git a/os-plugins/plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh b/os-plugins/plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh deleted file mode 100755 index b4f02389..00000000 --- a/os-plugins/plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 - 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical in vmware, virtualbox and qemukvm plugins) -############################################################################# - -. /etc/openslx.conf - -CONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR} -testmkd ${CONFDIR} - -# configuring dhcpd stub for virtual networks -cat > ${CONFDIR}/udhcpd.conf << EOF -# general udhcpd configuration file for virtual machines written by -# $0 during OpenSLX stage3 configuration - -# start and end of the IP lease block -start CNETWORK.20 -end CNETWORK.100 - -# interface that udhcpd will use -interface NWIF - -# how long an offered address is reserved (leased) in seconds -offer_time 6000 - -# location of the leases file -lease_file LEASEFILE - -# location of the pid file -pidfile PIDFILE - -option dns ${domain_name_servers} -option subnet 255.255.255.0 -option router CNETWORK.1 -option wins CNETWORK.10 -option domain virtual.site ${domain_name} - -# additional options known to udhcpd -#subnet #timezone -#router #timesvr -#namesvr #dns -#logsvr #cookiesvr -#lprsvr #bootsize -#domain #swapsvr -#rootpath #ipttl -#mtu #broadcast -#wins #lease -#ntpsrv #tftp -#bootfile -EOF diff --git a/os-plugins/plugins/vmware/init-hooks/80-after-plugins/adapt-tmpfs.sh b/os-plugins/plugins/vmware/init-hooks/80-after-plugins/adapt-tmpfs.sh deleted file mode 100644 index a28a8c6f..00000000 --- a/os-plugins/plugins/vmware/init-hooks/80-after-plugins/adapt-tmpfs.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# Copyright (c) 2010 - 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to adapt the tmpfs size for VMware/Player -# (should be kept identical to the files of virtualbox plugin) -############################################################################# - -# adapt tmpfs size (overbook) -case $(grep tmpfs /proc/mounts) in - */tmp*) - mount -o remount,size=160% /mnt/tmp - ;; - */uniontmp*) - mount -o remount,size=160% /mnt/uniontmp - ;; -esac diff --git a/os-plugins/plugins/wlanboot/OpenSLX/OSPlugin/wlanboot.pm b/os-plugins/plugins/wlanboot/OpenSLX/OSPlugin/wlanboot.pm deleted file mode 100644 index ab1c614e..00000000 --- a/os-plugins/plugins/wlanboot/OpenSLX/OSPlugin/wlanboot.pm +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright (c) 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/ -# ----------------------------------------------------------------------------- -# wlanboot.pm -# - an wlanboot extension to the stage3 system -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::wlanboot; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use Data::Dumper; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'wlanboot', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - wlanboot is an extension for stage 3 - End-of-Here - precedence => 50, - }; -} - -sub getAttrInfo -{ # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'wlanboot::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'wlanboot'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'wlanboot::activenics' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - kernel modules to load .. - End-of-Here - content_regex => '', - content_descr => 'space seperated list of kernel modules (without .ko)', - default => 'iwl3945 arc4 ecb', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - my $openslxConfigPath = $info->{'openslx-config-path'}; - my $attrs = $info->{'plugin-attrs'}; - - my $filesDir = "$openslxBasePath/lib/plugins/wlanboot/files"; - slxsystem("cp -r $filesDir $pluginRepoPath/"); - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - - return; -} - -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $info = shift; - - my $attrs = $info->{'attrs'}; - - my @suggestedKernelModules; - - print Dumper(split(/ /, $attrs->{'wlanboot::activenics'})); - push(@suggestedKernelModules, split(/ /, $attrs->{'wlanboot::activenics'} )); - - return @suggestedKernelModules; -} - -sub copyRequiredFilesIntoInitramfs -{ - my $self = shift; - my $targetPath = shift; - my $attrs = shift; - my $makeInitRamFSEngine = shift; - my $pluginRepoPath = "$openslxConfig{'base-path'}/lib/plugins/wlanboot"; - - $makeInitRamFSEngine->addCMD( - "cp -p $pluginRepoPath/files/bin/* $targetPath/bin/" - ); - $makeInitRamFSEngine->addCMD( - "cp -a $pluginRepoPath/files/firmware $targetPath/lib" - ); - $makeInitRamFSEngine->addCMD( - "cp -a $pluginRepoPath/files/lib $targetPath/" - ); - vlog(1, _tr("wlanboot-plugin: ...")); - - return; -} - -1; diff --git a/os-plugins/plugins/wlanboot/XX_wlanboot.sh b/os-plugins/plugins/wlanboot/XX_wlanboot.sh deleted file mode 100644 index c33c1e19..00000000 --- a/os-plugins/plugins/wlanboot/XX_wlanboot.sh +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'wlanboot' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -if [ -e /initramfs/plugin-conf/wlanboot.conf ]; then - . /initramfs/plugin-conf/wlanboot.conf - if [ $wlanboot_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'wlanboot' os-plugin ..."; - #iwconfig wlan0 essid "wlanboottest" - #ip link set wlan0 up - #udhcpc -i wlan0 - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'wlanboot' os-plugin ..."; - - fi -fi diff --git a/os-plugins/plugins/wlanboot/files/bin/iwconfig b/os-plugins/plugins/wlanboot/files/bin/iwconfig Binary files differdeleted file mode 100755 index 42c18ca1..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwconfig +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwevent b/os-plugins/plugins/wlanboot/files/bin/iwevent Binary files differdeleted file mode 100755 index bf9b921b..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwevent +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwgetid b/os-plugins/plugins/wlanboot/files/bin/iwgetid Binary files differdeleted file mode 100755 index a310ee85..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwgetid +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwlist b/os-plugins/plugins/wlanboot/files/bin/iwlist Binary files differdeleted file mode 100755 index 9597d4d4..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwlist +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwpriv b/os-plugins/plugins/wlanboot/files/bin/iwpriv Binary files differdeleted file mode 100755 index a9fd399e..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwpriv +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwspy b/os-plugins/plugins/wlanboot/files/bin/iwspy Binary files differdeleted file mode 100755 index 2bded1e1..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwspy +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/bin/iwtest b/os-plugins/plugins/wlanboot/files/bin/iwtest deleted file mode 100644 index c6846702..00000000 --- a/os-plugins/plugins/wlanboot/files/bin/iwtest +++ /dev/null @@ -1 +0,0 @@ -test file for plugin wlanboot. diff --git a/os-plugins/plugins/wlanboot/files/firmware/README b/os-plugins/plugins/wlanboot/files/firmware/README deleted file mode 100644 index 0845746d..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/README +++ /dev/null @@ -1,8 +0,0 @@ -Put all the required firmwares of WLAN adapters you would like to use in -your setup here into this subdirectory. They are copied into the InitRamFS -to be present for device configuration via modprobe/mdev in stage3. - -For more information on the "wlanboot" plugin have a look at the project -page! - -The OpenSLX Team diff --git a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-1.ucode b/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-1.ucode Binary files differdeleted file mode 100644 index 14dc7aac..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-1.ucode +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-2.ucode b/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-2.ucode Binary files differdeleted file mode 100644 index c1ea0aab..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-3945-2.ucode +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-1.ucode b/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-1.ucode Binary files differdeleted file mode 100644 index 6d67a882..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-1.ucode +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-2.ucode b/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-2.ucode Binary files differdeleted file mode 100644 index 8cf429d3..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-4965-2.ucode +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-5000-1.ucode b/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-5000-1.ucode Binary files differdeleted file mode 100644 index 5519149b..00000000 --- a/os-plugins/plugins/wlanboot/files/firmware/iwlwifi-5000-1.ucode +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/files/lib/libiw.so b/os-plugins/plugins/wlanboot/files/lib/libiw.so deleted file mode 120000 index ee7675c6..00000000 --- a/os-plugins/plugins/wlanboot/files/lib/libiw.so +++ /dev/null @@ -1 +0,0 @@ -libiw.so.29
\ No newline at end of file diff --git a/os-plugins/plugins/wlanboot/files/lib/libiw.so.29 b/os-plugins/plugins/wlanboot/files/lib/libiw.so.29 Binary files differdeleted file mode 100755 index 1fde3844..00000000 --- a/os-plugins/plugins/wlanboot/files/lib/libiw.so.29 +++ /dev/null diff --git a/os-plugins/plugins/wlanboot/init-hooks/10-nw-if-config/wlanboot.sh b/os-plugins/plugins/wlanboot/init-hooks/10-nw-if-config/wlanboot.sh deleted file mode 100755 index fee893d4..00000000 --- a/os-plugins/plugins/wlanboot/init-hooks/10-nw-if-config/wlanboot.sh +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 init-hook 10 of 'wlanboot' plugin - firing up the wlan connection - -#setting udhcpc up -mkdir -p /usr/share/udhcpc -echo -e "#!/bin/ash\nunset infomsg HOME IFS mask lease interface DEBUGLEVEL \ -BOOT_IMAGE\nset >/tmp/ipstuff" >/usr/share/udhcpc/default.script -chmod u+x /usr/share/udhcpc/default.script - -echo "! shutting down watchdog for debugging"; -killall watchdog; - -essid=$(sed -n 's/.*essid=\([^[:blank:]]*\) .*/\1/p' /proc/cmdline); -[ $DEBUGLEVEL -gt 0 ] && echo "set essid to ${essid}"; -#value of essid unchecked yet - - -# load network adaptor modules -#modprobe iwl3945 -cd /lib/modules/$(ls /lib/modules/)/kernel/drivers/net/wireless -for mod in $(find . | grep .ko | sed 's,.*/\([^/]*\).ko,\1',); do - echo "Mod:"; - echo $mod; - modprobe $mod || echo "module $mod did not load for some reason" - usleep 10000 -done -cd / - -wlanif=$(iwconfig 2>/dev/null|sed -n "/ESSID:/p"|sed "s/ .*//") -[ $DEBUGLEVEL -gt 0 ] && echo "wlancard recognized as ${wlanif}"; - -if [ -n "$wlanif" ] ; then - ip link set dev ${wlanif} up - if iwconfig ${wlanif} mode managed essid "${essid}"; then - nwif=${wlanif} - else - error " Unable to configure the WLAN interface." - fi - - - ( sleep 6 ; killall udhcpc >/dev/null 2>&1 ) & - udhcpc -f -n -q $vci -s /usr/share/udhcpc/default.script -i $nwif 2>/dev/null - if grep "ip=" /tmp/ipstuff >/dev/null 2>&1 ; then - . /tmp/ipstuff - for i in $dns ; do - echo "nameserver $i" >>/etc/resolv.conf - done - # simply add a single dns server for passing via kernel cmdline to stage3 - # (quickhack, just the last, list of dns might be better ...) - echo "dnssrv=$i" >>/tmp/ipstuff - return - else - if [ $i -eq 1 ] ; then - sleep 1 - else - echo "Did not get any proper IP configuration"; /bin/ash - fi - fi - - ip addr add $ip/$(ipcalc -s -p $ip $subnet|sed s/.*=//) dev $nwif - ip route add default via $router - [ $DEBUGLEVEL -gt 0 ] && echo "IP-Configuration: $ip on interface $wlanif." -else - error " No wireless LAN capable interface found. Did you provide the \ -proper kernel\n modules and firmware?" -fi
\ No newline at end of file diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Base.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Base.pm deleted file mode 100644 index 1e6a97a5..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the x11vnc plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub fillRunlevelScript -{ - my $self = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #! /bin/sh - # completely generic start/stop script, generated via stage1 'x11vnc' plugin - # install - # - # This script manages the services needed to run x11vnc software - - # Basic support for the Linux Standard Base Specification 1.3 - ### BEGIN INIT INFO - # Provides: x11vnc - # Required-Start: - # Required-Stop: - # Default-Start: - # Default-Stop: - # Short-Description: Manages the services needed to run x11vnc software - # Description: Manages the services needed to run x11vnc software - ### END INIT INFO - - [ -f /opt/openslx/plugin-repo/x11vnc/x11vnc-init ] \\ - && CMD="/opt/openslx/plugin-repo/x11vnc/x11vnc-init" - - case \$1 in - start) - echo "Starting x11vnc ..." - \$CMD start - ;; - stop) - # message output should match the given vendor-os - echo "Stopping x11vnc ..." - \$CMD stop - ;; - #status) - # echo "Say something useful here ..." - #;; - restart) - "\$0" stop - "\$0" start - ;; - esac - exit 0 - End-of-Here - return $script; -} - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 6623d22f..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/debian.pm -# - provides Debian-specific overrides of the Distro API for the x11vnc -# plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(x11vnc::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub fillRunlevelScript -{ - my $self = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # Ubuntu/Debian specific start/stop script, generated via stage1 'x11vnc' - # plugin install - # inspiration taken from x11vnc start script: - # Copyright 1998-2007 x11vnc, Inc. All rights reserved. - # - # This script manages the services needed to run x11vnc software - - # Basic support for the Linux Standard Base Specification 1.3 - ### BEGIN INIT INFO - # Provides: x11vnc - # Required-Start: \$syslog - # Required-Stop: - # Default-Start: 2 3 5 - # Default-Stop: 0 6 - # Short-Description: Manages the services needed to run x11vnc software - # Description: Manages the services needed to run x11vnc software - ### END INIT INFO - - # initialize the lsb status messages - . /lib/lsb/init-functions - - [ -f /opt/openslx/plugin-repo/x11vnc/x11vnc-init ] \\ - && CMD="/opt/openslx/plugin-repo/x11vnc/x11vnc-init" - - case \$1 in - start) - log_daemon_msg "Starting x11vnc background services ..." "x11vnc" - \$CMD start - log_end_msg \$? - ;; - stop) - log_daemon_msg "Stopping x11vnc background services ..." "x11vnc" - \$CMD stop - log_end_msg \$? - ;; - #status) - # log_daemon_msg "Say something useful here ..." - #;; - restart) - \$0 stop - \$0 start - exit $? - ;; - *) - log_success_msg "Usage: \$0 {start|stop|restart}" - exit 2 - ;; - esac - exit 0 - End-of-Here - return $script; -} - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Fedora.pm deleted file mode 100644 index a1678912..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Fedora.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/Fedora.pm -# - provides Fedora-specific overrides of the Distro API for the x11vnc -# plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Fedora; - -use strict; -use warnings; - -use base qw(x11vnc::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Gentoo.pm deleted file mode 100644 index 1bacf1d8..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Gentoo.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/Gentoo.pm -# - provides Gentoo-specific overrides of the Distro API for the x11vnc -# plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Gentoo; - -use strict; -use warnings; - -use base qw(x11vnc::OpenSLX::Distro::Base); - -use OpenSLX::Basics; - -################################################################################ -### interface methods -################################################################################ - -# TODO: implement! - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Suse.pm deleted file mode 100644 index f43a3893..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the x11vnc plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(x11vnc::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub fillRunlevelScript -{ - my $self = shift; - - my $script = unshiftHereDoc(<<" End-of-Here"); - #!/bin/sh - # SuSE compatible start/stop script, generated via stage1 'x11vnc' plugin - # installation - # - # inspiration taken from x11vnc start script: - # Copyright 1998-2007 x11vnc, Inc. All rights reserved. - # - # This script manages the services needed to run x11vnc software - - # Basic support for the Linux Standard Base Specification 1.3 - ### BEGIN INIT INFO - # Provides: x11vnc - # Required-Start: \$syslog - # Required-Stop: - # Default-Start: 2 3 5 - # Default-Stop: 0 6 - # Short-Description: Manages the services needed to run x11vnc software - # Description: Manages the services needed to run x11vnc software - ### END INIT INFO - - # load the helper stuff - . /etc/rc.status - # reset the script status - rc_reset - - [ -f /opt/openslx/plugin-repo/x11vnc/x11vnc-init ] \\ - && CMD="/opt/openslx/plugin-repo/x11vnc/x11vnc-init" - - case \$1 in - start) - echo -n "Starting x11vnc background services ..." - \$CMD start - rc_status -v - ;; - stop) - # message output should match the given vendor-os - echo -n "Stopping x11vnc background services ..." - rc_reset - \$CMD stop - rc_status -v - ;; - #status) - # echo -n "Say something useful here ..." - #;; - restart) - "\$0" stop - "\$0" start - ;; - *) - echo "Usage: `basename "\$0"` {start|stop|restart}" - exit 1 - ;; - esac - exit 0 - End-of-Here - return $script; -} - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/x11vnc/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 3379f14d..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2006, 2007 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the Distro API for the x11vnc -# plugin. -# ----------------------------------------------------------------------------- -package x11vnc::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -# inherit everything from Debian (as Ubuntu is based on it anyway) -use base qw(x11vnc::OpenSLX::Distro::Debian); - -1; diff --git a/os-plugins/plugins/x11vnc/OpenSLX/OSPlugin/x11vnc.pm b/os-plugins/plugins/x11vnc/OpenSLX/OSPlugin/x11vnc.pm deleted file mode 100644 index fe06648c..00000000 --- a/os-plugins/plugins/x11vnc/OpenSLX/OSPlugin/x11vnc.pm +++ /dev/null @@ -1,221 +0,0 @@ -# Copyright (c) 2007, 2008 - 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/ -# ----------------------------------------------------------------------------- -# x11vnc.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::x11vnc; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - my $self = { - name => 'x11vnc', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - return { - description => unshiftHereDoc(<<' End-of-Here'), - enables x11vnc server (user or xorg) - End-of-Here - # waits for xorg to add configuration if needed - precedence => 70, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'x11vnc::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'x11vnc' plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - - 'x11vnc::mode' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - set x11vnc to listen on Xorg user sessions (default), general - access to the Xorg server (including displaymanager login) and - console framebuffer. - End-of-Here - content_regex => qr{^(x11user|x11mod|fb)$}, - content_descr => 'x11user for user, x11mod for access via Xorg module or fb', - default => 'x11user', - }, - - 'x11vnc::scale' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - scale screen size (e.g. as fraction 2/3 or as decimal 0.5) - End-of-Here - content_regex => undef, - content_descr => undef, - default => '', - }, - - 'x11vnc::shared' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - by default x11vnc is always called with the -shared option - End-of-Here - content_regex => qr{^(yes|no|1|0)$}, - content_descr => 'use 1 or yes to enable - 0 or no to disable', - default => 'yes', - }, - - 'x11vnc::force_viewonly' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - disable user interaction with vnc - End-of-Here - content_regex => qr{^(yes|no|1|0)$}, - content_descr => 'use 1 or yes to enable - 0 or no to disable', - default => 'no', - }, - - 'x11vnc::auth_type' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - set authentication type of the vnc connection. rfbauth is - available for x11user and fb only. - End-of-Here - content_regex => qr{^(passwd|rfbauth|none)$}, - content_descr => 'choose: passwd, rfbauth, none', - default => 'passwd', - }, - - 'x11vnc::allowed_hosts' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - set allowed hosts (multiple hosts are seperated by semicolons, - (simple) subnets are possible too e.g. "192.168.") - End-of-Here - content_regex => undef, - content_descr => undef, - default => '', - }, - - 'x11vnc::force_localhost' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - force x11vnc to only accept local connections and only listen - on the loopback device - End-of-Here - content_regex => qr{^(1|0|yes|no)$}, - content_descr => 'use 1 or yes to enable - 0 or no to disable', - default => 'no', - }, - - 'x11vnc::pass' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - viewonly password (you can add multiple passwords seperated - by semicolons, if you're using rfbauth only the first one is - used) - End-of-Here - content_regex => undef, - content_descr => undef, - default => '', - }, - - 'x11vnc::viewonlypass' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - viewonly password (you can add multiple passwords seperated by - semicolons, disabled with rfb-auth) - End-of-Here - content_regex => undef, - content_descr => undef, - default => 'viewonly', - }, - - 'x11vnc::logging' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - enable logging - End-of-Here - content_regex => qr{^(1|0|yes|no)$}, - content_descr => 'use 1 or yes to enable - 0 or no to disable', - default => 'yes', - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - my $pluginRepositoryPath = $info->{'plugin-repo-path'}; - my $pluginTempPath = $info->{'plugin-temp-path'}; - my $openslxBasePath = $info->{'openslx-base-path'}; - - # should we distinguish between the two different packages!? - # libvnc should be part of the xorg package!? (so no check needed) - my $engine = $self->{'os-plugin-engine'}; - if (!isInPath('x11vnc')) { - $engine->installPackages( - $engine->getInstallablePackagesForSelection('x11vnc') - ); - } else { - vlog(3, "x11vnc is already installed"); - } - - # get path of files we need to install - my $pluginFilesPath = "$openslxBasePath/lib/plugins/$self->{'name'}/files"; - my $script = $self->{distro}->fillRunlevelScript(); - - # copy all needed files now - copyFile("$pluginFilesPath/x11vnc-init", "$pluginRepositoryPath"); - - spitFile("/etc/init.d/x11vnc", $script); - chmod 0755, "/etc/init.d/x11vnc"; - - vlog(3, "install init file"); - -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; -} - -1; diff --git a/os-plugins/plugins/x11vnc/XX_x11vnc.sh b/os-plugins/plugins/x11vnc/XX_x11vnc.sh deleted file mode 100644 index 3970e468..00000000 --- a/os-plugins/plugins/x11vnc/XX_x11vnc.sh +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2007..2009 - RZ Uni Freiburg -# Copyright (c) 2009 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# check if the plugin config directory is generally available or if the client -# configuration failed somehow -[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal - -# function to add vnc functionality to xorg server -addvnc2xorg () { - sed -e '/^# autog/a# modified by x11vnc plugin (adding vnc module config)' \ - -e '/\"Module\"/a\\ \ Load "vnc"' \ - -e '/n \"Device\"/a\\ \ Option "usevnc" "yes"' \ - -e '/n \"Device\"/a\\ \ Option "rfbauth" "/etc/X11/vncpasswd"' \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "VNC Keyboard" "ExtraKeyboard"' \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "VNC Mouse" "ExtraPointer"' \ - -e '/\"CorePointer\"/ { -a\ -EndSection\ -Section "InputDevice"\ - Identifier "VNC Keyboard"\ - Driver "rfbkeyb"\ -EndSection\ -Section "InputDevice"\ - Identifier "VNC Mouse"\ - Driver "rfbmouse" -}' -i /mnt/etc/X11/xorg.conf -} - -# main script -if [ -e /initramfs/plugin-conf/x11vnc.conf ]; then - . /initramfs/plugin-conf/x11vnc.conf - if [ $x11vnc_active -ne 0 ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'x11vnc' os-plugin ..."; - # configure x11vnc user mode or framebuffer - if [ "$x11vnc_mode" = "x11user" -o "$x11vnc_mode" = "fb" ] ; then - # create config dir for stage 3 - mkdir -p /mnt/etc/x11vnc - # default parameters - PARAMS="-bg -forever" - # client restrictions - if [ -z x11vnc_allowed_hosts ]; then - PARAMS="$PARAMS -allow $x11vnc_allowd_hosts" - fi - # mode - case "$x11vnc_mode" in - x11user) - PARAMS="$PARAMS -display :0" - X11VNC_X11=1 - ;; - fb) - PARAMS="$PARAMS -rawfb console" - ;; - esac - # auth type - case "$x11vnc_auth_type" in - passwd) - # use x11vnc passwd style - recommended - echo "$x11vnc_pass" > /mnt/etc/x11vnc/passwd - echo "__BEGIN_VIEWONLY__" >> /mnt/etc/x11vnc/passwd - echo "$x11vnc_viewonlypass" >> /mnt/etc/x11vnc/passwd - # multiuser handling - sed -i "s/,/\n/" /mnt/etc/x11vnc/passwd - # add parameter to commandline - PARAMS="$PARAMS -passwdfile rm:/etc/x11vnc/passwd" - ;; - rfbauth) - # use rfbauth - vncpasswd "$x11vnc_pass" > /mnt/etc/x11vnc/passwd - PARAMS="$PARAMS -rfbauth /etc/x11vnc/passwd" - ;; - *) - # no password - PARAMS="$PARAMS -nopw" - ;; - esac - - # force viewonly - if [ "$x11vnc_force_viewonly" = "1" \ - -o "$x11vnc_force_viewonly" = "yes" ]; then - PARAMS="$PARAMS -viewonly" - fi - - # force localhost - if [ "$x11vnc_force_localhost" = "1" \ - -o "$x11vnc_force_localhost" = "yes" ]; then - PARAMS="$PARAMS -localhost" - fi - - # enable logging - if [ "$x11vnc_logging" = "1" -o "$x11vnc_logging" = "yes" ]; then - PARAMS="$PARAMS -o /var/log/x11vnc.log" - fi - - # shared desktops - if [ "$x11vnc_shared" = "1" -o "$x11vnc_shared" = "yes" ]; then - PARAMS="$PARAMS -shared" - fi - - # scale desktop - if [ "$x11vnc_scale" != "" ]; then - PARAMS="$PARAMS -scale $x11vnc_scale" - fi - - # write config file - echo "# parameters generated by $0" > /mnt/etc/x11vnc/x11vnc.conf - echo "X11VNC_PARAMS=\"$PARAMS\"" >> /mnt/etc/x11vnc/x11vnc.conf - echo "X11VNC_X11=\"$X11VNC_X11\"" >> /mnt/etc/x11vnc/x11vnc.conf - - rllinker "x11vnc" 30 10 - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'x11vnc' os-plugin ..."; - - # x11mod offers access to the running X server via module - elif [ "$x11vnc_mode" = "x11mod" ]; then - # password setting (use stage4 environment) - echo -e "$x11vnc_pass\n$x11vnc_viewonlypass" | chroot /mnt vncpasswd -f \ - > /mnt/etc/X11/vncpasswd - ( waitfor /mnt/etc/X11/xorg.conf 10000; addvnc2xorg ) & - fi - fi -else - [ $DEBUGLEVEL -gt 2 ] && \ - echo "No configuration file found for x11vnc plugin." -fi diff --git a/os-plugins/plugins/x11vnc/files/x11vnc-init b/os-plugins/plugins/x11vnc/files/x11vnc-init deleted file mode 100755 index 548b2114..00000000 --- a/os-plugins/plugins/x11vnc/files/x11vnc-init +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash -# -------------------------------- -# /etc/init.d/x11vnc -# -------------------------------- - -if [ -f /etc/x11vnc/x11vnc.conf ] -then - . /etc/x11vnc/x11vnc.conf -fi - -# find xauthority file -find_xauth () { - FOUND=0 - RETRIES=4 - [ -z "$1" ] || RETRIES="$1" - - [ -e "/var/lib/kdm/" ] && - XAUTHFILE_KDM=`find /var/lib/kdm/ -iname "A\:0-*"` - [ -e "/var/run/xauth/" ] && - XAUTHFILE_KDM2=`find /var/run/xauth/ -iname "A\:0-*"` - [ -e "/var/lib/xdm/authdir/authfiles/" ] && - XAUTHFILE_XDM=`find /var/lib/xdm/authdir/authfiles/ -iname "A\:0-*"` - [ -e "/var/lib/gdm/" ] && - XAUTHFILE_GDM=`find /var/lib/gdm/ -iname *Xauth*` - - [ -f "$XAUTHFILE_KDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM" - [ -f "$XAUTHFILE_KDM2" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM2" - [ -f "$XAUTHFILE_XDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_XDM" - [ -f "$XAUTHFILE_GDM" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_GDM" - - if [ "$FOUND" -eq "0" ]; then - if [ "$RETRIES" -gt "0" ]; then - let "RETRIES-=1" - find_xauth "$RETRIES" - else - echo "start FAILED (can't find way to authenticate myself against X)" >>/var/log/x11vnc.debug - exit -1 - fi - else - echo "found authfile ($XAUTHORITY)" >>/var/log/x11vnc.debug - fi -} - -START_COMMAND="x11vnc" - -case "$1" in - start) - - if [ ! -f /etc/x11vnc/passwd ]; then - echo " start FAILED (/etc/x11vnc/passwd not found)" >>/var/log/x11vnc.debug - echo " Create it manualy and retry starting x11vnc" >>/var/log/x11vnc.debug - exit -1; - fi - - #su -c "$COMMAND" -l x11vnc & - if [ $X11VNC_X11 = 1 ]; then - find_xauth - START_COMMAND="$START_COMMAND -auth $XAUTHORITY $X11VNC_PARAMS" - else - START_COMMAND="$START_COMMAND $X11VNC_PARAMS" - fi - OUTPUT=`$START_COMMAND` - echo "$START_COMMAND" >>/var/log/x11vnc.debug - echo "$OUTPUT" >>/var/log/x11vnc.debug - ;; - stop) - pid=`pidof x11vnc` - if [ -z "$pid" ] - then - echo "x11vnc not running" >>/var/log/x11vnc.debug - exit -1; - else - kill -9 $pid - echo "x11vnc stopped" >>/var/log/x11vnc.debug - fi - - ;; - *) - echo "x11vnc startscript" - echo "Usage: $0 (start|stop)" - ;; -esac -exit 0 diff --git a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm deleted file mode 100644 index 12331983..00000000 --- a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# xen.pm -# - implementation of the 'xen' plugin -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::xen; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -sub new -{ - my $class = shift; - - my $self = { - name => 'xen', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - Configures Xen diskless boot, no installation yet. - End-of-Here - precedence => 10, - }; -} - -sub getAttrInfo -{ - my $self = shift; - - return { - 'xen::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xen'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - # set active to 0, later set specially created Xen system to 1 - default => '0', - }, - # attribute 'imagesrc' defines where we can find xen images - 'xen::imagesrc' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Where do we store our xen images? NFS? Filesystem? - End-of-Here - content_regex => qr{^(/|nfs://)}, - content_descr => 'local path or URI or "-" (unset)', - default => undef, - }, - # attribute 'tftpdir' defines TFTP dir for network boots /w NAT - 'xen::tftpdir' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Do you want to define a stage 4 TFTP dir for netwoork boots? - Needed to boot Xen via NFS, we only need the initramfs - Hint: Mount your TFTP ro via NFS to a local dir - End-of-Here - content_regex => qr{^(/)}, - content_descr => 'local path or "-" (unset)', - default => undef, - }, - }; -} - -sub installationPhase -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - - # Copy run-virt.include and template files to the appropriate place for - # inclusion in stage4 - my $pluginName = $self->{'name'}; - my $pluginBasePath = - "$self->{openslxBasePath}/lib/plugins/$pluginName/files"; - - foreach my $file ( qw( run-virt.include machine.include hvm.include ) ) { - copyFile("$pluginBasePath/$file", "$self->{pluginRepositoryPath}/"); - chmod 0644, "$self->{pluginRepositoryPath}/$file"; - } - - return; -} - -sub removalPhase -{ - my $self = shift; - my $info = shift; - - return; -} - -sub suggestAdditionalKernelModules -{ - my $self = shift; - my $makeInitRamFSEngine = shift; - - my @suggestedModules; - - # Xen needs bridge module, for guests xennet and maybe xenblk - # earlier versions needed netloop - push @suggestedModules, qw( bridge xennet xenblk ); - - return @suggestedModules; -} - -#sub _xenLabel -#{ -# # set label for each Xen system -# foreach my $info (@$systemInfos) { -# if ($info->{xen::active} eq 1) { -# my $label = $info->{label} || ''; -# if (!length($label) || $label eq $info->{name}) { -# if ($info->{name} =~ m{^(.+)::(.+)$}) { -# my $system = $1; -# my $exportType = $2; -# $label = $system . "-xen" . ' ' x (36-length($system)) -# . $exportType; -# } else { -# $label = $info->{name}; -# } -# } -# } -# $info->{pxeLabel} = $label; -# } -# return $info; #??? -#} - -#sub _xenBootEntry -#{ -# # Xen entries look different -# # Example: -# # KERNEL mboot.c32 vendor-os/xen.gz dom0_mem=128000 --- -# # vendor-os/vmlinuz-xen debug=3 --- vendor-os/initramfs-1 -# # TODO: versionsort oder per attr? -# if ($info->{xen::active} eq 1) { -# my $xenKernel = slxsystem(ls /boot/xen* | sort | tail -n 1); -# $append .= " file=$bootURI" if length($bootURI); -# $append .= " file=$tftpPrefix" if length($tftpPrefix); -# $append .= " $clientAppend"; -# $append .= " --- $pxePrefix$vendorOSName/$info->{'initramfs-name'}"; -# $slxLabels .= "LABEL openslx-$info->{'external-id'}-xen\n"; -# # $slxLabels .= $pxeDefault; -# $slxLabels .= "\tMENU LABEL ^$info->{pxeLabel}\n"; -# $slxLabels .= "\tKERNEL mboot.c32\n"; -# $slxLabels .= "\tAPPEND $pxePrefix$vendorOSName/$xenKernel"; -# # $slxLabels .= " dom0_mem=128000"; -# $slxLabels .= " --- $pxePrefix$vendorOSName/$kernelName"; -# $slxLabels .= " --- $append\n"; -# $slxLabels .= "\tIPAPPEND 3\n"; -# } -# return $slxLabels; -#} - -1; diff --git a/os-plugins/plugins/xen/XX_xen.sh b/os-plugins/plugins/xen/XX_xen.sh deleted file mode 100644 index 7dddeee0..00000000 --- a/os-plugins/plugins/xen/XX_xen.sh +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'xen' plugin - the runlevel script -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# include default directories -. /etc/openslx.conf - -CONFFILE=/initramfs/plugin-conf/xen.conf -PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/xen -PLUGINDIR=/mnt/${OPENSLX_DEFAULT_DIR}/plugin-repo/xen -VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/xen - -# check if the configuration file is available -if [ -e ${CONFFILE} ]; then - - # load needed variables - . ${CONFFILE} - - # Test if this plugin is activated... more or less useless with the - # new plugin system - if [ $xen_active -ne 0 2>/dev/null ]; then - - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'xen' os-plugin ..."; - - # load general configuration - . /etc/initramfs-setup - - # get source of xen image server (get type, server and path) - if strinstr "/" "${xen_imagesrc}" ; then - vbimgprot=$(uri_token ${xen_imagesrc} prot) - vbimgserv=$(uri_token ${xen_imagesrc} server) - vbimgpath="$(uri_token ${xen_imagesrc} path)" - fi - if [ -n "${vbimgserv}" ] ; then - # directory where qemu images are expected in - mnttarget=${VIRTDIR} - # mount the xen image source readonly (ro) - fsmount ${vbimgprot} ${vbimgserv} ${vbimgpath} ${mnttarget} ro - else - [ $DEBUGLEVEL -gt 1 ] && \ - error " * Incomplete information in variable ${xen_imagesrc}." \ - nonfatal - fi - - # copy virtualization include files to config dir - testmkd ${PLUGINCONFDIR} - testmkd /mnt/var/log/xen - testmkd /mnt/var/run/xend - testmkd /mnt/var/run/xenstored - cp ${PLUGINDIR}/*.include ${PLUGINCONFDIR} - # copy ${CONFFILE} to ${PLUGINCONFDIR} just in case - cp ${CONFFILE} ${PLUGINCONFDIR} - - # activate init files - # TODO: in xen-slx start - # increase loop devices for loop images - modprobe -q loop max_loop=64 >/tmp/xen.log 2>&1 - rllinker "xendomains" 14 8 - rllinker "xend" 13 9 - fi -fi diff --git a/os-plugins/plugins/xen/files/hvm.include b/os-plugins/plugins/xen/files/hvm.include deleted file mode 100644 index beb9315a..00000000 --- a/os-plugins/plugins/xen/files/hvm.include +++ /dev/null @@ -1,209 +0,0 @@ -# This is an machine template for run-virt.include of the Xen plugin. -# This template was taken from an example in openSUSE 11.2 -# HVM template - -cat <<EOF -# -*- mode: python; -*- -#============================================================================ -# Python configuration setup for 'xm create'. -# This configuration was created through $0 on $(date) -#============================================================================ - -import os, re - -arch_libdir = 'lib' -arch = os.uname()[4] -if os.uname()[0] == 'Linux' and re.search('64', arch): - arch_libdir = 'lib64' - -#---------------------------------------------------------------------------- -# Kernel image file. -kernel = "/usr/lib/xen/boot/hvmloader" - -# The domain build function. HVM domain uses 'hvm'. -builder='hvm' - -# Initial memory allocation (in megabytes) for the new domain. -memory = ${mem} - -# Shadow pagetable memory for the domain, in MB. -# If not explicictly set, xend will pick an appropriate value. -# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu. -#shadow_memory = 8 - -# A name for your domain. All domains must have different names. -name = "${vm_name}" - -#----------------------------------------------------------------------------- -# The number of cpus guest platform has, default=1 -#vcpus=1 - -# Enable/disable HVM guest PAE, default=1 (enabled) -#pae=1 - -# Enable/disable HVM guest ACPI, default=1 (enabled) -#acpi=1 - -# Enable/disable HVM APIC mode, default=1 (enabled) -# Note that this option is ignored if vcpus > 1 -#apic=1 - -# Enable/disable extended power management support within HVM guest, i.e., beyond -# S3, S4, S5 within guest like exposing battery meter. -# 0 (default option, extended power management support disabled) -# 1 (pass-through mode; uses pass-through as needed; efficient but limited in scope) -# 2 (non pass-through mode; extended scope, likely to work on all applicable environment -# but comparitively less efficient than pass-through mode) -# xen_extended_power_mgmt=0 - -# List of which CPUS this domain is allowed to use, default Xen picks -#cpus = "" # leave to Xen to pick -#cpus = "0" # all vcpus run on CPU0 -#cpus = "0-3,5,^1" # all vcpus run on cpus 0,2,3,5 -#cpus = ["2", "3"] # VCPU0 runs on CPU2, VCPU1 runs on CPU3 - -#---------------------------------------------------------------------------- -# Optionally define mac and/or bridge for the network interfaces. -# Random MACs are assigned if not given. -#vif = [ 'type=ioemu, mac=00:16:3e:00:00:11, bridge=xenbr0, model=ne2k_pci' ] -# type=ioemu specify the NIC is an ioemu device not netfront -#vif = [ 'type=ioemu, bridge=xenbr0' ] -vif = [ '${xen_vif}' ] - -#---------------------------------------------------------------------------- -# Define the disk devices you want the domain to have access to, and -# what you want them accessible as. -# Each disk entry is of the form phy:UNAME,DEV,MODE -# where UNAME is the device, DEV is the device name the domain will see, -# and MODE is r for read-only, w for read-write. -#disk = [ 'phy:hda1,hda1,r' ] -#disk = [ 'file:/var/lib/xen/images/disk.img,ioemu:hda,w', ',hdc:cdrom,r' ] -disk = [ '${xen_disk}' ] - -#---------------------------------------------------------------------------- -# Configure the behaviour when a domain exits. There are three 'reasons' -# for a domain to stop: poweroff, reboot, and crash. For each of these you -# may specify: -# "destroy", meaning that the domain is cleaned up as normal; -# "restart", meaning that a new domain is started in place of the old -# one; -# "preserve", meaning that no clean-up is done until the domain is -# manually destroyed (using xm destroy, for example); or -# "rename-restart", meaning that the old domain is not cleaned up, but is -# renamed and a new domain started in its place. -# In the event a domain stops due to a crash, you have the additional options: -# "coredump-destroy", meaning dump the crashed domain's core and then destroy; -# "coredump-restart', meaning dump the crashed domain's core and the restart. -# The default is -# on_poweroff = 'destroy' -# on_reboot = 'restart' -# on_crash = 'restart' -#on_poweroff = 'destroy' -#on_reboot = 'restart' -#on_crash = 'restart' - -#============================================================================ -# HVM specific -#============================================================================ -# Device Model to be used -device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm' - -#----------------------------------------------------------------------------- -# boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d) -# default: hard disk, cd-rom, floppy -#boot="cda" - -#----------------------------------------------------------------------------- -# write to temporary files instead of disk image files -#snapshot=1 - -#---------------------------------------------------------------------------- -# enable SDL library for graphics, default = 0 -sdl=0 - -#---------------------------------------------------------------------------- -# enable OpenGL for texture rendering inside the SDL window, default = 1 -# valid only if sdl is enabled. -opengl=1 - -#---------------------------------------------------------------------------- -# enable VNC library for graphics, default = 1 -vnc=1 - -#---------------------------------------------------------------------------- -# address that should be listened on for the VNC server if vnc is set. -# default is to use 'vnc-listen' setting from /etc/xen/xend-config.sxp -#vnclisten="127.0.0.1" - -#---------------------------------------------------------------------------- -# set VNC display number, default = domid -#vncdisplay=1 - -#---------------------------------------------------------------------------- -# try to find an unused port for the VNC server, default = 1 -#vncunused=1 - -#---------------------------------------------------------------------------- -# set password for domain's VNC console -# default is depents on vncpasswd in xend-config.sxp -vncpasswd='' - -#---------------------------------------------------------------------------- -# no graphics, use serial port -#nographic=0 - -#---------------------------------------------------------------------------- -# enable stdvga, default = 0 (use cirrus logic device model) -stdvga=0 - -#----------------------------------------------------------------------------- -# serial port re-direct to pty deivce, /dev/pts/n -# then xm console or minicom can connect -serial='pty' - - -#----------------------------------------------------------------------------- -# Qemu Monitor, default is disable -# Use ctrl-alt-2 to connect -#monitor=1 - - -#----------------------------------------------------------------------------- -# enable sound card support, [sb16|es1370|all|..,..], default none -#soundhw='sb16' - - -#----------------------------------------------------------------------------- -# set the real time clock to local time [default=0 i.e. set to utc] -#localtime=1 - - -#----------------------------------------------------------------------------- -# set the real time clock offset in seconds [default=0 i.e. same as dom0] -#rtc_timeoffset=3600 - -#----------------------------------------------------------------------------- -# start in full screen -#full-screen=1 - - -#----------------------------------------------------------------------------- -# Enable USB support (specific devices specified at runtime through the -# monitor window) -#usb=1 -# Enable USB mouse support (only enable one of the following, `mouse' for -# PS/2 protocol relative mouse, `tablet' for -# absolute mouse) -#usbdevice='mouse' -#usbdevice='tablet' - -#----------------------------------------------------------------------------- -# Set keyboard layout, default is en-us keyboard. -#keymap='de' - -#----------------------------------------------------------------------------- -# Enable/disable xen platform PCI device, default=1 (enabled) -#xen_platform_pci=1 - -#============================================================================ -EOF diff --git a/os-plugins/plugins/xen/files/machine.include b/os-plugins/plugins/xen/files/machine.include deleted file mode 100644 index 06848949..00000000 --- a/os-plugins/plugins/xen/files/machine.include +++ /dev/null @@ -1,167 +0,0 @@ -# This is an machine template for run-virt.include of the Xen plugin. -# This template was taken from an example in openSUSE 11.2 - -cat <<EOF -# -*- mode: python; -*- -#============================================================================ -# Python configuration setup for 'xm create'. -# This configuration was created through $0 on $(date) -#============================================================================ - -#---------------------------------------------------------------------------- -# Kernel image file and (optional) ramdisk (initrd). -kernel = "${xen_kernel}" -ramdisk = "${xen_ramdisk}" - -# Or use domUloader instead of kernel/ramdisk to get kernel from domU FS -#bootloader = "/usr/lib/xen/boot/domUloader.py" -#bootentry = "hda1:/${xen_kernel},/${xen_ramdisk}" -# TODO: check these: -#bootargs="--entry=xvda2:/boot/vmlinuz-xen,/boot/initrd-xen" - -localtime=0 - -# The domain build function. Default is 'linux', HVM domain uses 'hvm'. -builder = 'linux' - -# Initial memory allocation (in megabytes) for the new domain. -memory = ${mem} - -# A name for your domain. All domains must have different names. -name = "${vm_name}" - -# List of which CPUS this domain is allowed to use, default Xen picks -#cpus = "" # leave to Xen to pick -#cpus = "0" # all vcpus run on CPU0 -#cpus = "0-3,5,^1" # run on cpus 0,2,3,5 -#cpus = "${xen_cpus}" - -# Number of Virtual CPUS to use, default is 1 -#vcpus = ${xen_vcpus} - -#---------------------------------------------------------------------------- -# Define network interfaces. - -# By default, no network interfaces are configured. You may have one created -# with sensible defaults using an empty vif clause: -# vif = [ '' ] -# or optionally override backend, bridge, ip, mac, script, type, or vifname: -# vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0' ] -# or more than one interface may be configured: -# vif = [ '', 'bridge=xenbr1' ] -vif = [ '${xen_vif}' ] - -#---------------------------------------------------------------------------- -# Define the disk devices you want the domain to have access to, and -# what you want them accessible as. -# Each disk entry is of the form phy:UNAME,DEV,MODE -# where UNAME is the device, DEV is the device name the domain will see, -# and MODE is r for read-only, w for read-write. -# disk = [ 'phy:hda1,hda1,w' ] -${xen_disk} - -#---------------------------------------------------------------------------- -# Define frame buffer device. -# By default, no frame buffer device is configured. -# To create one using the SDL backend and sensible defaults: -# vfb = [ 'type=sdl' ] -# This uses environment variables XAUTHORITY and DISPLAY. You -# can override that: -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] -# To create one using the VNC backend and sensible defaults: -# vfb = [ 'type=vnc' ] -# The backend listens on 127.0.0.1 port 5900+N by default, where N is -# the domain ID. You can override both address and N: -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ] -# Or you can bind the first unused port above 5900: -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vnunused=1' ] -# You can override the password: -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] -# Empty password disables authentication. Defaults to the vncpasswd -# configured in xend-config.sxp. - -#---------------------------------------------------------------------------- -# Define to which TPM instance the user domain should communicate. -# The vtpm entry is of the form 'instance=INSTANCE,backend=DOM' -# where INSTANCE indicates the instance number of the TPM the VM -# should be talking to and DOM provides the domain where the backend -# is located. -# Note that no two virtual machines should try to connect to the same -# TPM instance. The handling of all TPM instances does require -# some management effort in so far that VM configration files (and thus -# a VM) should be associated with a TPM instance throughout the lifetime -# of the VM / VM configuration file. The instance number must be -# greater or equal to 1. -#vtpm = [ 'instance=1,backend=0' ] - -#---------------------------------------------------------------------------- -# Set the kernel command line for the new domain. -# You only need to define the IP parameters and hostname if the domain's -# IP config doesn't, e.g. in ifcfg-eth0 or via DHCP. -# You can use 'extra' to set the runlevel and custom environment -# variables used by custom rc scripts (e.g. VMID=, usr= ). - -# Set if you want dhcp to allocate the IP address. -dhcp="${xen_dhcp}" -# Set netmask. -#netmask= -# Set default gateway. -#gateway= -# Set the hostname. -hostname= "${hostname}" - -# Set root device (eg. /dev/hda1). -root = "${xen_root}" - -# Root device for nfs. -#root = "/dev/nfs" -# The nfs server. -#nfs_server = '169.254.1.0' -# Root directory on the nfs server. -#nfs_root = '/full/path/to/root/directory' - -# Extra arguments to pass to the kernel. -# Eg: set runlevel -extra = "${xen_extra}" - -#---------------------------------------------------------------------------- -# Configure the behaviour when a domain exits. There are three 'reasons' -# for a domain to stop: poweroff, reboot, and crash. For each of these you -# may specify: -# "destroy", meaning that the domain is cleaned up as normal; -# "restart", meaning that a new domain is started in place of the old -# one; -# "preserve", meaning that no clean-up is done until the domain is -# manually destroyed (using xm destroy, for example); or -# "rename-restart", meaning that the old domain is not cleaned up, but is -# renamed and a new domain started in its place. -# In the event a domain stops due to a crash, you have the additional options: -# "coredump-destroy", meaning dump the crashed domain's core and then destroy; -# "coredump-restart', meaning dump the crashed domain's core and the restart. -# The default is -# on_poweroff = 'destroy' -# on_reboot = 'restart' -# on_crash = 'restart' -#on_poweroff = 'destroy' -#on_reboot = 'restart' -#on_crash = 'restart' - -#----------------------------------------------------------------------------- -# Configure PVSCSI devices: -# PDEV gives physical SCSI device to be attached to specified guest -# domain by one of the following identifier format. -# - XX:XX:XX:XX (4-tuples with decimal notation which shows -# "host:channel:target:lun") -# - /dev/sdxx or sdx -# - /dev/stxx or stx -# - /dev/sgxx or sgx -# - result of 'scsi_id -gu -s'. -# ex. # scsi_id -gu -s /block/sdb -# 36000b5d0006a0000006a0257004c0000 -# VDEV gives virtual SCSI device by 4-tuples (XX:XX:XX:XX) as -# which the specified guest domain recognize. -#vscsi = [ 'PDEV, VDEV' ] -#vscsi = [ '/dev/sdx, 0:0:0:0' ] - -#============================================================================ -EOF diff --git a/os-plugins/plugins/xen/files/run-virt.include b/os-plugins/plugins/xen/files/run-virt.include deleted file mode 100644 index 36a1d1f4..00000000 --- a/os-plugins/plugins/xen/files/run-virt.include +++ /dev/null @@ -1,157 +0,0 @@ -# run-virt.include -# ----------------------------------------------------------------------------- -# Copyright (c) 2010 - RZ Uni Freiburg -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# ----------------------------------------------------------------------------- -# run-virt.include -# - Include script for running Xen on an OpenSLX client via the run-virt.sh -# or run-vmgrid.sh -################################################################################ - -################################################################################ -### Include general configuration -################################################################################ -if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then - . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf -else - writelog "Problems reading config file of ${self} plugin" - exit 1 -fi - -################################################################################ -### Declaration of default variables -################################################################################ - -PLUGINCONFXEN="${PLUGINCONFROOT}/${self}" -# create TMPDIR for all users -mkdir -m 1777 /tmp/${self} 2>/dev/null -# dir for configs -confdir="/tmp/${self}/${USER}/${VM_ID}" -# use vm_shortname for VM name since vm_name can be very long -# add id so we can start more tahn one of the same image -vm_name="${vm_shortname}-${VM_ID}" -conffile=${confdir}/${vm_name} -# define dirs and files which can be removed after exit, be carefull! -rm -rf ${confdir} 2>/dev/null -mkdir -p ${confdir} 2>/dev/null - -xen_kernel=${kernel:-"/boot/vmlinuz-xen"} -xen_ramdisk=${initramfs:-"/boot/initrd-xen"} -xen_extra="xencons=tty 3" -[ -n "${imgname}" ] && xen_disk="disk = [ 'file:${vmpath},hda1,r' ]" - -writelog "Directories:" -writelog "\tConfig dir:\t\t$confdir" - -################################################################################ -### Hardware checks -################################################################################ - -# memory part equal to vmware plugin -# percentage of memory to use for virtualbox in standard case -if [ -n "${forcemem}" ]; then - mem="${forcemem}" -else - permem=30 - if [ "${totalmem}" -ge "1600" ]; then - permem=40 - fi - # check if /tmp is on harddisk - if grep -qe "/dev/.* /tmp " /proc/mounts ; then - permem=60 - id44="1" - # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well - # (40% vmware | 40% confdir(vmem...) | 20% host - # VMplayer 2+ issue - # TODO: makes this sense for vbox? - #if [ "${totalmem}" -ge "2500" ]; then - #permem=40 - #rmdir ${snapshotdir} - #snapshotdirold=${snapshotdir} - #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID} - #mkdir -p ${snapshotdir} - #ln -sf ${snapshotdir} ${snapshotdirold} - #fi - fi - mem=$(expr ${totalmem} / 100 \* ${permem}) - if [ "${id44}" = "1" ]; then - memhost=$(expr ${totalmem} - ${mem}) - else - memhost=$(expr ${totalmem} - ${mem} - ${mem}) - fi - #permem=40 - #mem=$(expr ${totalmem} * ${permem}) - if [ "${mem}" -lt "256" ] || [ "${memhost}" -lt "256" ]; then - writelog "Memory out of range: ${mem} MB (guest) / ${memhost} MB (host)!" - writelog "Min. 256 MB for host and guest!" - exit 1 - fi -fi - -# translate network kinds (nat, bridged, host-only) -case "${network_kind}" in - bridge*) - xen_vif="mac=$macaddr, bridge=br0" - ;; - *) - xen_vif="mac=$macaddr" -esac -xen_dhcp="dhcp" # off - -# translate boot, use if set else set to disk -xen_root=/dev/hda1 -case ${boot} in - n*|tftp) - pxe_label=$(grep -o 'pxe_label param=.*"' ${xmlfile} \ - | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') - pxe_label=$(grep -A 3 "^LABEL *${pxe_label}" \ - ${xen_tftpdir}/pxelinux.cfg/default 2>/dev/null \ - | grep "^ *KERNEL ") - if [ -n "${pxe_label}" ] && [ -n "${xen_tftpdir}" ]; then - xen_root=/dev/nfs - xen_kernel="${xen_tftpdir}/$(echo ${pxe_label} \ - | awk -F " --- " '{print $2}' | awk '{print $1}')" - xen_ramdisk="${xen_tftpdir}/$(echo ${pxe_label} \ - | awk -F " --- " '{print $3}')" - fi - ;; - # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM - *) - xen_root=/dev/hda1 - ;; -esac - -[ ${diskless} -eq 0 ] && writelog "Diskimage:" -[ ${diskless} -eq 0 ] && writelog "\tMachine diskfile:\t$vmpath" -writelog "Virtual Hardware:" -writelog "\tGuest RAM:\t\t${mem} MB" -# echo nur wenn memhost gesetzt -[ -n "${memhost}" ] && writelog "\tHost RAM:\t\t${memhost} MB" -writelog "\tMAC address:\t\t$macaddr" - -################################################################################ -### Pepare and configure virtual machine and disk image -################################################################################ - -. ${PLUGINCONFXEN}/machine.include > ${conffile} - -################################################################################ -### finally set env for run-virt.sh -################################################################################ - -# set the variables appropriately (several interfaces with different names) -VIRTCMD=$(which xm 2>/dev/null) -# '-c' for console, no graphical output available, later vnc possible -VIRTCMDOPTS="create -c ${conffile}" - -# set headless mode -VIRTCMDHL=$(which xm 2>/dev/null) -VIRTCMDOPTSHL="create ${conffile}" diff --git a/os-plugins/plugins/xen/init-hooks/10-nw-if-config/xennet.sh b/os-plugins/plugins/xen/init-hooks/10-nw-if-config/xennet.sh deleted file mode 100644 index d514b68d..00000000 --- a/os-plugins/plugins/xen/init-hooks/10-nw-if-config/xennet.sh +++ /dev/null @@ -1,4 +0,0 @@ -# load xennet if necessary, usualy within a NFS VM -if grep -q "Xen Virtual Ethernet Card" /etc/hwinfo.netcard-usbctrl; then - modprobe xennet >/tmp/xennet.log 2>&1 -fi diff --git a/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/bridge.sh b/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/bridge.sh deleted file mode 100755 index d5245234..00000000 --- a/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/bridge.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Copyright (c) 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# Init hook to create a bridge on the active network interface -# (should be kept identical to the files of virtualbox and qemukvm plugins) -############################################################################# - -local bridge=br0 -local brnwif=${nwif} -local nwifmac=${macaddr} - -# bridge 0 already defined or some other problem -brctl addbr ${bridge} || exit 0 -brctl stp ${bridge} 0 -brctl setfd ${bridge} 0.000000000001 -ip link set addr ${nwifmac} ${bridge} -ip link set dev ${nwif} up -brctl addif ${bridge} ${nwif} - -# fixme: sending back the variable to init does not work properly at the -# moment -nwif=${bridge} diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm deleted file mode 100644 index 51c1c60b..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the xserver plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->XserverPathInfo(); - my $configFile = $pathInfo->{config}; - - my $script = unshiftHereDoc(<<' End-of-Here'); - # xserver.sh (base part) - # written by OpenSLX-plugin 'xserver' (via xserver/Distro/Base.pm module) - - # generating the base configuration file (might be split into several - # files for newer Xorg servers) - echo -e "# ${xfc#/mnt*}\n# autogenerated X hardware configuration by \ - the xserver plugin in OpenSLX stage3\n# DO NOT EDIT THIS FILE BUT THE PLUGIN \ - INSTEAD" >${xfc} - # using variables defined in XX_xserver.sh - echo -e "${x_modpath}\n${x_srvflags}\n${x_modules}" >>${xfc} - echo -e "${x_keyboard}\n${x_mouse}\n${x_videocard}" >>${xfc} - echo -e "${x_monitor}\n${x_screen}\n${x_srvlayout}\n${x_dri}" >>${xfc} - # if no module was detected, stick to vesa module - if [ -n "$xmodule" ] ; then - sed "s/vesa/$xmodule/;s/\"us\"/\"${XKEYBOARD}\"/" -i ${xfc} - else - sed "s/\"us\"/\"${XKEYBOARD}\"/" -i ${xfc} - fi - if [ -n "${BUSID}" ]; then - sed -e "s,^#.*BusID .*, BusID \"${BUSID}\",g" -i ${xfc} - fi - # end of base xorg.conf generation - - End-of-Here - - return $script; -} - -# not used yet, kept as example -sub XserverPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/X11/xorg.conf', - paths => [ - '/usr/bin', - ], - }; - - return $pathInfo; -} - - -# looks for the NVIDIA-installer and extracts it -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my @paths = glob $repopath.$pkgpath."/NVIDIA-Linux-x86*\n"; - my $paths = @paths; - - if ($paths > 1) - { - print "Found more than one NVIDIA-Linux-x86 installer. Taking first one.\n"; - } - if ($paths == 0) - { - print "Found no NVIDIA-Linux-x86 installer. Quitting NVIDIA installation!\n"; - return "error"; - } - - if ( ! -X $paths[0] ) - { - system("chmod +x ".$paths[0]); - } - system($paths[0]." -x --target $repopath/nvidia/temp >/dev/null 2>&1"); - - if($? == -1 ) - { - print "Failed to execute ".$paths[0]."\n"; - return "error"; - } - - system("mv $repopath/nvidia/temp/usr/src $repopath/nvidia/temp/"); - system("mv $repopath/nvidia/temp/usr/ $repopath/nvidia/"); - rmtree("$repopath/nvidia/usr/share/"); - - return "$repopath/nvidia/temp/src/nv"; -} - - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my @paths = glob $repopath."/".$pkgpath."/ati-driver-installer*"; - my $paths = @paths; - - if ($paths > 1) - { - print "Found more than one ati-driver-installer. Taking first one.\n"; - } - if ($paths == 0) - { - print "Found no ati-driver-installer. Quitting ATI installation!\n"; - return "error"; - } - - if ( ! -X $paths[0] ) - { - system("chmod +x ".$paths[0]); - } - system($paths[0]." --extract $repopath/ati/temp >/dev/null 2>&1"); - - if($? == -1 ) - { - print "Failed to execute ".$paths[0]."\n"; - return "error"; - } - - # TODO: allow x86_64 driver installation (libs) - my $arch = "x86"; - - rmtree("$repopath/ati/usr"); - system("mv $repopath/ati/temp/common/usr $repopath/ati/"); - if (!-d "$repopath/ati/usr/lib" ) { - mkdir "$repopath/ati/usr/lib"; - } - system("mv $repopath/ati/temp/arch/$arch/usr/X11R6/lib/* $repopath/ati/usr/lib/"); - system("mv $repopath/ati/temp/arch/$arch/usr/lib/* $repopath/ati/usr/lib/"); - rmtree("$repopath/ati/usr/share/"); - - my $cmd='gcc --version | head -n 1 | sed -e "s/[^0-9. ]//g;s/^ *//;s/^\(.\)\..*$/\1/"'; - my $gcc_ver_maj =`$cmd`; - chomp($gcc_ver_maj); - - system("mv $repopath/ati/temp/arch/$arch/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC$gcc_ver_maj $repopath/ati/temp/common/lib/modules/fglrx/build_mod/"); - - - return "$repopath/ati/temp/common/lib/modules/fglrx/build_mod"; -} - -# get dkms with wget/tar and put it into /sbin -sub getdkms -{ - if( !-f "/sbin/dkms") { - if(!-f "dkms-2.0.21.1.tar.gz" ) { - system("wget http://linux.dell.com/dkms/permalink/dkms-2.0.21.1.tar.gz >/dev/null 2>&1"); - die("Could not download dkms tarball! Exiting!") if($? > 0 ); - } - if(!-f "dkms-2.0.21.1/dkms" ) { - system("tar -zxvf dkms-2.0.21.1.tar.gz dkms-2.0.21.1/dkms >/dev/null 2>&1"); - die("Could not extract dkms script from tarball! Exiting!") if($? > 0 ); - } - copyFile("dkms-2.0.21.1/dkms","/sbin"); - chmod 0755, "/sbin/dkms"; - } -} - - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 29156e60..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # Debian specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb - End-of-Here - - return $script; -} - -# stage3 script might need to add special path /var/X11R6/bin to the PATH variable -# # fixme!! add path directly to /etc/profile!? -# #[ "x$addpath" != "x" ] && \ -# # echo -e "# added path component by $0: $date\n\ -# #PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/profile - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 7a706019..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - # add stuff to the script generated via Base.pm - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/etc/X11/xorg.conf.d - # Add InputClass to proper setup the keyboard and other input - echo 'Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection' >/mnt/etc/X11/xorg.conf.d/10-evdev.conf - # Xorg hardware is autodetected, so no module information provided - [ -z "${xmodule}" ] && \ - sed "/Section \"Device\"/,/EndSection/d" -i ${xfc} - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/lib/X11 - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/lib/X11/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm deleted file mode 100644 index f0c3ebb8..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_10.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_10; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # suse specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - # use the old kbd keyboard driver instead of evdev - sed "s/\"evdev\"/,/\"kbd\"/" -i ${xfc} - # relevant for older xservers only: check for kind of xorg module used - # and patch the i8,9XX VGA BIOS if needed - #if strinfile '"i810"' $xfc && [ -f /etc/hwinfo.display ] ; then - # highres=$(sort -run /etc/hwinfo.display|grep -i x -m 1) - # 915resolution -l|sed -n "s/Mode //;/32 bits/p" > /tmp/915res - # strinfile ${highres} /tmp/915res || { - # 915resolution $(grep -i x -m 1 /tmp/915res|sed "s/\ :.*//") $(echo \ - # $highres|sed "s/x/\ /") 2>&1 >/dev/null; - # # for some reason the above does not work for a Dell laptop with Intel - # # 855 chipset, so add another mode too - # 915resolution 3c $(echo $highres|sed "s/x/\ /") 2>&1 >/dev/null; } - #fi - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm deleted file mode 100644 index 4117c421..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm +++ /dev/null @@ -1,360 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_0.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_0; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -# This function needs wget installed -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/nvidia/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "ftp://download.nvidia.com/opensuse/$version/$chost"; - - print " * Downloading NVIDIA rpm from ftp://download.nvidia.com/opensuse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/nvidia-gfxG01-kmp-$ksuffix* >/dev/null 2>&1"); - - if($? > 0) { - print "Could not download nvidia kernel module rpm!\n"; - } - - my @rpm = glob "$tmpdir/nvidia-gfxG01*.rpm"; - my $rpm = @rpm; - $rpm[0] =~ /nvidia-gfxG01-kmp-$ksuffix-(.*?)_(.*?)-.*?\.$chost.rpm/; - - my $nv_kver = $2; - $nv_kver =~ s/_/-/g; - - if($rpm == 0) { - print "Could not download nvidia kernel module rpm!"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/nvidia/modules/") - { - mkdir("$repopath/nvidia/modules/"); - } - - - # since kernel 2.6.25.20-0.1 there has to be a call to ld - # ld -r -m elf_i386 -o ../modules/nvidia.ko lib/modules/2.6.25.20-0.4-pae/updates/{nv-kernel,nv-linux}.o - - my $nv_path = glob "$tmpdir/lib/modules/*-$ksuffix/updates/"; - if ( -f "$nv_path/nv-kernel.o" ) { - # we have to link our kernel module here - system("ld -r -m elf_i386 -o $nv_path/nvidia.ko $nv_path/{nv-kernel,nv-linux}.o"); - } - - copyFile("$nv_path/nvidia.ko", "$repopath/nvidia/modules"); - - - my @versions = split(/-/, $rpm[0]); - my @nv_versions = split('_',$versions[5]); - my $nv_version = $nv_versions[0]; - - system("wget -P $tmpdir -t2 -T2 $url/x11-video-nvidiaG01-$nv_version* >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-nvidiaG01-$nv_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print "Could not download x11-video-nvidiaG01-$nv_version*.rpm!\n"; - print "Exiting nvidia driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/nvidia/"); - - rmtree($tmpdir); - -} - -# this function needs wget -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/ati/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "http://www2.ati.com/suse/$version/"; - - print " * Downloading ATI rpm from http://www2.ati.com/suse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/repodata/primary.xml.gz >/dev/null 2>&1"); - - my $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$kver_ati.*?$chost.rpm"`; - chomp($url2); - - if($url2 eq '') { - # Taking more general kernel version (minus local suse version) - my $newkernvers = ''; - if($kver_ati =~ /(.*)_(.*?)$/) { - # if we have a match here - $newkernvers = $1; - } - else { - # just try the old method - $newkernvers = substr $kver_ati, 0, -4; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - else { - # Minus local Suse version number - hoping, there was no ABI change - if($newkernvers =~ /(.*).(.*?)$/) { - # here we try with yet another older kernel version - $newkernvers = $1; - } - else { - $newkernvers = substr $kver_ati, 0, -7; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - - } - } - -# print "KVER = $kver; CHOST = $chost; ksuffix=$ksuffix\n"; -# system("bash"); - - if($url2 eq '') { - print "No ATI module rpm for the chosen kernel version ($kver) found! Exiting!\n"; - return; - } - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - my @rpm = glob "$tmpdir/ati-fglrxG01-kmp-$ksuffix*$chost.rpm"; - my $rpm = @rpm; - - if($rpm == 0) { - print "Could not download ATI kernel module rpm (for kernel $kver)!\n"; - print "Consider downgrading your Kernel! \nTrying package-install!\n"; - $self->installAtiOldStyle(@_); - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/ati/modules/") - { - mkdir("$repopath/ati/modules/"); - } - copyFile("$tmpdir/lib/modules/$kver*-$ksuffix/updates/fglrx.ko", - "$repopath/ati/modules"); - - my @versions = split(/-/, $rpm[0]); - my @ati_versions = split('_',$versions[5]); - my $ati_version = $ati_versions[0]; - - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/x11-video-fglrxG01-$ati_version-.*?.$chost.rpm"`; - chomp($url2); - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-fglrxG01-$ati_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print " Could not download x11-video-fglrxG01-$ati_version*.rpm!\n"; - print " Exiting ATI driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/ati/"); - system("mv $tmpdir/etc $repopath/ati/"); - if( ! -d "/usr/X11R6/lib/modules/dri/" ) { - system("mkdir -p /usr/X11R6/lib/modules/dri/"); - } - symlink("$repopath/ati/usr/lib/dri/fglrx_dri.so","/usr/X11R6/lib/modules/dri/fglrx_dri.so"); - - rmtree($tmpdir); -} - - - -sub installAtiOldStyle -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - - my $ret = $self->SUPER::installAti(@_); - - if($ret =~ /^error$/) { - print "Something went wrong installing ATI files!\n"; - return; - } - - $self->SUPER::getdkms(); - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - # here we have to compile the kernel modules for all kernels - # - my $ati_version = `head $repopath/$pkgpath/ati-driver-installer-*.run | grep -P -o '[0-9]+\.[0-9]{3}' | tail -n1`; - chomp($ati_version); - - system("mv $ret /usr/src/fglrx-$ati_version >/dev/null 2>&1"); - - open FH,">/usr/src/fglrx-$ati_version/dkms.conf"; - print FH "DEST_MODULE_LOCATION=/updates\n"; - print FH "PACKAGE_NAME=fglrx\n"; - print FH "PACKAGE_VERSION=$ati_version\n"; - close FH; - - my $cmd = "#============= Executing following command =============\n". - "/sbin/dkms ". - " -m fglrx -v $ati_version ". - " -k $kver-$ksuffix ". - " --kernelsourcedir /usr/src/linux-$kver-obj/i586/$ksuffix ". - " --no-prepare-kernel ". - " --no-clean-kernel ". - " build >/dev/null 2>&1 \n". - "#=========================================================="; - -#print $cmd; - if(!-f "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - system("/sbin/dkms add -m fglrx -v $ati_version >/dev/null 2>&1"); - system($cmd); - #if ($? > 0) { - # print "\n\nCould not compile module! Exit with Ctrl-D\n"; - # system("/bin/bash"); - #} - } - - - if(!-d "$repopath/ati/modules/") - { - mkdir( "$repopath/ati/modules/" ); - } - - if( -e "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - copyFile("/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko", - "$repopath/ati/modules"); - } - else { - print "Could not install ati driver via pkg-installer!\n"; - rmtree($repopath."/ati"); - return; - } - rmtree("$repopath/ati/temp"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm deleted file mode 100644 index ab543549..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm +++ /dev/null @@ -1,361 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_1.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_1; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -# This function needs wget installed -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/nvidia/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "ftp://download.nvidia.com/opensuse/$version/$chost"; - - print " * Downloading NVIDIA rpm from ftp://download.nvidia.com/opensuse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/nvidia-gfxG01-kmp-$ksuffix* >/dev/null 2>&1"); - - if($? > 0) { - print "Could not download nvidia kernel module rpm!\n"; - } - - my @rpm = glob "$tmpdir/nvidia-gfxG01*.rpm"; - my $rpm = @rpm; - $rpm[0] =~ /nvidia-gfxG01-kmp-$ksuffix-(.*?)_(.*?)-.*?\.$chost.rpm/; - - my $nv_kver = $2; - $nv_kver =~ s/_/-/g; - - if($rpm == 0) { - print "Could not download nvidia kernel module rpm!"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/nvidia/modules/") - { - mkdir("$repopath/nvidia/modules/"); - } - - - # since kernel 2.6.25.20-0.1 there has to be a call to ld - # ld -r -m elf_i386 -o ../modules/nvidia.ko lib/modules/2.6.25.20-0.4-pae/updates/{nv-kernel,nv-linux}.o - - my $nv_path = glob "$tmpdir/lib/modules/*-$ksuffix/updates/"; - if ( -f "$nv_path/nv-kernel.o" ) { - # we have to link our kernel module here - system("ld -r -m elf_i386 -o $nv_path/nvidia.ko $nv_path/{nv-kernel,nv-linux}.o"); - } - - copyFile("$nv_path/nvidia.ko", "$repopath/nvidia/modules"); - - - my @versions = split(/-/, $rpm[0]); - my @nv_versions = split('_',$versions[5]); - my $nv_version = $nv_versions[0]; - - system("wget -P $tmpdir -t2 -T2 $url/x11-video-nvidiaG01-$nv_version* >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-nvidiaG01-$nv_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print "Could not download x11-video-nvidiaG01-$nv_version*.rpm!\n"; - print "Exiting nvidia driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/nvidia/"); - - rmtree($tmpdir); - -} - - -# this function needs wget -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/ati/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "http://www2.ati.com/suse/$version/"; - - print " * Downloading ATI rpm from http://www2.ati.com/suse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/repodata/primary.xml.gz >/dev/null 2>&1"); - - my $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$kver_ati.*?$chost.rpm"`; - chomp($url2); - - if($url2 eq '') { - # Taking more general kernel version (minus local suse version) - my $newkernvers = ''; - if($kver_ati =~ /(.*)_(.*?)$/) { - # if we have a match here - $newkernvers = $1; - } - else { - # just try the old method - $newkernvers = substr $kver_ati, 0, -4; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - else { - # Minus local Suse version number - hoping, there was no ABI change - if($newkernvers =~ /(.*).(.*?)$/) { - # here we try with yet another older kernel version - $newkernvers = $1; - } - else { - $newkernvers = substr $kver_ati, 0, -7; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - - } - } - -# print "KVER = $kver; CHOST = $chost; ksuffix=$ksuffix\n"; -# system("bash"); - - if($url2 eq '') { - print "No ATI module rpm for the chosen kernel version ($kver) found! Exiting!\n"; - return; - } - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - my @rpm = glob "$tmpdir/ati-fglrxG01-kmp-$ksuffix*$chost.rpm"; - my $rpm = @rpm; - - if($rpm == 0) { - print "Could not download ATI kernel module rpm (for kernel $kver)!\n"; - print "Consider downgrading your Kernel! \nTrying package-install!\n"; - $self->installAtiOldStyle(@_); - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/ati/modules/") - { - mkdir("$repopath/ati/modules/"); - } - copyFile("$tmpdir/lib/modules/$kver*-$ksuffix/updates/fglrx.ko", - "$repopath/ati/modules"); - - my @versions = split(/-/, $rpm[0]); - my @ati_versions = split('_',$versions[5]); - my $ati_version = $ati_versions[0]; - - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/x11-video-fglrxG01-$ati_version-.*?.$chost.rpm"`; - chomp($url2); - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-fglrxG01-$ati_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print " Could not download x11-video-fglrxG01-$ati_version*.rpm!\n"; - print " Exiting ATI driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/ati/"); - system("mv $tmpdir/etc $repopath/ati/"); - if( ! -d "/usr/X11R6/lib/modules/dri/" ) { - system("mkdir -p /usr/X11R6/lib/modules/dri/"); - } - symlink("$repopath/ati/usr/lib/dri/fglrx_dri.so","/usr/X11R6/lib/modules/dri/fglrx_dri.so"); - - rmtree($tmpdir); -} - - - -sub installAtiOldStyle -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - - my $ret = $self->SUPER::installAti(@_); - - if($ret =~ /^error$/) { - print "Something went wrong installing ATI files!\n"; - return; - } - - $self->SUPER::getdkms(); - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - # here we have to compile the kernel modules for all kernels - # - my $ati_version = `head $repopath/$pkgpath/ati-driver-installer-*.run | grep -P -o '[0-9]+\.[0-9]{3}' | tail -n1`; - chomp($ati_version); - - system("mv $ret /usr/src/fglrx-$ati_version >/dev/null 2>&1"); - - open FH,">/usr/src/fglrx-$ati_version/dkms.conf"; - print FH "DEST_MODULE_LOCATION=/updates\n"; - print FH "PACKAGE_NAME=fglrx\n"; - print FH "PACKAGE_VERSION=$ati_version\n"; - close FH; - - my $cmd = "#============= Executing following command =============\n". - "/sbin/dkms ". - " -m fglrx -v $ati_version ". - " -k $kver-$ksuffix ". - " --kernelsourcedir /usr/src/linux-$kver-obj/i586/$ksuffix ". - " --no-prepare-kernel ". - " --no-clean-kernel ". - " build >/dev/null 2>&1 \n". - "#=========================================================="; - -#print $cmd; - if(!-f "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - system("/sbin/dkms add -m fglrx -v $ati_version >/dev/null 2>&1"); - system($cmd); - #if ($? > 0) { - # print "\n\nCould not compile module! Exit with Ctrl-D\n"; - # system("/bin/bash"); - #} - } - - - if(!-d "$repopath/ati/modules/") - { - mkdir( "$repopath/ati/modules/" ); - } - - if( -e "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - copyFile("/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko", - "$repopath/ati/modules"); - } - else { - print "Could not install ati driver via pkg-installer!\n"; - rmtree($repopath."/ati"); - return; - } - rmtree("$repopath/ati/temp"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm deleted file mode 100644 index 5cddcef0..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) 2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_2.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_2; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/lib/X11 - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/lib/X11/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 057cf138..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -# needs to be implemented ... -sub XserverPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/X11/xorg.openslx', - paths => [ - '/usr/bin', - ], - }; - - return $pathInfo; -} - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - # overwriting script part from Base.pm - $script = unshiftHereDoc(<<' End-of-Here'); - # Ubuntu specific extension to stage3 xserver.sh - echo -e "# ${xfc#/mnt*}\n# autogenerated X hardware configuration by \ - the xserver plugin in OpenSLX stage3\n# DO NOT EDIT THIS FILE BUT THE PLUGIN \ - INSTEAD" >${xfc} - # using variables defined in XX_xserver.sh - echo -e "${x_modpath}\n${x_srvflags}\n${x_modules}" >>${xfc} - echo "${x_keyboard}" | sed "s/kbd/evdev/" >>${xfc} - echo -e "${x_mouse}\n${x_monitor}\n${x_screen}" >>${xfc} - echo "${x_srvlayout}" | sed "/ Screen /d" >>${xfc} - testmkd /mnt/etc/X11/xorg.conf.d - testmkd /mnt/var/run/xauth - testmkd /mnt/var/lib/xkb - ln -sf /usr/bin/Xorg /mnt/etc/X11/X - End-of-Here - - return $script; -} - - -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh nvidia $distroName"); - -} - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh ati $distroName"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm deleted file mode 100644 index 1fa88446..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu_8.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu_8; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # Ubuntu specific extension to stage3 xserver.sh - # use the old kbd keyboard driver instead of evdev - sed "s/\"evdev\"/,/\"kbd\"/" -i ${xfc} - testmkd /mnt/var/run/xauth - testmkd /mnt/var/lib/xkb - ln -sf /usr/bin/Xorg /mnt/etc/X11/X - End-of-Here - - return $script; -} - - -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh nvidia $distroName"); - -} - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh ati $distroName"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm deleted file mode 100644 index 80dccbc9..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2008..2010 - 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/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu_9.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu_9; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Ubuntu_8); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm b/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm deleted file mode 100644 index b172dc22..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm +++ /dev/null @@ -1,396 +0,0 @@ -# Copyright (c) 2008 - 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/ -# ----------------------------------------------------------------------------- -# xserver.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::xserver; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -use File::Basename; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'xserver', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - This plugin tries to configure the local Xorg-Server and - integrates binary graphics drivers (closed sourced) into the system. - Notice that you need to have kernel-headers installed to work properly. - in some cases. You need to download the driver packages yourself and - supply the download folder into the pkgpath option. - End-of-Here - precedence => 80, - }; -} - -sub getAttrInfo -{ # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'xserver::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'xserver::ddcinfo' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin use the ddcinfo (if available) for - the monitor/tft setup? Might help in scenarios with resolutions - configured much lower than physically possible. (0 ignore, 1 use) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 ignore ddcinfo, 1 use ddcinfo if available', - default => '0', - }, - 'xserver::driver' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - force to use defined driver - End-of-Here - content_regex => undef, - content_descr => 'force to use defined driver', - default => undef, - }, - 'xserver::prefnongpl' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin use the non-gpl drivers for some graphic - adaptors if available (0 prefer gpl, 1 use the nongpl) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 prefer gpl, 1 use the nongpl', - default => '0', - }, - 'xserver::multihead' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin configure multi-head setups of Xorg - for different scenarios and dynamically added displays - (not implemented yet) - End-of-Here - content_regex => undef, - content_descr => '', - default => '1', - }, - - # plugin specific attributes start here ... - - # stage1 - # Currently not needed in scenarios where distro specific packages are - # available, but for example in SUSE 10.2 we use this method - # -> provide downloaded packages here. - 'xserver::pkgpath' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Path to downloaded ATI or Nvidia package - End-of-Here - content_regex => qr{^.+$}, # not empty - content_descr => 'Path to Nvidia or ATI packages', - default => '/root/xserver-pkgs', - }, - 'xserver::ati' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the non-gpl ATI drivers be available (installed in vendor-OS - not implemented yet)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1"', - default => '0', - }, - 'xserver::nvidia' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the non-gpl NVidia drivers be available (installed in vendor-OS - not implemented yet)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1"', - default => '0', - }, - #'xserver::matrox' => { - # applies_to_vendor_os => 1, - # description => unshiftHereDoc(<<' End-of-Here'), - # should the non-gpl Matrox drivers (e.g. for the Parhelia) be - # available (installed in vendor-OS)? - # End-of-Here - # content_regex => qr{^0|1$}, - # content_descr => '"0", "1"', - # default => '0', - #}, - }; -} - - -sub preInstallationPhase() -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - $self->{vendorOsPath} = $info->{'vendor-os-path'}; - - - my $pkgpath = $self->{attrs}->{'xserver::pkgpath'}; - $pkgpath ||= ""; - my $installAti = $self->{attrs}->{'xserver::ati'}; - my $installNvidia = $self->{attrs}->{'xserver::nvidia'}; - - if (! -d $pkgpath && ($installAti == 1 || $installNvidia == 1)) { - print "\n\n * xserver::pkgpath: no such directory!\n"; - print " * xserver plugin can only install ATI or Nvidia driver\n"; - print " via operating system packaging (e.g. != SuSE-10.2)!\n"; - # exit 1 => xserver plugin is not getting installed because ati - # or nvidia where selected but are not installable! - # exit 1; - } - - if (-d $pkgpath && ($installNvidia == 1 || $installAti == 1)) { - system("cp -r $pkgpath $self->{pluginRepositoryPath}/packages"); - } - -} - - -sub installationPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to install required files into the vendor-OS. - my $self = shift; - my $info = shift; - - # ehh... every plugin has it's own different installationPhase - # variable definition? - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $openslxBasePath = $info->{'openslx-base-path'}; - # the openslx base path (/opt/openslx) bind-mounted into the chroot - my $openslxConfigPath = $info->{'openslx-config-path'}; - # the openslx config path (/etc/opt/openlsx) bind-mounted into the - # chroot - my $attrs = $info->{'plugin-attrs'}; - # attributes in effect for this installation - my $vendorOSName = $self->{'os-plugin-engine'}->{'vendor-os-name'}; - - # write the distro specific extension (inclusion) of XX_xserver.sh - my $script = $self->{distro}->setupXserverScript($pluginRepoPath); - spitFile("$pluginRepoPath/xserver.sh", $script); - - # if defined: build nvidia or ati binarys - my $pluginFilesPath = - "$openslxBasePath/lib/plugins/$self->{'name'}/files"; - my $installationPath = "$pluginRepoPath/"; - my $binDrivers = 0; - my $engine = $self->{'os-plugin-engine'}; - - # removeLinks is to remove Links to the files - # TODO: In future versions this call can be removed - deprecated version - $self->removeLinks(); - - if ($attrs->{'xserver::nvidia'} == 1 || $attrs->{'xserver::ati'} == 1 ) { - if($vendorOSName =~ /.*?ubuntu.*?/i) - { - if($vendorOSName =~ /.*?8.10|9.04|9.10.*?/i) - { - copyFile("$pluginFilesPath/ubuntu-ng-gfx-install.sh", - "$installationPath"); - rename("$installationPath/ubuntu-ng-gfx-install.sh", - "$installationPath/ubuntu-gfx-install.sh"); - } - else - { - copyFile("$pluginFilesPath/ubuntu-gfx-install.sh", "$installationPath"); - } - } - $binDrivers = 1; - } - if ($attrs->{'xserver::ati'} == 1 ) { - $self->{distro}->installAti($pluginRepoPath,"packages"); - } - if ($attrs->{'xserver::nvidia'} == 1 ) { - $self->{distro}->installNvidia($pluginRepoPath,"packages"); - } - - if ($binDrivers == 1) { - $self->ldconf($info); - system("chmod -R 755 $installationPath"); - } - - return; -} - -sub removalPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to uninstall no longer required files from the vendor-OS. - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - - - # TODO (in far future): Remove - linking is deprecated - # Make sure nobody has installed the old plugin version - $self->removeLinks(); - - return; -} - - - -# Create ld.so.conf for the binary drivers -sub ldconf -{ - my $self = shift; - my $info = shift; - - my $attrs = $info->{'plugin-attrs'}; - my $ldincl = $info->{'plugin-repo-path'}.'/'; - my $ldpl = "/etc/ld.conf.preload"; - my $ldconf = "/etc/ld.so.conf"; - my $ldcache = ""; - - if( -d $ldincl.'nvidia/') { - - ## WRITE ld.so.conf ## - - open(IN,'>'.$ldincl.'nvidia/ld.so.conf'); - print IN $ldincl."nvidia/usr/lib\n".$ldincl.'nvidia/usr/X11R6/lib'; - close(IN); - - ## CREATE DIFFERENT 'ld.so.cache' ## - - $ldcache = $ldincl.'/nvidia/ld.so.cache'; - system('sed -e "1s,^,include '.$ldincl.'nvidia/ld.so.conf\n,g" -i '.$ldconf); - #print "Calling ldconfig to create $ldcache ... Please Wait\n"; - system('ldconfig -C '.$ldcache); - system('sed -e "1d" -i '.$ldconf); - } - - - if( -d $ldincl.'ati/') { - open(IN,'>'.$ldincl.'ati/ld.so.conf'); - print IN $ldincl."ati/usr/lib\n".$ldincl.'ati/usr/X11R6/lib'; - close(IN); - - $ldcache = $ldincl.'/ati/ld.so.cache'; - system('sed -e "1s,^,include '.$ldincl.'ati/ld.so.conf\n,g" -i '.$ldconf); - #print "Calling ldconfig to create $ldcache ... Please Wait\n"; - system('ldconfig -C '.$ldcache); - system('sed -e "1d" -i '.$ldconf); - } -} - - -# deprecated -# removes linked libraries from /usr/lib/ -sub removeLinks -{ - my $instFolders = "/usr/lib"; - if(-d "/usr/X11R6/lib") { - $instFolders .= " /usr/X11R6/lib"; - } - my $divertFolder = "/var/X11R6/lib"; - my $pluginFolder = "/opt/openslx/plugin-repo/xserver"; - - # get all previously installed links - my @linkedFiles = - `find $instFolders -lname "$divertFolder*" -o -lname "$pluginFolder*" `; - - - # also remove _MESA backup files - my @backupFiles = - `find $instFolders -name "*_MESA.so*"`; - my $origfile = ''; - for my $file (@backupFiles) { - $origfile = $file; - $file =~ s/_MESA//; - rename($origfile,$file); - } - unlink "/usr/lib/libGL.so", "/usr/lib/libGL.so.1"; - symlink "/usr/lib/libGL.so.1.2", "/usr/lib/libGL.so.1"; - symlink "/usr/lib/libGL.so.1.2", "/usr/lib/libGL.so"; - - - foreach my $file (@linkedFiles) { - chomp($file); - unlink $file; - } - - # this should not print any file at all ;-( - my @files = `find $instFolders -lname "$divertFolder*" -o -lname "$pluginFolder*" `; - if ( $#files > 0 ) { - print "Links were not removed properly! Exiting!\n"; - my $bla; - foreach (@files) { - chomp($bla = $_); - print $bla; - } - exit(1); - } - return; -} - -1; diff --git a/os-plugins/plugins/xserver/XX_xserver.sh b/os-plugins/plugins/xserver/XX_xserver.sh deleted file mode 100644 index 1b757901..00000000 --- a/os-plugins/plugins/xserver/XX_xserver.sh +++ /dev/null @@ -1,351 +0,0 @@ -# Copyright (c) 2008 - RZ Uni Freiburg -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'xserver' plugin - the runlevel script setting up the Xorg -# configuration and checking for 3D capabilities and non-gpl drivers -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# defining a set of stanard configuration blocks -x_modpath='Section "Files" -# ModulePath "/usr/lib/xorg/modules/,/usr/lib64/xorg/modules/" -EndSection' -x_srvflags='Section "ServerFlags" - Option "AllowMouseOpenFail" - Option "AllowEmptyInput" "false" - Option "blank time" "5" - Option "standby time" "10" - Option "suspend time" "15" - Option "off time" "20" -EndSection' -x_modules='Section "Module" - Load "i2c" - Load "bitmap" - Load "ddc" - Load "extmod" - Load "freetype" - Load "int10" - Load "vbe" - Load "glx" - Load "dri" -EndSection' -x_mouse='Section "InputDevice" - Identifier "Generic Mouse" - Driver "mouse" -# Option "Device" "/dev/input/mice" -# Option "Protocol" "ImPS/2" -# Option "ZAxisMapping" "4 5" -# Option "Emulate3Buttons" "true" - Option "CorePointer" -EndSection' -x_keyboard='Section "InputDevice" - Identifier "Generic Keyboard" - Driver "evdev" - Option "CoreKeyboard" - Option "XkbRules" "xorg" - Option "XkbModel" "pc105" - Option "XkbLayout" "us" -EndSection' -x_videocard='Section "Device" - Identifier "Generic Video Card" - Driver "vesa" -# BusID "PCI:xx" #especially needed for fglrx -EndSection' -x_monitor='Section "Monitor" - Identifier "Generic Display" - Option "DPMS" -# Modelname "could be enabled via xserver::ddcinfo attribute" -# Vertrefresh ... -# Horizsync ... -# DisplaySize ... -EndSection' -x_screen='Section "Screen" - Identifier "Default Screen" - Device "Generic Video Card" - Monitor "Generic Display" - DefaultDepth 24 -# SubSection "Display" -# Depth 24 -# Modes "1024x768" "800x600" -# EndSubSection -EndSection' -x_srvlayout='Section "ServerLayout" - Identifier "Default Layout" - Screen "Default Screen" - InputDevice "Generic Keyboard" - InputDevice "Generic Mouse" -EndSection' -x_dri='Section "DRI" - Mode 0666 -EndSection' -# Xorg configuration file location -xfc="/mnt/etc/X11/xorg.conf" - -# read the central configuration file (fixme: should the keyboard layout -# defined within the xserver plugin settings - probably not, dvs) -if [ -e /initramfs/machine-setup ] ; then - . /initramfs/machine-setup -else - error " The central configuration file 'machine-setup' (produced by the \ -slxconfig-demuxer\n and transported via fileget) is not present" nonfatal -fi - -if [ -e /etc/slxsystem.conf ]; then - . /etc/slxsystem.conf -fi - -# directory for libGL, DRI library links to point to proper library set -# depending on the hardware environment -glliblinks="/mnt/var/X11R6/lib/" -testmkd ${glliblinks} - -# check for the existance of plugin configuration and non-existance of an -# admin provided config file in ConfTGZ -if [ -e /initramfs/plugin-conf/xserver.conf -a \ - ! -f /rootfs/etc/X11/xorg.conf ]; then - . /initramfs/plugin-conf/xserver.conf - # check if driver set via xserver_driver - # if so check for xserver_prefnongpl and xserver_driver because you want to - # force driver even if xserver_prefnongpl=0 - # eg: [ -n "$xserver_driver" -o "$xserver_prefnongpl" -eq 1 ] - if [ -n "$xserver_driver" ]; then - if `grep -qi "Server Module" /etc/hwinfo.gfxcard`; then - sed -i "s,XFree86.*,FORCED XFree86 v4 Server Module: ${xserver_driver}," \ - /etc/hwinfo.gfxcard - echo -e "\n# File modified by $1" >> /etc/hwinfo.gfxcard - echo "# Reason: attribute server_driver set to ${xserver_driver}" \ - >> /etc/hwinfo.gfxcard - else - echo -e "\n# File modified by $1" >> /etc/hwinfo.gfxcard - echo "# Reason: attribute server_driver set to ${xserver_driver}" \ - >> /etc/hwinfo.gfxcard - echo "FORCED XFree86 v4 Server Module: ${xserver_driver}" >> /etc/hwinfo.gfxcard - fi - fi - # do not start any configuration if the admin provided a preconfigured - # xorg.conf in /rootfs/etc/X11/xorg.conf - if [ $xserver_active -ne 0 -a ! -f /rootfs/${xfc#/mnt} ]; then - [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'xserver' os-plugin ..."; - xmodule=$(grep -i -m 1 "XFree86 v4 Server Module" /etc/hwinfo.gfxcard | \ - sed "s/.*v4 Server Module: //") - # proprietary ATI/NVidia modules listed a different way with hwinfo - [ -z "$xmodule" ] || error "${hcfg_hwsetup}" nonfatal - - ###################################################################### - # begin proprietary drivers section (xorg.conf part) - ###################################################################### - - if $(grep -iq -m 1 'Module: fglrx' /etc/hwinfo.gfxcard) && \ - [ -n "$xserver_driver" -o "$xserver_prefnongpl" -eq 1 ] - then - # we have an ati card here - PLUGIN_ROOTFS="/opt/openslx/plugin-repo/xserver/ati" - if [ -f /mnt${PLUGIN_ROOTFS}/usr/X11R6/lib/dri/fglrx_dri.so -o \ - -f /mnt${PLUGIN_ROOTFS}/usr/lib/dri/fglrx_dri.so ]; then - - # this will be written before standard module path into xorg.conf - MODULE_PATH="${PLUGIN_ROOTFS}/usr/lib/xorg/modules/\,\ -${PLUGIN_ROOTFS}/usr/X11R6/lib/modules/\," - xmodule="fglrx" - PLUGIN_PATH="/mnt/${PLUGIN_ROOTFS}" - - # impossible to load it directly via stage3 insmod - yes, somehow this is too big - chroot /mnt /sbin/insmod ${PLUGIN_ROOTFS}/modules/fglrx.ko - - # workaround for bug #453 (for some ati graphics cards) - if [ $? -gt 0 -a "${slxconf_distro_name}" = "ubuntu" ]; then - xmodule="radeon" - MODULE_PATH="/usr/lib/xorg/modules/,/usr/X11R6/lib/xorg/modules/" - else - - # we need some database for driver initialization - cp -r "${PLUGIN_PATH}/etc/ati" /mnt/etc - - if [ "${slxconf_distro_name}" = "ubuntu" ]; then - echo "${PLUGIN_ROOTFS}/usr/lib/libGL.so.1" >> /mnt/etc/ld.so.preload - fi - - # if fglrx_dri.so is linked wrong -> we have to link it here - if [ "1" -eq "$( ls -l /mnt/usr/lib/dri/fglrx_dri.so \ - | grep -o "/var/X11R6.*so$" | wc -l )" ]; then - ln -s ${PLUGIN_ROOTFS}/usr/lib/dri/fglrx_dri.so \ - ${glliblinks}dri/fglrx_dri.so - fi - BUSID=$(grep -m1 -i " SysFS BusID: .*" /etc/hwinfo.gfxcard | \ - awk -F':' '{print "PCI:"$3":"$4}' | sed -e 's,\.,:,g') - echo -e "\t${PLUGIN_ROOTFS}/usr/bin/aticonfig --initial &>/dev/null"\ - >> /mnt/etc/init.d/boot.slx - ATI=1 - fi # if kernel module not loaded properly - fi - elif $(grep -iq -m 1 'Module: nvidia' /etc/hwinfo.gfxcard) && \ - [ -n "$xserver_driver" -o "$xserver_prefnongpl" -eq 1 ] - then - # we have an nvidia card here - NVIDIA=1 - PLUGIN_ROOTFS="/opt/openslx/plugin-repo/xserver/nvidia" - MODULE_PATH="${PLUGIN_ROOTFS}/usr/lib/xorg/modules/\,\ -${PLUGIN_ROOTFS}/usr/X11R6/lib/modules/\," - xmodule="nvidia" - PLUGIN_PATH="/mnt${PLUGIN_ROOTFS}" - - # if we can't find the nongpl kernel module, use gpl xorg - # nvidia driver - if [ -e ${PLUGIN_PATH}/modules/nvidia.ko ]; then - # sometimes the kernel module needs agpgart - modprobe agpgart - # insert kernel driver - chroot /mnt /sbin/insmod ${PLUGIN_ROOTFS}/modules/nvidia.ko - - - # workaround for bug #453 (Xorg does not start with ld.so.preload) - if [ "${slxconf_distro_name}" = "ubuntu" -a "${xmodule}" != "nvidia" ]; then - echo "${PLUGIN_ROOTFS}/usr/lib/libGL.so.1" >> /mnt/etc/ld.so.preload - fi - - else - xmodule="nv" - fi - - fi - - ###################################################################### - # end proprietary drivers xorg.conf section - ###################################################################### - - # write the xorg.conf completely or in files needed (depending on - # distro version) - # determine keyboard setup (fill XKEYBOARD) - localization "${country}" - - # run distro specific generated stage3 script which uses variables - # defined in the beginning of this script like ${x_*}, ${xfc} - [ -e /mnt/opt/openslx/plugin-repo/xserver/xserver.sh ] && \ - . /mnt/opt/openslx/plugin-repo/xserver/xserver.sh - - # set nodeadkeys for special layouts - if [ ${XKEYBOARD} = "de" ]; then - sed -e '/\"XkbLayout\"/a\\ \ Option "XkbVariant" "nodeadkeys"' \ - -i ${xfc} - fi - # if a synaptic touchpad is present, add it to the device list - if grep -q -E "ynaptics" /etc/hwinfo.mouse || \ - dmesg | grep -q -E "ynaptics" ; then - sed -e '/\"CorePointer\"/ { -a\ -EndSection\ -Section "InputDevice"\ - Identifier "Synaptics TP"\ - Driver "synaptics"\ - Option "Device" "/dev/input/mice"\ - Option "SendCoreEvents" "true" -}' -e '/Device "Generic Mouse"/ { -a\ \ InputDevice\ \ "Synaptics TP"\ \ \ \ \ \ "SendCoreEvents" -}' -i ${xfc} - fi - - # ModulePath for proprietary drivers (otherwise disabled) - if [ -n "$xserver_driver" -o "$xserver_prefnongpl" -eq "1" ]; then - sed -e "s,# ModulePath \", ModulePath \"${MODULE_PATH},g" \ - -i ${xfc} - fi - - ############################################ - # Copy the appropriate ld.so.cache file - ############################################ - if [ "${xmodule}" = "fglrx" -o "${xmodule}" = "nvidia" ]; then - cp ${PLUGIN_PATH}/ld.so.cache /mnt/etc/ld.so.cache - - # just in case somebody needs to run ldconfig - insert GL-Libs at the beginning - sed -e "1s,^,include ${PLUGIN_ROOTFS}/ld.so.conf\n,g" -i /mnt/etc/ld.so.conf - - if [ "${xmodule}" = "nvidia" ]; then - sed -i "s,\(Driver.*\"nvidia\"\),\1\n Option \"NoLogo\" \"True\"," ${xfc} - fi - fi - - # check if tablet hardware available, read device information from file - if [ -e /etc/tablet.conf ]; then - . /etc/tablet.conf - echo -e 'Section "InputDevice" - Driver "wacom" - Identifier "Stylus" - Option "Device" "/dev/input/wacom" - Option "Type" "stylus" - Option "ForceDevice" "ISDV4" # Tablet PC ONLY -EndSection -Section "InputDevice" - Driver "wacom" - Identifier "Pad" - Option "Device" "/dev/input/wacom" - Option "Type" "pad" - Option "ForceDevice" "ISDV4" # Tablet PC ONLY -EndSection -Section "InputDevice" - Driver "wacom" - Identifier "Eraser" - Option "Device" "/dev/input/wacom" - Option "Type" "eraser" - Option "ForceDevice" "ISDV4" # Tablet PC ONLY -EndSection -Section "InputDevice" - Driver "wacom" - Identifier "Cursor" - Option "Device" "/dev/input/wacom" - Option "Type" "cursor" - Option "ForceDevice" "ISDV4" # Tablet PC ONLY -EndSection' >> ${xfc} - sed -e "s,/dev/input/wacom,/dev/${wacomdev}," \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "Stylus" "SendCoreEvents"' \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "Pad" "SendCoreEvents"' \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "Cursor" "SendCoreEvents"' \ - -e '/e \"Generic Mouse\"/a\\ \ InputDevice "Eraser" "SendCoreEvents"' \ - -i ${xfc} - fi - - # some configurations produce no proper screen resolution without - # Horizsync and Vertrefresh set (more enhancements might be needed for - # really old displays like CRTs) - if [ $xserver_ddcinfo -ne 0 ] ; then - # read /etc/hwinfo.display started at "runinithook '00-started'" - vert=$(grep -m 1 "Vert.*Range:" /etc/hwinfo.display | \ - sed 's|.*Range:\ ||;s|\ Hz||') - horz=$(grep -m 1 "Hor.*Range:" /etc/hwinfo.display | \ - sed 's|.*Range:\ ||;s|\ kHz||') - modl=$(grep -m 1 " Model: " /etc/hwinfo.display | \ - sed 's|.*Model:\ ||;s|"||g') - size="$(grep -m 1 " Size: " /etc/hwinfo.display | \ - sed 's|.*ize:\ ||;s|\ mm||;s|x|\ |')" - modes=$(grep -i "Resolution: .*@" /etc/hwinfo.display | \ - awk '{print $2}'| sort -unr| awk -F '@' '{print "\"" $1 "\""}'|\ - tr "\n" " ") - [ -n "$vert" -a -n "$horz" ] && \ - sed -e "s|# Horizsync.*| Horizsync $horz|;\ - s|# Vertrefre.*| Vertrefresh $vert|;\ - s|# Modelname.*| Modelname \"$modl\"|" -i ${xfc} - [ -n "$size" ] && \ - sed -e "s|# DisplaySi.*| DisplaySize $size|" -i ${xfc} - [ -n "$modes" ] && \ - sed -e "s|# SubSection.*| SubSection \"Display\"|;\ - s|# Depth 24.*| Depth 24|;\ - s|# Modes.*| Modes $modes|;\ - s|# EndSubSection.*| EndSubSection|;" -i ${xfc} - - fi - - [ $DEBUGLEVEL -gt 0 ] && echo "done with 'xserver' os-plugin ..." - - fi -elif [ ! -e /initramfs/plugin-conf/xserver.conf ]; then - [ $DEBUGLEVEL -gt 2 ] && \ - echo "No configuration file found for xserver plugin." -fi diff --git a/os-plugins/plugins/xserver/files/README b/os-plugins/plugins/xserver/files/README deleted file mode 100644 index c13d9570..00000000 --- a/os-plugins/plugins/xserver/files/README +++ /dev/null @@ -1,77 +0,0 @@ -Some development notes -====================== - - -Infos about ati-packages: -Most are identical, even when 64bit packages have a different name -Only a couple of cards have its own special package. We need to -investigate, if they are different or one package works for all. - -It seems - only for the FireMV 2200 PCI graphics card, they offer an older -version (8.25) of the unified fglrx-driver. For the FirMV PCIE-Card they -offer a more recent Version (8.5). -By the time of writing the drivers were at version 8.7 - -From the ATI-FAQ: - -Q2: Which ATI graphics cards can use this driver? -A2: The ATI Proprietary Linux driver currently supports Radeon 8500 and -later AGP or PCI Express graphics products, as well as ATI FireGL 8700 -and later products. We do not currently plan to include support for any -products earlier than this. - -Support for earlier graphics card can be achieved by "radeon" or "ati" drivers! - -=============================================================================== - -Infos about nvidia packages: -they seem to differ much more as ati if you search directly for a -specific graphic card. But if you take a look on -http://www.nvidia.com/object/unix.html there seem to be just 3 different -ersions - all for different architectures (ia32, ia64, amd64) - - - -Supported graphics cards can be read from the nvidia-documentation - -For the 173.14.12-NVIDIA-Driver go to -http://www.nvidia.com/object/linux_display_ia32_173.14.12.html -and click on "Supported Products List" on the right side - -(below each unified driver a line to symbolize the evolution of - drivers - correct me if I'm wrong) - -173.14.12 driver: GeForce FX 5100 & all newer supported - |----------------------------------> - 71.86.06 driver: Riva TNT - GeForce 6800 Ultra -|---------------| - 96.43.07 driver: some GeForce3 - GeForce 7900 ?? - |---------------| - -The Question is, wether we need to support older graphics cards. -Probably we don't need to bother because the user can download right -driver package for his needs - almost the same interfaces for the installer... - - - -=============================================================================== -Taken from the readme on -http://us.download.nvidia.com/XFree86/Linux-x86/96.43.07/README/README.txt - -since 96.43.07 no longer supported in the unified driver: - - NVIDIA chip name Device PCI ID - ---------------------------------- ---------------------------------- - RIVA TNT 0x0020 - RIVA TNT2/TNT2 Pro 0x0028 - RIVA TNT2 Ultra 0x0029 - Vanta/Vanta LT 0x002C - RIVA TNT2 Model 64/Model 64 Pro 0x002D - Aladdin TNT2 0x00A0 - GeForce 256 0x0100 - GeForce DDR 0x0101 - Quadro 0x0103 - GeForce2 GTS/GeForce2 Pro 0x0150 - GeForce2 Ti 0x0151 - GeForce2 Ultra 0x0152 - Quadro2 Pro 0x0153 diff --git a/os-plugins/plugins/xserver/files/ati-install.sh b/os-plugins/plugins/xserver/files/ati-install.sh deleted file mode 100755 index 662b96bf..00000000 --- a/os-plugins/plugins/xserver/files/ati-install.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -cd /opt/openslx/plugin-repo/xserver - -DISTRO=$1 -case $DISTRO in - - ubuntu-9.10*) - ./ubuntu-ng-gfx-install.sh ati ${DISTRO} - ;; - ubuntu-9.04*) - ./ubuntu-ng-gfx-install.sh ati ${DISTRO} - ;; - ubuntu-8.10*) - ./ubuntu-ng-gfx-install.sh ati ${DISTRO} - ;; - ubuntu-*) - ./ubuntu-gfx-install.sh ati ${DISTRO} - ;; - - suse-*) - ./suse-gfx-install.sh ati ${DISTRO} - ;; -esac diff --git a/os-plugins/plugins/xserver/files/nvidia-install.sh b/os-plugins/plugins/xserver/files/nvidia-install.sh deleted file mode 100755 index aa2b2269..00000000 --- a/os-plugins/plugins/xserver/files/nvidia-install.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/bash - -########################################################## -# Installs NVIDIA binary drivers into openslx plugin-repo -########################################################## -PLUGIN_PATH="/opt/openslx/plugin-repo/xserver" - -# we could easily pass this information via calling stage1 script and do not -# need to find it our here ... -DISTRO=$1 - - -# for development we take the only kernel version from normal systems -if [ -L /boot/vmlinuz ]; then - KVERS=$(ls -l /boot/vmlinuz | awk -F "->" '{print $2}'| grep -P -o "2.6.*") -else - KVERS=$(ls /boot/vmlinuz-* | head -n1 | awk -F "->" '{print $2}' | grep -P -o "2.6.*" ) -fi - - -#change to plugin path -cd ${PLUGIN_PATH} - -case ${DISTRO} in - ubuntu-9.10*) - ./ubuntu-ng-gfx-install.sh nvidia ${DISTRO} - ;; - ubuntu-9.04*) - ./ubuntu-ng-gfx-install.sh nvidia ${DISTRO} - ;; - ubuntu-8.10*) - ./ubuntu-ng-gfx-install.sh nvidia ${DISTRO} - ;; - ubuntu*) - ./ubuntu-gfx-install.sh nvidia ${DISTRO} - ;; - suse-1*) - ./suse-gfx-install.sh nvidia ${DISTRO} - ;; - # general purpose nvidia installer script - *) - echo "* Running general NVidia installer (expected in xserver::pkgpath)" - # unpack the nvidia installer; quickhack - expects just one package - echo " * Unpacking installer" - sh packages/NVIDIA-Linux-*.run -a -x >>nvidia-inst.log 2>&1 - # prefix and paths should be matched more closely to each distro - # just demo at the moment ... but working at the moment - # without the kernel module - stdprfx=/opt/openslx/plugin-repo/xserver/nvidia - - # backing up libglx.so and libGLcore.so - BACKUP_PATH=${stdprfx}/../mesa/usr/lib/xorg/modules/extensions - mkdir -p ${BACKUP_PATH} - if [ -f /usr/lib/xorg/modules/extensions/libglx.so ]; then - cp /usr/lib/xorg/modules/extensions/libGLcore.so ${BACKUP_PATH} - cp /usr/lib/xorg/modules/extensions/libglx.so ${BACKUP_PATH} - elif [ -f /usr/X11R6/lib/xorg/modules/extensions/libglx.so ]; then - cp /usr/X11R6/lib/xorg/modules/extensions/libglx.so ${BACKUP_PATH} - cp /usr/X11R6/lib/xorg/modules/extensions/libGLcore.so ${BACKUP_PATH} - touch ${BACKUP_PATH}/X11R6 - fi - if [ -f /usr/lib/libGL.so.1.2 ]; then - cp /usr/lib/libGL.so.1.2 ${BACKUP_PATH}/../../.. - elif [ -f /usr/X11R6/lib/libGL.so.1.2 ]; then - cp /usr/X11R6/lib/libGL.so.1.2 ${BACKUP_PATH}/../../.. - touch ${BACKUP_PATH}/../../../X11R6 - fi - - - # run the lib installer - echo " * Starting the library installer" - echo "Starting the lib installer" >>nvidia-inst.log - $(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N --no-abi-note \ - --x-prefix=${stdprfx}/usr --x-library-path=${stdprfx}/usr/lib \ - --x-module-path=${stdprfx}/usr/lib/xorg/modules \ - --opengl-prefix=${stdprfx}/usr --utility-prefix=${stdprfx}/usr \ - --documentation-prefix=${stdprfx}/usr --no-runlevel-check \ - --no-rpms --no-x-check --no-kernel-module \ - --log-file-name=nvidia-lib.log >>nvidia-inst.log 2>&1 - # how to get an idea of the installed kernel? - # run the kernel module creator (should be done for every kernel!?) - kernel=${KVERS} - echo " * Trying to compile a kernel module for $kernel" - echo "Starting the kernel $kernel installer" >>nvidia-inst.log - # we need the .config file in /usr/src/linux or where ever! - # we need scripts/genksyms/genksyms compiled via make scripts in /usr/src/linux - # option available in newer nvidia packages - cd /usr/src/linux-${kernel%-*} - # in suse we have the config file lying there - cp /boot/config-${kernel} .config - ARCH=$(cat .config| grep -o CONFIG_M.86=y |tail -n1|grep -o "[0-9]86") - SUFFIX=${kernel##*-} - #cp -r /usr/src/linux-${kernel%-*}-obj/i${ARCH}/${SUFFIX}/ \ - # /usr/src/linux-${kernel%-*} - make oldconfig >/dev/null 2>&1 - make prepare >/dev/null 2>&1 - cd - >/dev/null 2>&1 - #/usr/src/linux-${kernel%-*} - addopts="--no-cc-version-check" - $(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N -K --no-abi-note \ - --kernel-source-path=/usr/src/linux-${kernel%-*} \ - --kernel-include-path=/usr/src/linux-${kernel%-*}-obj/i${ARCH}/${SUFFIX}/include \ - -k ${kernel} \ - --kernel-install-path=/opt/openslx/plugin-repo/xserver/nvidia/modules \ - --no-runlevel-check --no-abi-note --no-rpms ${addopts} \ - --log-file-name=nvidia-kernel.log >>nvidia-inst.log 2>&1 - if [ $? -gt 0 ];then - echo "* kernel module built failed!" - fi - echo " * Have a look into the several *.log files in " - echo " stage1/${DISTRO}/plugin-repo/xserver" - - - # redo some unwanted changes of nvidia-installer - if [ -f ${BACKUP_PATH}/libglx.so ]; then - cp ${BACKUP_PATH}/libGLcore.so /usr/lib/xorg/modules/extensions - cp ${BACKUP_PATH}/libglx.so /usr/lib/xorg/modules/extensions - if [ -f ${BACKUP_PATH}/X11R6 ]; then - cp ${BACKUP_PATH}/libGLcore.so /usr/X11R6/lib/xorg/modules/extensions - cp ${BACKUP_PATH}/libglx.so /usr/X11R6/lib/xorg/modules/extensions - fi - fi - if [ -f ${BACKUP_PATH}/../../../libGL.so.1.2 ]; then - cp ${BACKUP_PATH}/../../../libGL.so.1.2 /usr/lib - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1 - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so - elif [ -f ${BACKUP_PATH}/../../../X11R6 ]; then - cp ${BACKUP_PATH}/../../../libGL.so.1.2 /usr/X11R6/lib/ - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1 - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so - fi - - - ;; -esac - -# set a proper return value to evaluate it in the calling script -exit 0 diff --git a/os-plugins/plugins/xserver/files/suse-gfx-install.sh b/os-plugins/plugins/xserver/files/suse-gfx-install.sh deleted file mode 100755 index ac6713fb..00000000 --- a/os-plugins/plugins/xserver/files/suse-gfx-install.sh +++ /dev/null @@ -1,330 +0,0 @@ -#!/bin/bash - -# -# supported: -# nvidia: -# * 10.2 (pkg-installer) -# * 11.0 (zypper rpm packages) -# * 11.1 (zypper rpm packages) -# -# ati: -# * 10.2 (pkg-installer) -# * 11.0 (zypper rpm packages) -# * 11.1 (zypper rpm packages) -# - -# not right any more - removed from script -# is there any busybox in this environment -#BUSYBOX="/mnt/opt/openslx//busybox/busybox" - -BASE=/opt/openslx/plugin-repo/xserver -DISTRO=$2 -cd ${BASE} - -if [ -L /boot/vmlinuz ]; then - KSUFFIX=$(ls -l /boot/vmlinuz | grep -P -o -e "-[a-z]*$" ) - KVERS=$(ls -l /boot/vmlinuz | awk -F "->" '{print $2}'| grep -P -o "2.6.*") -else - KSUFFIX=$(ls /boot/vmlinuz-* | head -n1 | grep -P -o -e "-[a-z]*$" ) - KVERS=$(ls /boot/vmlinuz-* | head -n1 | awk -F "->" '{print $2}' | grep -P -o "2.6.*" ) - -fi - -if [ -z "${KSUFFIX}" ]; then - echo "Could not determine proper local kernel suffix!" - echo "This is needed to install kernel modules for graphics drivers!" - exit 1 -fi - - -buildfglrx() { - # build ATI kernel module - cd ${BASE}/ati/usr/src/kernel-modules/fglrx - rm -rf fglrx.ko >/dev/null 2>&1 - make KVER=${1} >/dev/null 2>&1 - if [ "$?" -eq "0" ]; then - cp fglrx.ko ../../../../modules - else - echo -e "Kernel module for kernel ${1} could not be built!" - fi - cd - >/dev/null 2>&1 -} - - -########################################################################## -# NVidia section -########################################################################## -if [ "$1" = "nvidia" ]; then - if [ -e nvidia/usr/lib/libGL.so.1 ]; then - exit - fi - if [ ! -d nvidia ]; then - mkdir -p nvidia/{modules,usr,temp} - fi - cd nvidia/temp - - case ${DISTRO} in - suse-10.2*) - echo "* Running general NVidia installer (expected in xserver::pkgpath)" - # unpack the nvidia installer; quickhack - expects just one package - echo " * Unpacking installer" - sh ../../packages/NVIDIA-Linux-*.run -a -x >>nvidia-inst.log 2>&1 - # prefix and paths should be matched more closely to each distro - # just demo at the moment ... but working at the moment - # without the kernel module - stdprfx=/opt/openslx/plugin-repo/xserver/nvidia - - # backing up libglx.so and libGLcore.so - bkpprfx=${stdprfx}/../mesa/lib/xorg/modules/extensions - mkdir -p ${bkpprfx} - if [ -f /usr/lib/xorg/modules/extensions/libglx.so ]; then - cp /usr/lib/xorg/modules/extensions/libGLcore.so ${bkpprfx} - cp /usr/lib/xorg/modules/extensions/libglx.so ${bkpprfx} - elif [ -f /usr/X11R6/lib/xorg/modules/extensions/libglx.so ]; then - cp /usr/X11R6/lib/xorg/modules/extensions/libglx.so ${bkpprfx} - cp /usr/X11R6/lib/xorg/modules/extensions/libGLcore.so ${bkpprfx} - touch ${bkpprfx}/../../../../X11R6 - fi - if [ -f /usr/lib/libGL.so.1.2 ]; then - cp /usr/lib/libGL.so.1.2 ${bkpprfx}/../../.. - elif [ -f /usr/X11R6/lib/libGL.so.1.2 ]; then - cp /usr/X11R6/lib/libGL.so.1.2 ${bkpprfx}/../../.. - touch ${bkpprfx}/../../../X11R6 - fi - - - # run the lib installer - echo " * Starting the library installer" - echo "Starting the lib installer" >>nvidia-inst.log - $(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N --no-abi-note \ - --x-prefix=${stdprfx}/usr --x-library-path=${stdprfx}/usr/lib \ - --x-module-path=${stdprfx}/usr/lib/xorg/modules \ - --opengl-prefix=${stdprfx}/usr --utility-prefix=${stdprfx}/usr \ - --documentation-prefix=${stdprfx}/usr --no-runlevel-check \ - --no-rpms --no-x-check --no-kernel-module \ - --log-file-name=nvidia-lib.log >>nvidia-inst.log 2>&1 - # how to get an idea of the installed kernel? - # run the kernel module creator (should be done for every kernel!?) - kernel=${KVERS} - echo " * Trying to compile a kernel module for $kernel" - echo "Starting the kernel module installer for $kernel" >>nvidia-inst.log - # we need the .config file in /usr/src/linux or where ever! - # we need scripts/genksyms/genksyms compiled via make scripts in /usr/src/linux - # option available in newer nvidia packages - cd /usr/src/linux-${kernel%-*} - # in suse we have the config file lying there - cp /boot/config-${kernel} .config - ARCH=$(cat .config| grep -o CONFIG_M.86=y |tail -n1|grep -o "[0-9]86") - SUFFIX=${kernel##*-} - cp -r /usr/src/linux-${kernel%-*}-obj/i${ARCH}/${SUFFIX}/ \ - /usr/src/linux-${kernel%-*} - make scripts >/dev/null 2>&1 - make prepare >/dev/null 2>&1 - cd - >/dev/null 2>&1 - #/usr/src/linux-${kernel%-*} - addopts="--no-cc-version-check" - $(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N -K --no-abi-note \ - --kernel-source-path=/usr/src/linux-${kernel%-*} \ - -k ${kernel} \ - --kernel-install-path=/opt/openslx/plugin-repo/xserver/nvidia/modules \ - --no-runlevel-check --no-abi-note --no-rpms ${addopts} \ - --log-file-name=nvidia-kernel.log >>nvidia-inst.log 2>&1 - if [ $? -gt 0 ];then - echo "* kernel module built failed!" - echo "* Have a look into the several log files in " - echo " stage1/${DISTRO}/plugin-repo/xserver" - fi - - - # redo some unwanted changes of nvidia-installer - if [ -f ${bkpprfx}/libglx.so ]; then - cp ${bkpprfx}/libGLcore.so /usr/lib/xorg/modules/extensions - cp ${bkpprfx}/libglx.so /usr/lib/xorg/modules/extensions - if [ -f ${bkpprfx}/X11R6 ]; then - cp ${bkpprfx}/libGLcore.so /usr/X11R6/lib/xorg/modules/extensions - cp ${bkpprfx}/libglx.so /usr/X11R6/lib/xorg/modules/extensions - fi - fi - if [ -f ${bkpprfx}/../../../libGL.so.1.2 ]; then - cp ${bkpprfx}/../../../libGL.so.1.2 /usr/lib - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1 - ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so - fi - ;; - suse-11.*) - echo "* Downloading nvidia rpm packages... this could take some time..." - # add repository for nvidia drivers - case ${DISTRO} in - suse-11.0*) - REPO=http://download.nvidia.com/opensuse/11.0/ - ;; - suse-11.1*) - REPO=http://download.nvidia.com/opensuse/11.1/ - ;; - esac - zypper --no-gpg-checks addrepo ${REPO} NVIDIA > /dev/null 2>&1 - # get URLs by virtually installing nvidia-OpenGL driver - zypper --no-gpg-checks -n -vv install -D \ - nvidia-gfxG01-kmp${KSUFFIX} > logfile 2>&1 - - # zypper refresh is requested if something is not found - if [ "1" -le "$(cat logfile | grep -o "zypper refresh"| wc -l)" ]; then - zypper --no-gpg-checks refresh >/dev/null 2>&1 - fi - - # take unique urls from logfile - URLS=$(cat logfile | grep -P -o "http://.*?rpm " | sort -u | xargs) - for RPM in $URLS; do - RNAME=$(echo ${RPM} | sed -e 's,^.*/\(.*\)$,\1,g') - if [ ! -e ${RNAME} ]; then - wget ${RPM} > /dev/null 2>&1 - fi - # We use rpm2cpio from suse to extract - if [ -f ${RNAME} ]; then - rpm2cpio ${RNAME} | cpio -id > /dev/null 2>&1 - fi - done - if [ -d ./usr/X11R6/lib ]; then - mv ./usr/X11R6/lib/* ./usr/lib/ - fi - if [ $(find ./usr/ -name *.so* 2>/dev/null | wc -l ) -eq 0 ]; then - echo " NVIDIA files failed to install via zypper!!" - exit - fi - - rm -rf ../usr - if [ -d ./usr ]; then - mv ./usr .. - fi - find lib/ -name "*.ko" -exec mv '{}' ../modules \; > /dev/null 2>&1 - if [ $? -ne 0 ]; then - echo " Could not find kernel module nvidia.ko!"; - fi - - cd .. - ;; - esac - - rm -rf temp/ - cd .. - -fi - - -############################################################################ -# ATI section -############################################################################ -if [ "$1" = "ati" ]; then - if [ -e ati/usr/lib/libGL.so.1.2 ]; then - exit - fi - - mkdir -p ati/modules ati/temp - - case ${DISTRO} in - suse-10.2*) - ### SUSE 10.2 section ### - echo "* Extracting ATI package (expected in xserver::pkgpath) ... this could take some time..." - - PKG=`find packages/ -name ati-driver*\.run | tail -n1` - PKG_VERSION=`head ${PKG} | grep -P -o "[0-9]\.[0-9]{3}"` - - chmod +x ${PKG} - - ${PKG} --extract ati/temp >/dev/null 2>&1 - - cd ati/temp/ - RPM=`./ati-installer.sh ${PKG_VERSION} --buildpkg SuSE/SUSE102-IA32 2>&1 | grep Package | awk '{print $2}' | tail -n1` - - cd .. - rpm2cpio ${RPM} 2>/dev/null | cpio -id >/dev/null 2>&1 - - - if [ -d ./usr/X11R6/lib ]; then - mv ./usr/X11R6/lib/* ./usr/lib/ - fi - if [ -d etc ]; then - cp -r etc/* /etc/ - fi - - # cleanup - rm -rf ${RPM} - cd .. - rm -rf ${PKG} - - - buildfglrx ${KVERS} - - ;; - suse-11.*) - ### SUSE 11.0 Section ### - - echo "* Downloading ati rpm packages... this could take some time..." - cd ati/temp - - # add repository for ATI drivers - case ${DISTRO} in - suse-11.0*) - zypper --no-gpg-checks addrepo http://www2.ati.com/suse/11.0/ ATI > /dev/null 2>&1 - ;; - suse-11.1*) - zypper --no-gpg-checks addrepo http://www2.ati.com/suse/11.1/ ATI > /dev/null 2>&1 - ;; - esac - # get URLs by virtually installing fglrx-OpenGL driver - zypper --no-gpg-checks -n -vv install -D ati-fglrxG01-kmp${KSUFFIX} \ - x11-video-fglrxG01 > logfile 2>&1 - - # zypper refresh is requested if something is not found - if [ "1" -le "$(cat logfile | grep -o "zypper refresh" | wc -l)" ]; then - zypper --no-gpg-check refresh >/dev/null 2>&1 - fi - - # take unique urls from logfile - URLS=$(cat logfile | grep -P -o "http://.*?rpm " | grep fglrx | sort -u | xargs) - for RPM in $URLS; do - RNAME=$(echo ${RPM} | sed -e 's,^.*/\(.*\)$,\1,g') - if [ ! -e ${RNAME} ]; then - wget ${RPM} > /dev/null 2>&1 - fi - # We use rpm2cpio from suse to extract -> propably new rpm version - if [ -f ${RNAME} ]; then - rpm2cpio ${RNAME} | cpio -id > /dev/null 2>&1 - fi - done - - if [ -d ./usr/X11R6/lib ]; then - mv ./usr/X11R6/lib/* ./usr/lib/ > /dev/null 2>&1 - fi - if [ $(find ./usr/ -name *.so* 2>/dev/null | wc -l ) -eq 0 ]; then - echo " ATI files failed to install via zypper!!" - exit - fi - - mv ./usr .. - mv ./etc .. - - find lib/ -name "*.ko" -exec mv {} ../modules \; >/dev/null 2>&1 - if [ $? -ne 0 ]; then - echo " Could not find kernel module fglrx.ko!"; - fi - - ;; - esac - cd .. - - # OpenGl implementation (libGL?) expect fglrx_dri.so in /usr/X11R6/lib/dri/ - if [ ! -f /usr/X11R6/lib/modules/dri/fglrx_dri.so -a \ - ! -f usr/X11R6/lib/modules/dri/fglrx_dri.so ]; then - if [ ! -d /usr/X11R6/lib/modules/dri ]; then - mkdir -p /usr/X11R6/lib/modules/dri - fi - if [ -f usr/lib/dri/fglrx_dri.so ]; then - ln -s ${BASE}/ati/usr/lib/dri/fglrx_dri.so \ - /usr/X11R6/lib/modules/dri/fglrx_dri.so - fi - fi - - rm -rf temp/ -fi - diff --git a/os-plugins/plugins/xserver/files/ubuntu-gfx-install.sh b/os-plugins/plugins/xserver/files/ubuntu-gfx-install.sh deleted file mode 100755 index c6ac17c9..00000000 --- a/os-plugins/plugins/xserver/files/ubuntu-gfx-install.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/sh - -# gets needed packages for ubuntu nvidia/ati drivers -# $1 = nvidia | ati -PLUGIN_FOLDER="/opt/openslx/plugin-repo/xserver" -TMP_FOLDER="/tmp/slx-plugin/xserver" -TARGET="$1" -DISTRO="$2" - -if [ ! -d "${PLUGIN_FOLDER}" ]; then - mkdir -p "${PLUGIN_FOLDER}/modules" -fi - -# change into temp -cd ${TMP_FOLDER} > /dev/null - -if [ -e "/boot/vmlinuz" ]; then - KVER=$(ls -ahl '/boot/vmlinuz' | sed -e 's,^.*vmlinuz-,,g') -else - KVER=$(find /lib/modules/2.6* -maxdepth 0|sed 's,/lib/modules/,,g'|sort|tail -n1) -fi - - -echo " * downloading restricted modules... this may take a while" -# TODO: remove commented out "> /dev/null ..." later... multiple times -# in this script! check all comments! -aptitude download linux-restricted-modules-${KVER} #> /dev/null 2&>1 -if [ $? -eq 1 ]; then - echo " * Didn't get restricted modules. Exit now!" - #TODO: remove sh when development is finished - sh - exit -fi -MODULE_DEB=$(ls linux-restricted-modules-*.deb | tail -n1) -dpkg-deb -x ${MODULE_DEB} ${TMP_FOLDER}/modules - -case ${TARGET} in - ati) - mkdir -p ${PLUGIN_FOLDER}/ati - mkdir -p ${PLUGIN_FOLDER}/ati/modules - - echo " * downloading fglrx xorg package... this may take a while" - aptitude download xorg-driver-fglrx #> /dev/null 2&>1 - if [ $? -eq 1 ]; then - echo " * Didn't get package xorg-driver-fglrx! Exit now!" - #TODO: remove sh when development is finished - sh - exit - fi - FGLRX_DEB=$(ls xorg-driver-fglrx_*.deb | tail -n1) - # extract $DEB - dpkg-deb -x ${FGLRX_DEB} ${PLUGIN_FOLDER}/ati - - # assemble module - cd modules/lib/linux-restricted-modules/${KVER}/ - ld_static -d -r -o ${PLUGIN_FOLDER}/ati/modules/fglrx.ko fglrx/* - - if [ -f /usr/lib/dri/fglrx_dri.so ]; then - mv /usr/lib/dri/fglrx_dri.so /usr/lib/dri/fglrx_dri.so.slx - else - # remove link - rm -rf /usr/lib/dri/fglrx_dri.so - fi - ln -s ${PLUGIN_FOLDER}/ati/usr/lib/dri/fglrx_dri.so \ - /usr/lib/dri/fglrx_dri.so - - # Recent ATI drivers expect the driver link in /xyz - if [ ! -d /usr/X11R6/lib/modules/dri ]; then - mkdir -p /usr/X11R6/lib/modules/dri - fi - ln -s ${PLUGIN_FOLDER}/ati/usr/lib/dri/fglrx_dri.so \ - /usr/X11R6/lib/modules/dri/fglrx_dri.so - - # cleanup - cd ${PLUGIN_FOLDER}/ati - - #@Volker: We need /etc-files - there is a database - # file for the fglrx-driver in stage3 !!! - #rm -rf ./etc - #TODO: check for more cleanups when the main part works! - - ;; - - - nvidia) - mkdir -p ${PLUGIN_FOLDER}/nvidia - mkdir -p ${PLUGIN_FOLDER}/nvidia/modules - - echo " * downloading fglrx xorg package... this may take a while" - aptitude download nvidia-glx-new #> /dev/null 2&>1 - if [ $? -eq 1 ]; then - echo " * Didn't get package nvidia-glx-new!" - #TODO: remove sh when development is finished - sh - exit - fi - #Bastian: what is this? please explain - #aptitude download nvidia-glx - NVIDIA_DEB=$(ls nvidia-glx*.deb | tail -n1) - # extract $DEB - dpkg-deb -x ${NVIDIA_DEB} ${PLUGIN_FOLDER}/nvidia - - # assemble module - we just need the new one here - # TODO: modules for older graphics hardware can be found here - cd modules/lib/linux-restricted-modules/${KVER}/ - ld_static -d -r -o ${PLUGIN_FOLDER}/nvidia/modules/nvidia.ko nvidia_new/* - - #TODO: if we use this part, we need to copy the check from ati, too! - #if [ -f /usr/lib/dri/fglrx_dri.so ]; then - # mv /usr/lib/dri/fglrx_dri.so /usr/lib/dri/fglrx_dri.so.slx - #else - # # remove link - # rm -rf /usr/lib/dri/fglrx_dri.so - #fi - #ln -s ${PLUGIN_FOLDER}/nvidia/nvroot/usr/lib/dri/nvidia_dri.so \ - # /usr/lib/dri/fglrx_dri.so - - # cleanup - cd ${PLUGIN_FOLDER}/nvidia - rm -rf ./etc - #TODO: check for more cleanups when the main part works! - ;; -esac - diff --git a/os-plugins/plugins/xserver/files/ubuntu-ng-gfx-install.sh b/os-plugins/plugins/xserver/files/ubuntu-ng-gfx-install.sh deleted file mode 100755 index 259f2650..00000000 --- a/os-plugins/plugins/xserver/files/ubuntu-ng-gfx-install.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!/bin/sh - -# gets needed packages for ubuntu nvidia/ati drivers -# $1 = nvidia | ati -PLUGIN_FOLDER="/opt/openslx/plugin-repo/xserver" -TMP_FOLDER="/tmp/slx-plugin/xserver" -TARGET="$1" - -if [ ! -d "${PLUGIN_FOLDER}" ]; then - mkdir -p "${PLUGIN_FOLDER}/modules" -fi - -# change into temp -cd ${TMP_FOLDER} > /dev/null - -if [ -e "/boot/vmlinuz" ]; then - KVER=$(ls -ahl '/boot/vmlinuz' | sed -e 's,^.*vmlinuz-,,g') -else - KVER=$(find /lib/modules/2.6* -maxdepth 0|sed 's,/lib/modules/,,g'|sort|tail -n1) -fi - -# TODO: check for build-essential !! - -if [ ! -e "/usr/sbin/dkms" ]; then - echo -n " * DKMS not found: installing .." - aptitude -y install dkms > /dev/null 2>&1 - if [ $? -eq 1 ]; then - echo "fail" - echo " * Didn't get package dkms! Exit now!" - exit 1 - else - echo "ok" - fi -fi - -# TODO: find a more clean way for this workaround -# the current dkms script included in ubuntu is trying to compile -# kernel modules under the user nobody using "su" which is not -# working in the installation phase of the plugin. - -if [ $(grep -c "getent passwd nobody" /usr/sbin/dkms) -ne 0 ]; then - echo -n " * Patch DKMS not to run under user nobody .." - sed -i "s/getent passwd nobody/getent passwd N0/" \ - /usr/sbin/dkms - echo "ok" -fi - -case ${TARGET} in - ati) - mkdir -p ${PLUGIN_FOLDER}/ati/modules - - echo -n " * downloading fglrx xorg package... " - aptitude download xorg-driver-fglrx > /dev/null 2>&1 - if [ $? -eq 1 ]; then - echo "fail" - echo " * Didn't get package xorg-driver-fglrx! Exit now!" - exit 1 - else - echo "ok" - fi - FGLRX_DEB=$(ls xorg-driver-fglrx_*.deb | tail -n1) - # extract $DEB - dpkg-deb -x ${FGLRX_DEB} ${PLUGIN_FOLDER}/ati - - echo -n " * downloading fglrx kernel package... " - aptitude download fglrx-kernel-source >/dev/null 2>&1 - if [ $? -eq 1 ]; then - echo "fail" - echo " * Didn't get package fglrx-kernel-source!" - exit 1 - else - echo "ok" - fi - - FGLRX_KERNEL_DEB=$(ls fglrx-kernel-source*.deb | tail -n1) - dpkg-deb -x ${FGLRX_KERNEL_DEB} / - - FGLRX_SOURCE_DIR=$(find /usr/src/fglrx-${FGLRX_DRIVER_VERSION}* \ - -maxdepth 0 -type d) - FGLRX_FULL_VERSION=$(echo ${FGLRX_SOURCE_DIR} | \ - sed -e 's/\/usr\/src\/fglrx-//') - - FGLRX_DKMS_DIR="/var/lib/dkms/fglrx/${FGLRX_FULL_VERSION}" - - if [ -d /var/lib/dkms/fglrx/${FGLRX_FULL_VERSION} ]; then - if [ ! -L ${FGLRX_DKMS_DIR}/source ]; then - ln -sf ${FGLRX_SOURCE_DIR} ${FGLRX_DKMS_DIR}/source - fi - else - echo -n " * Add fglrx kernel module to dkms tree... " - dkms add -m fglrx -v ${FGLRX_FULL_VERSION} >/dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "ok" - else - echo "fail" - exit 1 - fi - fi - - ###### build kernel module ###### - echo -n " * Building fglrx kernel module for kernel ${KVER}... " - dkms -m fglrx -v ${FGLRX_FULL_VERSION} \ - -k ${KVER} \ - --kernelsourcedir /usr/src/linux-headers-${KVER}/ \ - --no-prepare-kernel \ - --no-clean-kernel \ - build \ - > /tmp/dkms.log 2>&1 - if [ $? -eq 0 ]; then - echo "ok" - else - if $(cat /tmp/dkms.log | grep -q "has already"); then - echo "--- fglrx module already built ---" - else - echo "fail" - echo "------ dkms.log -----" - cat /tmp/dkms.log - echo "---------------------" - rm /tmp/dkms.log - exit 1 - fi - fi - - FGLRX_MODULE_PATH=$(find ${FGLRX_DKMS_DIR}/${KVER}/ -name fglrx.ko \ - | tail -n1 ) - - cp ${FGLRX_MODULE_PATH} ${PLUGIN_FOLDER}/ati/modules/fglrx.ko - - # cleanup - if [ -f /usr/lib/dri/fglrx_dri.so ]; then - mv /usr/lib/dri/fglrx_dri.so /usr/lib/dri/fglrx_dri.so.slx - else - # remove link - rm -rf /usr/lib/dri/fglrx_dri.so - fi - ln -s ${PLUGIN_FOLDER}/ati/usr/lib/dri/fglrx_dri.so \ - /usr/lib/dri/fglrx_dri.so - - # cleanup - rm /tmp/dkms.log - cd ${PLUGIN_FOLDER}/ati - - ;; - - - nvidia) - mkdir -p ${PLUGIN_FOLDER}/nvidia/modules - - NVIDIA_DRIVER_VERSION=173 - - echo -n " * downloading nvidia xorg package... " - aptitude download nvidia-glx-${NVIDIA_DRIVER_VERSION} > /dev/null 2>&1 - if [ $? -eq 1 ]; then - echo "fail" - echo " * Didn't get package nvidia-glx-${NVIDIA_DRIVER_VERSION}!" - exit 1 - else - echo "ok" - fi - - echo -n " * downloading nvidia kernel package... " - aptitude download nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source >/dev/null 2>&1 - if [ $? -eq 1 ]; then - echo "fail" - echo " * Didn't get package nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source!" - exit 1 - else - echo "ok" - fi - - NVIDIA_DEB=$(ls -1 nvidia-glx*.deb | tail -n1) - NVIDIA_KERNEL_DEB=$(ls -1 nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source*.deb | tail -n1) - # extract $DEB - dpkg-deb -x ${NVIDIA_DEB} ${PLUGIN_FOLDER}/nvidia - # extract the sources deb to root - dpkg-deb -x ${NVIDIA_KERNEL_DEB} / - - NVIDIA_SOURCE_DIR=$(find /usr/src/nvidia-${NVIDIA_DRIVER_VERSION}* \ - -maxdepth 0 -type d) - NVIDIA_FULL_VERSION=$(echo ${NVIDIA_SOURCE_DIR} | \ - sed -e 's/\/usr\/src\/nvidia-//') - - NVIDIA_DKMS_DIR="/var/lib/dkms/nvidia/${NVIDIA_FULL_VERSION}" - - if [ -d /var/lib/dkms/nvidia/${NVIDIA_FULL_VERSION} ]; then - if [ ! -L ${NVIDIA_DKMS_DIR}/source ]; then - ln -sf ${NVIDIA_SOURCE_DIR} ${NVIDIA_DKMS_DIR}/source - fi - else - echo -n " * Add nvidia kernel module to dkms tree... " - dkms add -m nvidia -v ${NVIDIA_FULL_VERSION} >/dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "ok" - else - echo "fail" - exit 1 - fi - fi - - ###### build kernel module ###### - echo -n " * Building nvidia kernel module for kernel ${KVER}... " - dkms -m nvidia -v ${NVIDIA_FULL_VERSION} \ - -k ${KVER} \ - --kernelsourcedir /usr/src/linux-headers-${KVER}/ \ - --no-prepare-kernel \ - --no-clean-kernel \ - build \ - > /tmp/dkms.log 2>&1 - if [ $? -eq 0 ]; then - echo "ok" - else - if $(cat /tmp/dkms.log | grep -q "has already"); then - echo "--- nvidia module already built ---" - else - echo "fail" - echo "------ dkms.log -----" - cat /tmp/dkms.log - echo "---------------------" - rm /tmp/dkms.log - exit 1 - fi - fi - - NVIDIA_MODULE_PATH=$(find ${NVIDIA_DKMS_DIR}/${KVER}/ -name \ - nvidia.ko | tail -n 1) - - cp ${NVIDIA_MODULE_PATH} ${PLUGIN_FOLDER}/nvidia/modules/nvidia.ko - - # cleanup - rm /tmp/dkms.log - cd ${PLUGIN_FOLDER}/nvidia - rm -rf ./etc - #TODO: check for more cleanups when the main part works! - ;; -esac - diff --git a/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh b/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh deleted file mode 100644 index 0b08ec13..00000000 --- a/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) 2008 - RZ Uni Freiburg -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program/file 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 feedback to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org -# -# stage3 part of 'xserver' plugin - the runlevel script setting up the Xorg -# configuration and checking for 3D capabilities and non-gpl drivers -# -# script is included from init via the "." load function - thus it has all -# variables and functions available - -# get an idea of the installed graphics hardware - might be needed if the -# automatic Xorg configation fails in this field. If no useable info was -# detected just delete the file. - -# tablet detection function -tabletdetect () { - sleep 1; waitfor /etc/hwinfo.bios 20000 - # quickhack for IBM X61/ACER tablet detection (some kind of positive list - # or external admin configurable file needed) - if grep -qiE "tablet|TravelMate C200" /etc/hwinfo.bios ; then - echo 'wacomdev="ttyS0"' >/etc/tablet.conf - fi - # wacom device attached to usb - code to be tested - if [ ! -e /etc/tablet.conf ]; then - if hwinfo --usb | grep -qiE "wacom|tablet" ; then - echo 'wacomdev="input/wacom"' >/etc/tablet.conf - fi - fi -} - -# hardware detection not really needed for Xorg => 1.7 used in newer versions -# distro distinguishing here not 100% conform to the OpenSLX ideas. Hardware -# detection might be needed for proprietary Xorg drivers ... -# (clean up expected with rewritten stage3) -case ${slxconf_distro_ver} in - "10.04"|"11.3") - ;; - *) - # hwinfo --gfxcard moved to general hardware detection as needed for two - # different plugins (bootsplash, xserver) - #( hwinfo --gfxcard >/etc/hwinfo.gfxcard ) & - ( hwinfo --monitor >/etc/hwinfo.display; grep "Generic Monitor" \ - /etc/hwinfo.display >/dev/null 2>&1 && rm /etc/hwinfo.display ) & - ;; -esac -( tabletdetect ) & diff --git a/os-plugins/slxos-plugin b/os-plugins/slxos-plugin deleted file mode 100755 index ccd3d389..00000000 --- a/os-plugins/slxos-plugin +++ /dev/null @@ -1,525 +0,0 @@ -#! /usr/bin/perl -# ----------------------------------------------------------------------------- -# Copyright (c) 2007 - 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/ -# ----------------------------------------------------------------------------- -use strict; -use warnings; - -my $abstract = q[ -slxos-plugin - OpenSLX-script to install/remove plugin modules into/from a vendor-OS. -]; - -# add the folder this script lives in and the lib-folder to perl's -# search path for modules: -use FindBin; -use lib "$FindBin::RealBin"; -use lib "$FindBin::RealBin/../lib"; - -use lib "$FindBin::RealBin/../config-db"; -# development path to config-db - -use Getopt::Long qw(:config pass_through); -use Pod::Usage; - -use OpenSLX::Basics; -use OpenSLX::OSPlugin::Engine; -use OpenSLX::Utils; - -my %option; - -GetOptions( - 'help|?' => \$option{helpReq}, - 'man' => \$option{manReq}, - 'verbose' => \$option{verbose}, - 'version' => \$option{versionReq}, -) - or pod2usage(2); -pod2usage(-msg => $abstract, -verbose => 0, -exitval => 1) if $option{helpReq}; -if ($option{manReq}) { - # avoid dubious problem with perldoc in combination with UTF-8 that - # leads to strange dashes and single-quotes being used - $ENV{LC_ALL} = 'POSIX'; - pod2usage(-verbose => 2); -} -if ($option{versionReq}) { - system('slxversion'); - exit 1; -} - -openslxInit(); - -my $action = shift @ARGV || ''; - -if ($action =~ m[^list-at]i) { - my $plugin = shift @ARGV; - print - $plugin - ? _tr("List of attributes supported by '%s' plugin:\n", $plugin) - : _tr("List of plugin attributes:\n"); - my $attrs = {}; - require OpenSLX::OSPlugin::Roster; - OpenSLX::OSPlugin::Roster->addAllAttributesToHash($attrs, $plugin); - print join( - '', - map { - my $attr = $attrs->{$_}; - my $stage - = $attr->{applies_to_vendor_os} ? '[stage 1]' : '[stage 3]'; - - if ($option{verbose}) { - my $output; - my $fill = ' ' x 28; - for my $key (qw( description content_descr )) { - $output .= "\n\t $key:" . ( ' ' x (15 - length($key)) ); - chomp(my $value = $attr->{$key} || ''); - $value =~ s{\n}{\n$fill}igms; - $output .= $value; - } - "\n\t$stage: $_$output\n"; - } - else { - "\t$stage: $_\n"; - } - } - sort { - my $stageDiff - = ($attrs->{$b}->{applies_to_vendor_os} || '') - cmp ($attrs->{$a}->{applies_to_vendor_os} || ''); - return $stageDiff ? $stageDiff : $a cmp $b; - } - keys %$attrs - ); -} elsif ($action =~ m[^list-av]i) { - print _tr("List of available plugins:\n"); - require OpenSLX::OSPlugin::Roster; - my $pluginInfo = OpenSLX::OSPlugin::Roster->getAvailablePlugins(); - print join( - '', - map { - if ($option{verbose}) { - my $fill = ' ' x 12; - chomp(my $descr = $pluginInfo->{$_}->{description} || ''); - $descr =~ s{\n}{\n$fill}igms; - my $pluginStr = "$_"; - my $required = $pluginInfo->{$_}->{required} || []; - if (@$required) { - $pluginStr - .= _tr(' (requires: %s)', join(',', @$required)); - } - "\n\t$pluginStr\n\t $descr\n"; - } - else { - "\t$_\n"; - } - } - sort keys %$pluginInfo - ); -} elsif ($action =~ m[^list-i]i) { - if (scalar(@ARGV) != 1) { - print STDERR _tr( - "You need to specify exactly one vendor-OS!\n" - ); - pod2usage(2); - } - my $vendorOSName = shift @ARGV; - - # for convenience, we alias default to <<<default>>> - $vendorOSName = '<<<default>>>' if $vendorOSName eq 'default'; - - # we chdir into the script's folder such that all relative paths have - # a known starting point: - chdir($FindBin::RealBin) - or die _tr("can't chdir to script-path <%> (%s)", $FindBin::RealBin, $!); - - # create OSPlugin-engine for given vendor-OS and ask it for the installed - # plugins: - my $engine = OpenSLX::OSPlugin::Engine->new; - $engine->initialize(undef, $vendorOSName); - my @installedPlugins = $engine->getInstalledPlugins(); - - if (!@installedPlugins) { - push @installedPlugins, { plugin_name => '<none>' }; - } - print _tr("List of plugins installed in vendor-OS '$vendorOSName':\n"); - print join( - '', - map { - if ($option{verbose}) { - my $attributes - = _tr("The following attributes were applied:") - . "\n\t "; - my $attrs = $_->{attrs}; - my $attrInfo = {}; - OpenSLX::OSPlugin::Roster->addAllStage1AttributesToHash( - $attrInfo, $_->{plugin_name} - ); - $attributes .= join( - "\n\t ", - map { - my $stage - = $attrInfo->{$_}->{applies_to_vendor_os} - ? '[stage 1]' - : '[stage 3]'; - "$stage $_=" - . (defined $attrs->{$_} ? $attrs->{$_} : '-') - } - sort { - (($attrInfo->{$b}->{applies_to_vendor_os} || '') - cmp ($attrInfo->{$a}->{applies_to_vendor_os} || '')) - || ($a cmp $b); - } - keys %$attrs - ); - "\n\t$_->{plugin_name}\n\t $attributes\n"; - } - else { - "\t$_->{plugin_name}\n"; - } - } - sort @installedPlugins - ); -} elsif ($action =~ m[^install]i) { - if (scalar(@ARGV) < 2) { - print STDERR _tr( - "You need to specify a vendor-OS and at least one plugin-name!\n" - ); - pod2usage(2); - } - my $vendorOSName = shift @ARGV; - my $pluginAttrs = parsePluginAttrs(1); - - # for convenience, we alias default to <<<default>>> - $vendorOSName = '<<<default>>>' if $vendorOSName eq 'default'; - - # we chdir into the script's folder such that all relative paths have - # a known starting point: - chdir($FindBin::RealBin) - or die _tr("can't chdir to script-path <%> (%s)", $FindBin::RealBin, $!); - - for my $pluginName (keys %$pluginAttrs) { - # create & start OSPlugin-engine for vendor-OS and current plugin: - my $engine = OpenSLX::OSPlugin::Engine->new; - $engine->initialize( - $pluginName, $vendorOSName, $pluginAttrs->{$pluginName} - ); - if (!-e $engine->{'plugin-path'}) { - die _tr("plugin '%s' doesn't exist, giving up!\n", - $engine->{'plugin-path'}); - } - if ($vendorOSName ne '<<<default>>>' - && !-e $engine->{'vendor-os-path'}) { - die _tr( - "vendor-OS '%s' doesn't exist, giving up!\n", - $engine->{'vendor-os-path'} - ); - } - if ($engine->installPlugin()) { - print _tr( - "Plugin $pluginName has been installed into vendor-OS '$vendorOSName'.\n" - ); - } - } -} elsif ($action =~ m[^remove]i) { - if (scalar(@ARGV) < 2) { - print STDERR _tr( - "You need to specify a vendor-OS and at least one plugin-name!\n" - ); - pod2usage(2); - } - my $vendorOSName = shift @ARGV; - - # for convenience, we alias default to <<<default>>> - $vendorOSName = '<<<default>>>' if $vendorOSName eq 'default'; - - my $pluginAttrs = parsePluginAttrs(0); - - # we chdir into the script's folder such that all relative paths have - # a known starting point: - chdir($FindBin::RealBin) - or die _tr("can't chdir to script-path <%> (%s)", $FindBin::RealBin, $!); - - for my $pluginName (keys %$pluginAttrs) { - # create & start OSPlugin-engine for vendor-OS and current plugin: - my $engine = OpenSLX::OSPlugin::Engine->new; - $engine->initialize( - $pluginName, $vendorOSName, $pluginAttrs->{$pluginName} - ); - if (!-e $engine->{'plugin-path'}) { - die _tr("plugin '%s' doesn't exist, giving up!\n", - $engine->{'plugin-path'}); - } - if ($vendorOSName ne '<<<default>>>' && !-e $engine->{'vendor-os-path'}) { - die _tr("vendor-OS '%s' doesn't exist, giving up!\n", - $engine->{'vendor-os-path'}); - } - if ($engine->removePlugin()) { - print _tr( - "Plugin $pluginName has been removed from vendor-OS '$vendorOSName'.\n" - ); - } - } -} else { - vlog(0, _tr(unshiftHereDoc(<<' END-OF-HERE'), $0)); - You need to specify exactly one action: - install <vendor-OS-name> <plugin-name> [<plugin-attr>=<value> ...] - list-attributes [<plugin-name>] - list-available - list-installed <vendor-OS-name> - remove <vendor-OS-name> <plugin-name> - Try '%s --help' for more info. - END-OF-HERE -} - -sub parsePluginAttrs -{ - my $acceptAttributes = shift; - - my (%pluginAttrs, $pluginName, @attrSpecs); - for my $arg (@ARGV) { - if ($arg =~ m{^(.+?)=(.*)$}) { - next if !$acceptAttributes; - my $attr = $1; - my $value = $2; - if ($value =~ m{^(-|undef)$}) { - $value = undef; - } - if ($attr =~ m{^(.+)::}) { - $pluginName = $1; - } - else { - if (!defined $pluginName) { - die _tr('You have to give a plugin-name before you can specify unscoped attributes!'); - } - $attr = $pluginName . '::' . $attr; - } - $pluginAttrs{$pluginName}->{$attr} = $value; - } - else { - $pluginName = $arg; - $pluginAttrs{$pluginName} = {}; - } - } - return \%pluginAttrs; -} - -=head1 NAME - -slxos-plugin - OpenSLX-script to install/remove an OS-plugin into/from an -installed vendor-OS. - -=head1 SYNOPSIS - -slxos-plugin [options] <action> - -=head3 Options - - --help brief help message - --log-level=<int> level of logging verbosity (0-3) - --man show full documentation - --verbose show more information during execution - --version show version - -=head3 Actions - -=over 8 - -=item B<< install <vendor-OS-name> <plugin-name> [<attr-name>=<value> ...] [<plugin-name>] ... >> - -Installs the OS-plugin(s) with the given name(s) into the specified -vendor-OS, using any attribute values as specified. - -In order to spare you RSI, you can leave out the plugin scope, each attribute -will be searched in the plugin that precedes it (see examples in the manual). - -=item B<< list-attributes [<plugin-name>] >> - -List all attributes supported by the different OS-plugins. If you specify a -plugin name, only the attributes of that plugin will be listed. - -In verbose mode, more details about the individual attributes are shown. - -=item B<< list-available >> - -List all available OS-plugins. - -In verbose mode a short description of each plugin will be shown, too. - -=item B<< list-installed <vendor-os-name> >> - -List all the plugins installed into the specified vendor-OS. - -In verbose mode all applied attributes are shown, too. - -=item B<< remove <vendor-OS-name> <plugin-name> [<plugin-name>] ... >> - -Removes the OS-plugin(s) with the given name(s) from the specified vendor-OS. - -If you pass in any attributes, they will be ignored. - -=back - -=head1 DESCRIPTION - -B<slxos-plugin> installs or removes specific functionality extensions into/from -an installed vendor-OS. That extension can be something rather simple (like -a boot-splash) or something rather complicated (e.g. the automatic detection, -installation and activation of the graphics driver most appropriate for the -booting client). - -Installation of any plugin will result in some files being added to the -vendor-OS (they will live in /opt/openslx/plugins/<plugin-name>/). These files -can be accessed by the booting client.in order to integrate the required -functionality into the system. - -=head1 OPTIONS - -=over 4 - -=item B<--help> - -Prints a brief help message and exits. - -=item B<--man> - -Prints the manual page and exits. - -=item B<--verbose> - -Prints more information during execution of any action. - -=item B<--version> - -Prints the version and exits. - -=back - -=head1 EXAMPLES - -=over 8 - -=head3 Installing a Plugin - -=item B<< slxos-plugin install suse-10.2 example >> - -Installs the plugin named 'example' into the installed vendor-OS 'suse-10.2'. - -=item B<< slxos-plugin install suse-10.2 desktop gdm=1 kde=1 >> - -Installs the desktop plugin into suse-10.2 and specifies two attributes. These -attributes will be stored into the vendor-OS and pulled from there by the -config-demuxer whenever it demuxes a system based on the suse-10.2 vendor-OS. - -=item B<< slxos-plugin install suse-10.2 desktop desktop::gdm=1 desktop::kde=1 >> - -Same as above, only this time with completely scoped attributes. - -=item B<< slxos-plugin install suse-10.2 desktop gdm=1 vmware binary=1 >> - -Installs two plugins (desktop and vmware) into suse-10.2. The attribute gdm=1 -will be set for desktop, while binary=1 will be set for vmware. - -=item B<< slxos-plugin install suse-10.2 desktop vmware binary=1 desktop::gdm=1 >> - -Same as above, only this time with a fully scoped attribute gdm=1, that will -be set for the desktop plugin. - -=item B<< slxos-plugin install suse-10.2 desktop vmware binary=1 gdm=1 >> - -Bogus example, which will install desktop and vmware, but try to set bianry=1 -and gdm=1 for the vmware plugin. This will fail, as vmware does not support -an attribute named gdm. - -=back - -=head3 Removing a Plugin - -=over 8 - -=item B<< slxos-plugin remove suse-10.2 example >> - -Removes the plugin named 'example' from the installed vendor-OS 'suse-10.2'. - -=item B<< slxos-plugin remove suse-10.2 desktop vmware example >> - -Removes the three plugins desktop, vmware and example from suse-10.2. - -=back - -=head3 Listing Available Plugins - -=over 8 - -=item B<< slxos-plugin list-available >> - -Gives a short list of all available plugins and their description. - -=item B<< slxos-plugin --verbose list-available >> - -Gives a detailed list of all available plugins and their description, including -the names of all attributes supported by the respective plugin. - -=back - -=head3 Listing Attributes Supported by Plugins - -=over 8 - -=item B<< slxos-plugin list-attributes >> - -Gives a short list of all supported attributes, sorted by stage and name. - -=item B<< slxos-plugin --verbose list-available desktop >> - -Gives a detailed list of the attributes supported by the 'desktop' plugin, -including a description of the purpose and possible content values of each -attribute. - -=back - -=head3 Listing Installed Plugins - -=over 8 - -=item B<< slxos-plugin list-installed suse-10.2 >> - -Gives a short list of the plugins that were installed into suse-10.2. - -=item B<< slxos-plugin --verbose list-installed suse-10.2 >> - -Gives a detailed list of the plugins that were installed into suse-10.2, -including a list of all.attributes and their respective values. - -=back -=head1 SEE ALSO - -slxsettings, slxos-setup, slxconfig, slxconfig-demuxer - -=head1 GENERAL OPENSLX OPTIONS - -Being a part of OpenSLX, this script supports several other options -which can be used to overrule the OpenSLX settings: - - --db-name=<string> name of database - --db-spec=<string> full DBI-specification of database - --db-type=<string> type of database to connect to - --locale=<string> locale to use for translations - --log-level=<int> level of logging verbosity (0-3) - --logfile=<string> file to write logging output to - --private-path=<string> path to private data - --public-path=<string> path to public (client-accesible) data - --temp-path=<string> path to temporary data - -Please refer to the C<slxsettings>-manpage for a more detailed description -of these options. - -=cut - |