summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile10
-rw-r--r--VERSIONS4
-rw-r--r--boot-env/OpenSLX/BootEnvironment/PXE.pm11
-rw-r--r--boot-env/OpenSLX/MakeInitRamFS/Distro/Suse.pm1
-rw-r--r--boot-env/OpenSLX/MakeInitRamFS/Distro/Ubuntu.pm4
-rw-r--r--boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm18
-rwxr-xr-xboot-env/pbs/uclib-rootfs/bin/bbinit19
-rwxr-xr-xboot-env/pbs/uclib-rootfs/bin/handleEvents38
-rwxr-xr-xboot-env/pbs/uclib-rootfs/etc/bbinit.d/example32
-rw-r--r--boot-env/pbs/uclib-rootfs/etc/events/example2
-rwxr-xr-xboot-env/pbs/uclib-rootfs/init34
-rwxr-xr-xboot-env/preboot/uclib-rootfs/init21
-rwxr-xr-xboot-env/syslinux/extlinuxbin52714 -> 52294 bytes
-rw-r--r--boot-env/syslinux/isolinux.binbin14336 -> 14336 bytes
-rwxr-xr-xboot-env/syslinux/mboot.c32bin31148 -> 30380 bytes
-rwxr-xr-xboot-env/syslinux/menu.c32bin57140 -> 54836 bytes
-rw-r--r--boot-env/syslinux/pxelinux.0bin16138 -> 16662 bytes
-rwxr-xr-xboot-env/syslinux/syslinuxbin25604 -> 25472 bytes
-rwxr-xr-xboot-env/syslinux/vesamenu.c32bin147728 -> 147996 bytes
-rw-r--r--initramfs/distro-specs/debian/functions-default9
-rw-r--r--initramfs/distro-specs/scilin/functions-default4
-rw-r--r--initramfs/distro-specs/suse/functions-11.295
-rw-r--r--initramfs/distro-specs/suse/functions-default10
-rw-r--r--initramfs/distro-specs/ubuntu/functions-10.0416
-rw-r--r--initramfs/distro-specs/ubuntu/functions-8.04283
-rw-r--r--initramfs/distro-specs/ubuntu/functions-8.10296
-rw-r--r--initramfs/distro-specs/ubuntu/functions-9.04280
-rw-r--r--initramfs/distro-specs/ubuntu/functions-9.102
-rw-r--r--initramfs/distro-specs/ubuntu/functions-default229
-rwxr-xr-xinitramfs/stage3-stuff/bin/hwautocfg8
-rw-r--r--initramfs/stage3-stuff/etc/functions4
-rw-r--r--initramfs/stage3-stuff/etc/messages6
-rw-r--r--initramfs/stage3-stuff/etc/messages.de6
-rwxr-xr-xinitramfs/stage3-stuff/init18
-rw-r--r--installer/OpenSLX/OSExport/Distro/Ubuntu.pm2
-rw-r--r--installer/OpenSLX/OSSetup/Distro/Base.pm10
-rw-r--r--installer/OpenSLX/OSSetup/Engine.pm17
-rw-r--r--lib/OpenSLX/DistroUtils/InitFile.pm8
-rw-r--r--lib/OpenSLX/Syscall.pm34
-rw-r--r--lib/distro-info/suse-11.2/export-filter.example15
-rw-r--r--lib/distro-info/suse-11.2/mirrors/base252
-rw-r--r--lib/distro-info/suse-11.2/mirrors/base_non-oss250
-rw-r--r--lib/distro-info/suse-11.2/mirrors/base_update252
-rw-r--r--lib/distro-info/suse-11.2/prereqfiles/etc/group33
-rw-r--r--lib/distro-info/suse-11.2/prereqfiles/etc/hosts1
-rw-r--r--lib/distro-info/suse-11.2/prereqfiles/etc/passwd14
-rw-r--r--lib/distro-info/suse-11.2/prereqfiles/etc/shadow14
-rw-r--r--lib/distro-info/suse-11.2/settings.default1126
-rw-r--r--lib/distro-info/suse-11.2/settings.example23
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc17
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc13
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc30
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc19
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc19
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc20
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc37
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc31
-rw-r--r--lib/distro-info/suse-11.2/trusted-package-keys/pubring.gpgbin0 -> 6926 bytes
-rw-r--r--lib/distro-info/suse-11.2_x86_64/mirrors/base247
-rw-r--r--lib/distro-info/suse-11.2_x86_64/mirrors/base_non-oss246
-rw-r--r--lib/distro-info/suse-11.2_x86_64/mirrors/base_update246
-rw-r--r--lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/group33
-rw-r--r--lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/hosts1
-rw-r--r--lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/passwd14
-rw-r--r--lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/shadow14
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc17
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc13
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc30
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc19
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc19
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc20
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc37
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc31
-rw-r--r--lib/distro-info/suse-11.2_x86_64/trusted-package-keys/pubring.gpgbin0 -> 6926 bytes
-rw-r--r--lib/distro-info/ubuntu-10.04/mirrors/base162
-rw-r--r--lib/distro-info/ubuntu-10.04/mirrors/base_security162
-rw-r--r--lib/distro-info/ubuntu-10.04/mirrors/base_updates171
-rw-r--r--lib/distro-info/ubuntu-10.04/prereqfiles/etc/hosts1
-rw-r--r--lib/distro-info/ubuntu-10.04/settings.default76
-rw-r--r--lib/distro-info/ubuntu-10.04/settings.example23
-rw-r--r--os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh (renamed from os-plugins/plugins/bootsplash/init-hooks/10-have-nw-modules/bootsplash.sh)0
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm10
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm8
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm4
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm68
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm161
-rw-r--r--os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm161
-rw-r--r--os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm2
-rw-r--r--os-plugins/plugins/pvs/XX_pvs.sh20
-rw-r--r--os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm102
-rw-r--r--os-plugins/plugins/qemukvm/XX_qemukvm.sh155
-rw-r--r--os-plugins/plugins/qemukvm/files/ifdown (renamed from os-plugins/plugins/qemukvm/files/qemu-ifdown)21
-rw-r--r--os-plugins/plugins/qemukvm/files/ifup75
-rw-r--r--os-plugins/plugins/qemukvm/files/qemu-ifup55
-rw-r--r--os-plugins/plugins/qemukvm/files/run-virt.include283
-rw-r--r--os-plugins/plugins/qemukvm/init-hooks/20-nw-bridge-config/bridge.sh2
-rwxr-xr-xos-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh60
-rw-r--r--os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm15
-rw-r--r--os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm38
-rw-r--r--os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm1
-rw-r--r--os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm17
-rw-r--r--os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm8
-rw-r--r--os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm24
-rw-r--r--os-plugins/plugins/vmchooser/XX_vmchooser.sh28
-rw-r--r--os-plugins/plugins/vmchooser/files/run-virt.sh79
-rw-r--r--os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh135
-rw-r--r--os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm322
-rw-r--r--os-plugins/plugins/vmgrid/XX_vmgrid.sh104
-rw-r--r--os-plugins/plugins/vmgrid/files/run-vmgrid.sh395
-rw-r--r--os-plugins/plugins/vmgrid/files/vmgrid143
-rw-r--r--os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh135
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm186
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm3
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm174
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm207
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm2
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm233
-rw-r--r--os-plugins/plugins/vmware/XX_vmware.sh82
-rw-r--r--os-plugins/plugins/vmware/files/run-virt.include76
-rwxr-xr-xos-plugins/plugins/vmware/init-hooks/20-nw-bridge-config/bridge.sh2
-rwxr-xr-xos-plugins/plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh56
-rw-r--r--os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm116
-rw-r--r--os-plugins/plugins/xen/XX_xen.sh54
-rw-r--r--os-plugins/plugins/xen/files/hvm.include209
-rw-r--r--os-plugins/plugins/xen/files/machine.include167
-rw-r--r--os-plugins/plugins/xen/files/run-virt.include157
-rw-r--r--os-plugins/plugins/xen/init-hooks/10-have-nw-modules/xen.sh23
-rw-r--r--os-plugins/plugins/xen/init-hooks/10-nw-if-config/xennet.sh4
-rwxr-xr-xos-plugins/plugins/xen/init-hooks/20-nw-bridge-config/bridge.sh30
-rwxr-xr-xos-plugins/plugins/xen/init-hooks/20-nw-bridge-config/xen-bridge.sh42
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm1
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm53
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm23
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm71
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm30
-rw-r--r--os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh6
136 files changed, 8569 insertions, 1348 deletions
diff --git a/Makefile b/Makefile
index 07929f55..9c4798d3 100644
--- a/Makefile
+++ b/Makefile
@@ -92,10 +92,12 @@ dep-check:
@ # many of the following modules are part of core perl, but we check
@ # for them just to be sure...
- @for m in Carp Clone Config::General Cwd DBI Digest::MD5 Digest::SHA1 \
- Encode Fcntl File::Basename File::Find File::Glob File::Path \
- FindBin Getopt::Long List::Util MIME::Base64 Pod::Usage \
- POSIX Socket Storable Sys::Hostname Term::ReadLine ; do \
+ @for m in Carp Clone Config::General Data::Dumper Cwd DBI Digest::MD5 \
+ Digest::SHA1 Encode Exporter Fcntl File::Basename File::Find \
+ File::Glob File::Path FindBin Getopt::Long HTTP::Request::Common \
+ JSON LWP::UserAgent List::Util MIME::Base64 Pod::Usage \
+ POSIX Scalar::Util Socket Storable Sys::Hostname Term::ReadLine \
+ Switch URI; do \
if ! perl -e "use $$m" 2>>${SLX_INSTALL_LOG} ; then \
echo " The perl module '$$m' is required, please install it."; \
exit 1; \
diff --git a/VERSIONS b/VERSIONS
index bab118b5..6d0b62aa 100644
--- a/VERSIONS
+++ b/VERSIONS
@@ -1,4 +1,4 @@
OPENSLX_VERSION_MAJOR="5"
OPENSLX_VERSION_MINOR="0"
-OPENSLX_VERSION_RELEASE="90"
-OPENSLX_VERSION_STRING="${OPENSLX_VERSION_MAJOR}.${OPENSLX_VERSION_MINOR}.${OPENSLX_VERSION_RELEASE}${OPENSLX_SVN_SNAPSHOT:+rev$OPENSLX_VERSION_SVNREV}"
+OPENSLX_VERSION_RELEASE="92.1"
+OPENSLX_VERSION_STRING="${OPENSLX_VERSION_MAJOR}.${OPENSLX_VERSION_MINOR}.${OPENSLX_VERSION_RELEASE}"
diff --git a/boot-env/OpenSLX/BootEnvironment/PXE.pm b/boot-env/OpenSLX/BootEnvironment/PXE.pm
index 06df1361..d46786d0 100644
--- a/boot-env/OpenSLX/BootEnvironment/PXE.pm
+++ b/boot-env/OpenSLX/BootEnvironment/PXE.pm
@@ -79,13 +79,16 @@ sub writeBootloaderMenuFor
$label = $info->{name};
}
}
- $info->{pxeLabel} = $label;
+ $info->{menuLabel} = $label;
}
+# if kernel=*xen* then run sub _xenLabel from xen.pm
my $slxLabels = '';
foreach my $info (sort { $a->{label} cmp $b->{label} } @$systemInfos) {
my $vendorOSName = $info->{'vendor-os'}->{name};
my $kernelName = basename($info->{'kernel-file'});
my $append = $info->{attrs}->{kernel_params};
+ my $pxeLabel = $info->{'external-id'};
+ $pxeLabel =~ s/::/-/g;
my $pxePrefix = '';
my $tftpPrefix = '';
$info->{'pxe_prefix_ip'} ||= '';
@@ -110,12 +113,14 @@ sub writeBootloaderMenuFor
$append .= " file=$bootURI" if length($bootURI);
$append .= " file=$tftpPrefix" if length($tftpPrefix);
$append .= " $clientAppend";
- $slxLabels .= "LABEL openslx-$info->{'external-id'}\n";
+ $slxLabels .= "LABEL openslx-$pxeLabel\n";
$slxLabels .= $pxeDefault;
- $slxLabels .= "\tMENU LABEL ^$info->{pxeLabel}\n";
+ $slxLabels .= "\tMENU LABEL ^$info->{menuLabel}\n";
$slxLabels .= "\tKERNEL $pxePrefix$vendorOSName/$kernelName\n";
$slxLabels .= "\tAPPEND $append\n";
$slxLabels .= "\tIPAPPEND 3\n";
+# if kernel=*xen* then run sub _xenBootEntry from xen.pm
+# if (!defined $xenKernel) {...}
my $helpText = $info->{description} || '';
if (length($helpText)) {
# make sure that text matches the given margin
diff --git a/boot-env/OpenSLX/MakeInitRamFS/Distro/Suse.pm b/boot-env/OpenSLX/MakeInitRamFS/Distro/Suse.pm
index c664c1ba..1628c5f1 100644
--- a/boot-env/OpenSLX/MakeInitRamFS/Distro/Suse.pm
+++ b/boot-env/OpenSLX/MakeInitRamFS/Distro/Suse.pm
@@ -52,6 +52,7 @@ sub determineMatchingHwinfoVersion
'10.3' => '14.19',
'11.0' => '15.3',
'11.1' => '15.21',
+ '11.2' => '15.21'
);
return $versionMap{$distroVersion}
|| $self->SUPER::determineMatchingHwinfoVersion($distroVersion);
diff --git a/boot-env/OpenSLX/MakeInitRamFS/Distro/Ubuntu.pm b/boot-env/OpenSLX/MakeInitRamFS/Distro/Ubuntu.pm
index 9240f5b5..64c20538 100644
--- a/boot-env/OpenSLX/MakeInitRamFS/Distro/Ubuntu.pm
+++ b/boot-env/OpenSLX/MakeInitRamFS/Distro/Ubuntu.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+ # Copyright (c) 2006..2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -54,6 +54,8 @@ sub determineMatchingHwinfoVersion
'8.04' => '15.3',
'8.10' => '15.21',
'9.04' => '15.21',
+ '9.10' => '15.21',
+ '10.04' => '15.21',
);
return $versionMap{$distroVersion}
|| $self->SUPER::determineMatchingHwinfoVersion($distroVersion);
diff --git a/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm b/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm
index a4a984e9..6de0a4fe 100644
--- a/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm
+++ b/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm
@@ -240,6 +240,10 @@ sub _copyKernelModules
push @kernelModules, split ' ', $self->{attrs}->{ramfs_miscmods};
push @kernelModules, split ' ', $self->{attrs}->{ramfs_nicmods};
+ if ($self->{attrs}->{ramfs_nicmods} =~ m{virtio}i) {
+ push @kernelModules, qw( virtio_pci virtio_net );
+ }
+
# a function that determines dependent modules recursively
my $addDependentsSub;
$addDependentsSub = sub {
@@ -379,13 +383,21 @@ sub _writeSlxSystemConf
# check if default directories available and copy them to /etc
my $defaultDirConfig = "$self->{'root-path'}/etc/opt/openslx/openslx.conf";
my $configTargetPath = "$self->{'build-path'}/etc";
-
+ #my $defaultConfVer = slurpFile("$defaultDirConfig");
+ #my $actConfVer = "Version 0.2";
+
if (-r $defaultDirConfig) {
$self->addCMD("cp -p $defaultDirConfig $configTargetPath/");
+# if ($defaultConfVer =~ m{$actConfVer}) {
+# warn _tr(
+# "Your version of default dir file (openslx.conf) is to old!\n".
+# "Eventually the system won't work.\n" .
+# "Please run install, update or clone of this system again!\n");
+# }
} else {
die _tr(
- "No default directories defined!\n" .
- "Please run install, update or clone of this system again!\n");
+ "No default directories defined!\n" .
+ "Please run install, update or clone of this system again!\n");
}
return;
diff --git a/boot-env/pbs/uclib-rootfs/bin/bbinit b/boot-env/pbs/uclib-rootfs/bin/bbinit
new file mode 100755
index 00000000..3fd67612
--- /dev/null
+++ b/boot-env/pbs/uclib-rootfs/bin/bbinit
@@ -0,0 +1,19 @@
+#!/bin/hush
+
+# create clean setup
+mkdir -p /etc/events.conf
+mkdir -p /etc/events.d
+rm /etc/events.d/*
+for f in $(ls -1 /etc/events)
+do
+ ln -sf /etc/events/$f /etc/events.d/$f
+done
+
+mkdir -p /tmp/event
+rm /tmp/event/*
+rm /tmp/events
+
+# start bbinit
+inotifyd /bin/handleEvents /tmp/event/:n &
+# initial call (executing all zero dependent scipts)
+handleEvents
diff --git a/boot-env/pbs/uclib-rootfs/bin/handleEvents b/boot-env/pbs/uclib-rootfs/bin/handleEvents
new file mode 100755
index 00000000..9bb78951
--- /dev/null
+++ b/boot-env/pbs/uclib-rootfs/bin/handleEvents
@@ -0,0 +1,38 @@
+#!/bin/hush
+
+# wait for lock
+while [ -f /tmp/bbinit.lock ]
+do
+ sleep 0.1
+done
+
+# lock eventhandler
+touch /tmp/bbinit.lock
+
+# source list of finished events
+[ -f /tmp/events ] && . /tmp/events
+
+# go through all unhandled events
+for f in $( ls -1 /etc/events.d/ )
+do
+ . /etc/events.d/$f
+
+ # check dependencies
+ eval dep=\$${f}_depends
+ havealldeps=1
+ for d in $dep
+ do
+ eval havedep=\$have${d}
+ [ "x$havedep" == "x1" ] || havealldeps=0
+ done
+
+ # if nothing is missing execute script
+ if [ "x$havealldeps" == "x1" ]; then
+ echo executing $f
+ /etc/bbinit.d/$f &
+ rm /etc/events.d/$f
+ fi
+done
+
+# unlock eventhandler
+rm /tmp/bbinit.lock
diff --git a/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example b/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example
new file mode 100755
index 00000000..122cf566
--- /dev/null
+++ b/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example
@@ -0,0 +1,32 @@
+#!/bin/hush
+
+me=$(basename $0)
+
+# read event parameters
+. /etc/events/$me
+eval provides=\$${me}_provides
+
+# get config output of the dependencies
+eval dep=\$${me}_depends
+for d in $dep
+do
+ [ -f /etc/event.conf/$d ] && . /etc/event.conf/$d
+done
+
+# do some stuff
+echo "[$me] starting .."
+for i in 1 2 3 4 5 6
+do
+ echo "[$me] $i"
+ sleep 1
+done
+echo "[$me] finished .."
+
+# write configuration output
+value="test"
+echo "${provides}_someconfig=\"$value\"" >> /etc/event.conf/$provides
+
+# trigger eventhandler
+echo "have${provides}=1" >> /tmp/events
+touch /tmp/event/$me
+
diff --git a/boot-env/pbs/uclib-rootfs/etc/events/example b/boot-env/pbs/uclib-rootfs/etc/events/example
new file mode 100644
index 00000000..75768967
--- /dev/null
+++ b/boot-env/pbs/uclib-rootfs/etc/events/example
@@ -0,0 +1,2 @@
+example_depends=""
+example_provides="example"
diff --git a/boot-env/pbs/uclib-rootfs/init b/boot-env/pbs/uclib-rootfs/init
index 3c992070..847cad87 100755
--- a/boot-env/pbs/uclib-rootfs/init
+++ b/boot-env/pbs/uclib-rootfs/init
@@ -45,7 +45,20 @@ done
# device files get their own filesystem
devdir="/dev"
-mount -n -t tmpfs -o 'size=25%,mode=0755' initramfsdevs ${devdir}
+mount -n -t tmpfs -o 'size=25%,mode=0755' mdev ${devdir}
+mkdir -p /dev/pts
+mount -t devpts devpts /dev/pts
+echo /sbin/mdev > /proc/sys/kernel/hotplug
+cat > /etc/mdev.conf << "EOF"
+sda* 0:6 0660
+sdb* 0:6 0660
+sg* 0:6 0660
+hda* 0:6 0660
+hdb* 0:6 0660
+EOF
+
+mdev -s
+
export DEBUGLEVEL=0
# create basic device files an directories in dev
@@ -143,6 +156,25 @@ fi
if [ -n "${SSID}" ] ; then
# WLAN setup will most probably change the network interface name stored in
# nwif (to wlan0 or something like that)
+ [ $DEBUGLEVEL -gt 0 ] && echo "set essid to ${essid}";
+ #value of essid unchecked yet
+ # load network adaptor modules
+ 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}";
+ 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
:
else
# check here for the active Ethernet link
diff --git a/boot-env/preboot/uclib-rootfs/init b/boot-env/preboot/uclib-rootfs/init
index f240d65d..ab2f9ca0 100755
--- a/boot-env/preboot/uclib-rootfs/init
+++ b/boot-env/preboot/uclib-rootfs/init
@@ -14,7 +14,7 @@
fetchip () {
# we expect to get an ip address within 10++ seconds
-( sleep 6 ; killall udhcpc >/dev/null 2>&1 ) &
+( sleep 10 ; killall udhcpc >/dev/null 2>&1 ) &
for i in 1 2 ; do
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
@@ -141,6 +141,25 @@ fi
if [ -n "${SSID}" ] ; then
# WLAN setup will most probably change the network interface name stored in
# nwif (to wlan0 or something like that)
+ [ $DEBUGLEVEL -gt 0 ] && echo "set essid to ${essid}";
+ #value of essid unchecked yet
+ # load network adaptor modules
+ 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}";
+ 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
:
else
# check here for the active Ethernet link
diff --git a/boot-env/syslinux/extlinux b/boot-env/syslinux/extlinux
index d97dd70c..69d8bf56 100755
--- a/boot-env/syslinux/extlinux
+++ b/boot-env/syslinux/extlinux
Binary files differ
diff --git a/boot-env/syslinux/isolinux.bin b/boot-env/syslinux/isolinux.bin
index 80f71c98..bd778b3b 100644
--- a/boot-env/syslinux/isolinux.bin
+++ b/boot-env/syslinux/isolinux.bin
Binary files differ
diff --git a/boot-env/syslinux/mboot.c32 b/boot-env/syslinux/mboot.c32
index dfff3789..929ade6f 100755
--- a/boot-env/syslinux/mboot.c32
+++ b/boot-env/syslinux/mboot.c32
Binary files differ
diff --git a/boot-env/syslinux/menu.c32 b/boot-env/syslinux/menu.c32
index 9413ec46..67f9c29b 100755
--- a/boot-env/syslinux/menu.c32
+++ b/boot-env/syslinux/menu.c32
Binary files differ
diff --git a/boot-env/syslinux/pxelinux.0 b/boot-env/syslinux/pxelinux.0
index 743948e3..0df4fbed 100644
--- a/boot-env/syslinux/pxelinux.0
+++ b/boot-env/syslinux/pxelinux.0
Binary files differ
diff --git a/boot-env/syslinux/syslinux b/boot-env/syslinux/syslinux
index dd0319cf..92b1b907 100755
--- a/boot-env/syslinux/syslinux
+++ b/boot-env/syslinux/syslinux
Binary files differ
diff --git a/boot-env/syslinux/vesamenu.c32 b/boot-env/syslinux/vesamenu.c32
index d9884770..804e2fb8 100755
--- a/boot-env/syslinux/vesamenu.c32
+++ b/boot-env/syslinux/vesamenu.c32
Binary files differ
diff --git a/initramfs/distro-specs/debian/functions-default b/initramfs/distro-specs/debian/functions-default
index 9877f493..15639a2d 100644
--- a/initramfs/distro-specs/debian/functions-default
+++ b/initramfs/distro-specs/debian/functions-default
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2007..2008 - OpenSLX GmbH
+# Copyright (c) 2007..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -56,6 +56,13 @@ config_distro () {
# create needed auxiliary directories in (/mnt)/var,/etc,...
testmkd /mnt/var/run/screens root:utmp 0755
+
+ # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
+ echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
+export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
+
+ # check for inittab file
+ #test -f /mnt/etc/inittab || error "$df_erritab"
}
# initial (boot time) runlevel scripts
diff --git a/initramfs/distro-specs/scilin/functions-default b/initramfs/distro-specs/scilin/functions-default
index e474b1b7..f9bb0f0e 100644
--- a/initramfs/distro-specs/scilin/functions-default
+++ b/initramfs/distro-specs/scilin/functions-default
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -49,6 +49,8 @@ config_distro () {
[ -e /mnt/etc/sysconfig/network ] && \
sed -e "s/HOSTNAME=.*/HOSTNAME=$host_name/" \
-e "s/GATEWAY=.*/GATEWAY=$gateway/" -i /mnt/etc/sysconfig/network
+ # check for inittab file
+ #test -f /mnt/etc/inittab || error "$df_erritab"
}
# initial (boot time) runlevel scripts
diff --git a/initramfs/distro-specs/suse/functions-11.2 b/initramfs/distro-specs/suse/functions-11.2
new file mode 100644
index 00000000..ae8008b9
--- /dev/null
+++ b/initramfs/distro-specs/suse/functions-11.2
@@ -0,0 +1,95 @@
+# 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 under http://openslx.org
+#
+# configuration script for OpenSuSE 11.2 to configure linux stateless clients
+# (included by init, hwautocfg, servconfig within InitialRamFS after
+# inclusion of the main functions file). This file is the main base for the
+# several SuSE distro versions
+
+# settings of central variables (formerly done via config-*, these variables
+# are disputable ...)
+# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw
+# part of the client filesystem
+# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
+# TempFS usage
+# D_DIRINDXS - directories in client filesystem which should be present
+# anyhow
+
+# start portmapper (needed at least for nfs and nis services)
+config_portmap () {
+# portmap is provided via rpcbind in suse 11.1,2
+testmkd /mnt/var/lib/rpcbind
+rllinker "rpcbind" 4 5
+}
+# acpi and powersave daemons, required e.g. to shutdown the machine via
+# power button, no need for early start
+config_acpi () {
+rllinker acpid 22 12
+# dbus is required to run acpid and powersaved
+start_dreshal="yes"
+}
+# configure dbus (inter application communication for kde and gnome), hal
+# (hardware abstraction layer - used e.g. by powersaved)
+config_dreshal () {
+local start=1
+local stop=10
+if [ "x$start_dreshal" = "xyes" ]; then
+ for dir in /var/lib/misc /var/run/ConsoleKit \
+ "/var/run/PolicyKit polkituser:polkituser" \
+ "/var/lib/PolicyKit polkituser:polkituser" \
+ "/var/run/dbus/at_console/pool"; do
+ testmkd /mnt${dir}
+ done
+ # enable access to removable devices
+ sed -i /mnt/etc/PolicyKit/PolicyKit.conf \
+ -e "s/\(<\/config>\)/ @@new@@\n\1/" \
+ -e "s/@@new@@/<match action=\"@@action@@\">\n@@return@@\n <\/match>/" \
+ -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \
+ -e "s/@@return@@/ <return result=\"yes\"\/>/"
+
+ if [ -f /mnt/etc/init.d/dbus ] ; then
+ strinfile "messagebus:" /mnt/etc/passwd || \
+ echo "messagebus:x:102:103:User for D-BUS:/var/run/dbus:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "messagebus:" /mnt/etc/group || \
+ echo "messagebus:!:103:" >> /mnt/etc/group
+ # create directories and set permissions with user and group id
+ testmkd /mnt/var/run/dbus messagebus:messagebus
+ testmkd /mnt/var/lib/dbus
+ # console-kit-daemon is often not started properly (why ever)
+ sed -i /mnt/etc/init.d/dbus \
+ -e '/start_daemon -f $DBUS_D/a\
+\ \ \ \ \ \ \ \ start_daemon -f /usr/sbin/console-kit-daemon'
+
+ rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \
+ /mnt/etc/dbus-1/system.d/nm-* \
+ /mnt/etc/dbus-1/event.d/*NetworkManager*
+
+ rllinker "dbus" $start $stop
+ fi
+ if [ -f /mnt/etc/init.d/haldaemon ] ; then
+ strinfile "haldaemon:" /mnt/etc/passwd || \
+ echo "haldaemon:x:106:107:User for haldaemon:/var/run/hal:/bin/false" \
+ >> /mnt/etc/passwd
+ strinfile "haldaemon:" /mnt/etc/group || \
+ echo "haldaemon:!:107:" >> /mnt/etc/group
+ echo -n "" >/mnt/var/lib/misc/PolicyKit.reload
+ chmod a+x /mnt/var/lib/misc/PolicyKit.reload
+ # create directories and set permissions with user and group id
+ for dir in /var/run/hald /var/run/hald/hald-local \
+ /var/run/hald/hald-runner /var/cache/hald; do
+ testmkd /mnt/${dir} haldaemon:haldaemon
+ done
+ start=$(($start + 1))
+ stop=$(($stop - 1))
+ rllinker "haldaemon" $start $stop
+ fi
+fi
+}
diff --git a/initramfs/distro-specs/suse/functions-default b/initramfs/distro-specs/suse/functions-default
index cb281f65..14bb5ff0 100644
--- a/initramfs/distro-specs/suse/functions-default
+++ b/initramfs/distro-specs/suse/functions-default
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2008 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -48,9 +48,9 @@ grep -q -E "otebook" /etc/hwinfo.bios && \
sed -e "1i# /etc/sysconfig/sysctl - modified by $0 version $version" \
-e "s,ENABLE_SYSRQ=.*,ENABLE_SYSRQ=\"yes\"," \
-i /mnt/etc/sysconfig/sysctl
-# add specific path /var/X11R6/bin ...
+# add slx specific path /var/opt/openslx/bin ...
echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
-PATH=\"\$PATH:/var/X11R6/bin\"\n\
+PATH=\"\$PATH:/var/opt/openslx/bin\"\n\
test \"\$UID\" -ge 100 && PATH=\"\$PATH:.\"\n\
QTDIR=/usr/lib/qt3\nexport QTDIR\nno_proxy='localhost'\n\
export no_proxy" >/mnt/etc/SuSEconfig/profile
@@ -323,6 +323,8 @@ i\
# Script modified here by \$0 during stage3 bootup\
LINECOL=$(stty size); LINES=${LINECOL% *}; COLUMNS=${LINECOL#* }
}' -e "/^if test -z \"\$LINES/,/fi$/d" -i /mnt/etc/rc.status
+# check for inittab file
+test -f /mnt/etc/inittab || error "$df_erritab"
}
# initial (boot time) runlevel scripts
@@ -548,6 +550,8 @@ if [ -e /mnt/etc/sysconfig/autofs ] ; then
-e "s,AUTOFS_OPTIONS.*,AUTOFS_OPTIONS=\"--timeout 3\"," \
-i /mnt/etc/sysconfig/autofs
rllinker "autofs" 18 4
+ # might be needed for autofs via NFS (start specific nfs related services)
+ # echo 'NFS_START_SERVICES="no"' >>/mnt/etc/sysconfig/nfs
else
error "$df_erramt" nonfatal
fi
diff --git a/initramfs/distro-specs/ubuntu/functions-10.04 b/initramfs/distro-specs/ubuntu/functions-10.04
new file mode 100644
index 00000000..7f73c4ca
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/functions-10.04
@@ -0,0 +1,16 @@
+# 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 under http://openslx.org
+#
+# Configuration script for Ubuntu 10.04 configure OpenSLX Linux stateless
+# clients (merged in stage2 with ubuntu/functions-default - and loaded within
+# initial ramfs - stage3) It may overwrite settings from the default config
+# file (/etc/functions)
+
+# no changes from default (as this is default at the moment)
diff --git a/initramfs/distro-specs/ubuntu/functions-8.04 b/initramfs/distro-specs/ubuntu/functions-8.04
index c50f9d41..3b93e86d 100644
--- a/initramfs/distro-specs/ubuntu/functions-8.04
+++ b/initramfs/distro-specs/ubuntu/functions-8.04
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2007 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -14,4 +14,283 @@
# initial ramfs - stage3) It may overwrite settings from the default config
# file (/etc/functions)
-# no changes from default
+# distro specific configuration variables used in the setup functions
+# (formerly done via config-*, these variables are disputable ...)
+# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using
+# bind mounts
+# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw part
+# of the client filesystem
+# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
+# TempFS usage
+# D_DIRINDXS - directories in client filesystem which should be present anyhow
+#D_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\
+#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+#X11/xdm/pixmaps\ndhclient.script"
+D_BINDMPTS="tmp root home media"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
+D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \
+/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms"
+#D_RWDIRSINRO="/var/lib/gdm"
+D_DIRINDXS="/var/X11R6/compose-cache /var/run/sysconfig/tmp /var/adm \
+/var/lib/nobody /var/lib/pam_devperm /var/lib/bluetooth /var/lib/texmf \
+/var/lib/nfs/sm /var/lib/misc /var/lib/acpi /var/spool/cron /var/lib/alsa \
+/var/lock/subsys/sysconfig"
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific stuff to initialize
+preinit () {
+ # load unix module to provide sockets (is compiled into kernel on
+ # the live CDs!?)
+ modprobe ${MODPRV} unix 2>/dev/null || error "$df_errumod" nonfatal
+ modprobe ${MODPRV} vesafb 2>/dev/null || error "$df_errumod" nonfatal
+ modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal
+}
+
+# distro specific function called from servconfig script
+config_distro () {
+ # clean the runlevel directories which will be populated by the stage3 setup
+ for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do
+ rm -rf /mnt/etc/${dir}/*
+ done
+ # add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
+
+ # remove annoying udev rule set for changing eth interface
+ rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1
+
+ # inittab is obsolete with the change to upstart in ubuntu 7.10, but to
+ # prevent missunderstandings with the blank inittab created by openslx init
+ # we'll write a comment..
+ echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \
+ > /mnt/etc/inittab
+
+ # fix getty bug (console login on tty1 is started too early)
+ [ -f /mnt/etc/event.d/tty1 ] && \
+ sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1
+
+ # for screen sessions
+ testmkd /mnt/var/run/screen root:utmp 0775
+
+ # no additional /dev/shm mount needed as it is always used
+ sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \
+ -i /mnt/etc/init.d/mountdevsubfs.sh
+
+ # clean up the udev script as much is handled already in stage3
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/# This next bit can/a\ /sbin/udevadm trigger" \
+ -e "/# We need the uevent/,/# It's all over/d" \
+ -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev
+
+ # clean the mountall.sh script as only swap activation needed
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/pre_mountall/,/post_mountall/d" \
+ -i /mnt/etc/init.d/mountall.sh
+
+ # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
+ echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
+export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
+
+ # check for inittab file (might fail for new style init -> upstart)
+ #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \
+ # error "$df_erritab"
+}
+
+# initial (boot time) runlevel scripts
+initial_boot () {
+local count=10
+# boot.slx is a special runlevel script generated within initialramfs which
+# should be executed before the normal runlevel scripts. Proper shutdown is
+# not needed!?
+for i in mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \
+bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do
+ count=$(($count + 1))
+ [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i"
+ ln -sf /etc/init.d/$i /mnt/etc/rcS.d/S${count}$i
+done
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+if [ $2 -lt 10 ] ; then
+ local start="0$2"; else local start="$2"
+fi
+if [ $3 -lt 10 ] ; then
+ local stop="0$3"; else local stop="$3"
+fi
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+ rc2.d/S$start$script rc3.d/S$start$script ; do
+ if ! [ -f /mnt/etc/init.d/$script ]; then
+ echo "Target `pwd`../$script does not exist. Skipping links"
+ break
+ else
+ ln -sf ../init.d/$script /mnt/etc/$i
+ [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script"
+ fi
+done
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop
+
+# configure udev
+config_udev () {
+ [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; }
+ if [ -f /mnt/etc/init.d/udev-finish ] ; then
+ rllinker "udev-finish" 24 2
+ fi
+}
+
+# function for ntp configuration
+config_ntp () {
+if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ testmkd /mnt/var/lib/ntp/var/run/ntp
+ rllinker "ntp" 7 14
+fi
+}
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ # testmkd /mnt/var/spool/atjobs
+ # testmkd /mnt/var/spool/atspool
+ # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
+ rllinker "atd" 14 4
+fi
+}
+# function for configuration of cron services (fixme: to be moved to a plugin?)
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/cron ] ; then
+ rllinker "cron" 18 2
+ # fixme! check for proper permissions!
+ testmkd /mnt/var/spool/crontabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ #testmkd /mnt/var/run/sshd
+ rllinker "ssh" 12 10
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" 24 2
+ testmkd /mnt/var/lib/net-snmp
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+# acpi and powersave
+config_acpi () {
+ rllinker "acpid" 8 16
+ #Commented out since battery checking is only useful for Notebooks
+ #rllinker "acpi-support" 99 2
+}
+# configure hal, dbus, policykitd and services like that
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ testmkd /mnt/var/lib/dbus
+ testmkd /mnt/var/lib/misc
+ testmkd /mnt/var/cache/hald
+ touch /mnt/var/lib/misc/PolicyKit.reload
+ chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload
+ rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \
+ /mnt/etc/dbus-1/system.d/nm-* \
+ /mnt/etc/dbus-1/event.d/*NetworkManager*
+ sed -i /mnt/etc/PolicyKit/PolicyKit.conf \
+ -e "s/\(<\/config>\)/ @@new@@\n\1/" \
+ -e "s/@@new@@/<match action=\"@@action@@\">\n@@return@@\n <\/match>/" \
+ -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \
+ -e "s/@@return@@/ <return result=\"yes\"\/>/"
+ sed -i /mnt/etc/dbus-1/system.d/hal.conf \
+ -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/"
+ rllinker "dbus" 2 20
+ rllinker "hal" 3 18
+ if [ ! -e /mnt/etc/init.d/policykit ] ; then
+ testmkd /mnt/var/lib/PolicyKit root:polkituser 1770
+ testmkd /mnt/var/lib/PolicyKit-public root:polkituser
+ else
+ rllinker "policykit" 18 10
+ fi
+fi
+}
+
+# initialize boot.slx - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script (fixme!!)
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$switch" in
+ init)
+ echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \
+from $0\n# after you applied changes to the creation scripts you have to \
+rerun\n# the mkdxsinitrd script to get them applied\n\n\
+. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name
+ echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$info\"" \
+ >>/mnt/etc/init.d/$name
+ chmod u+x /mnt/etc/init.d/$name
+ ;;
+ entry)
+ echo -e "\t${info}" >>/mnt/etc/init.d/${name}
+ ;;
+ close)
+ echo -e "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \
+ >>/mnt/etc/init.d/$name
+ ;;
+esac
+}
+# configure automounter
+config_automount () {
+if [ -f /mnt/etc/init.d/autofs ] ; then
+ testmkd /mnt/var/lock/subsys
+ sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \
+ -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs
+ config_portmap
+ rllinker "autofs" 12 4
+ rllinker "nfs-common" 11 5
+fi
+}
+# start portmapper (needed at least for nfsN and nis services)
+config_portmap () {
+ rllinker "portmap" 2 20
+}
+# start NIS (fixme - does the service is really named ypbind??)
+config_nis () {
+ if [ -f /mnt/etc/init.d/ypbind ] ; then
+ rllinker "ypbind" 6 16
+ config_portmap
+ testmkd /mnt/var/yp/nicknames
+ else
+ error "$df_erryp" nonfatal
+ fi
+}
+# name service caching daemon (useful in most cases)
+config_nscd () {
+ if [ -f /mnt/etc/init.d/nscd ] ; then
+ testmkd /mnt/var/cache/nscd
+ rllinker "nscd" 20 5
+ fi
+}
diff --git a/initramfs/distro-specs/ubuntu/functions-8.10 b/initramfs/distro-specs/ubuntu/functions-8.10
new file mode 100644
index 00000000..8a3469e7
--- /dev/null
+++ b/initramfs/distro-specs/ubuntu/functions-8.10
@@ -0,0 +1,296 @@
+# Copyright (c) 2003..2006 - RZ Uni Freiburg
+# Copyright (c) 2006..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 under http://openslx.org
+#
+# Configuration script for Ubuntu 8.10 configure OpenSLX Linux stateless
+# clients (merged in stage2 with ubuntu/functions-default - and loaded within
+# initial ramfs - stage3) It may overwrite settings from the default config
+# file (/etc/functions)
+
+# distro specific configuration variables used in the setup functions
+# (formerly done via config-*, these variables are disputable ...)
+# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using
+# bind mounts
+# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw part
+# of the client filesystem
+# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
+# TempFS usage
+# D_DIRINDXS - directories in client filesystem which should be present anyhow
+#D_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\
+#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+#X11/xdm/pixmaps\ndhclient.script"
+D_BINDMPTS="tmp root home media"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
+D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \
+/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms"
+#D_RWDIRSINRO="/var/lib/gdm"
+D_DIRINDXS="/var/X11R6/compose-cache /var/run/sysconfig/tmp /var/adm \
+/var/lib/nobody /var/lib/pam_devperm /var/lib/bluetooth /var/lib/texmf \
+/var/lib/nfs/sm /var/lib/misc /var/lib/acpi /var/spool/cron /var/lib/alsa \
+/var/lock/subsys/sysconfig"
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific stuff to initialize
+preinit () {
+ # load unix module to provide sockets (is compiled into kernel on
+ # the live CDs!?)
+ modprobe ${MODPRV} unix 2>/dev/null || error "$df_errumod" nonfatal
+ modprobe ${MODPRV} vesafb 2>/dev/null || error "$df_errumod" nonfatal
+ modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal
+}
+
+# distro specific function called from servconfig script
+config_distro () {
+ # clean the runlevel directories which will be populated by the stage3 setup
+ for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do
+ rm -rf /mnt/etc/${dir}/*
+ done
+ # add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
+
+ # remove annoying udev rule set for changing eth interface
+ rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1
+
+ # inittab is obsolete with the change to upstart in ubuntu 7.10, but to
+ # prevent missunderstandings with the blank inittab created by openslx init
+ # we'll write a comment..
+ echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \
+ > /mnt/etc/inittab
+
+ # fix getty bug (console login on tty1 is started too early)
+ [ -f /mnt/etc/event.d/tty1 ] && \
+ sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1
+
+ # for screen sessions
+ testmkd /mnt/var/run/screen root:utmp 0775
+
+ # no additional /dev/shm mount needed as it is always used
+ sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \
+ -i /mnt/etc/init.d/mountdevsubfs.sh
+
+ # clean up the udev script as much is handled already in stage3
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/# This next bit can/a\ /sbin/udevadm trigger" \
+ -e "/# We need the uevent/,/# It's all over/d" \
+ -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev
+
+ # clean the mountall.sh script as only swap activation needed
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/pre_mountall/,/post_mountall/d" \
+ -i /mnt/etc/init.d/mountall.sh
+
+ # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
+ echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
+export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
+
+ # check for inittab file (might fail for new style init -> upstart)
+ #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \
+ # error "$df_erritab"
+}
+
+# initial (boot time) runlevel scripts
+initial_boot () {
+local count=10
+# boot.slx is a special runlevel script generated within initialramfs which
+# should be executed before the normal runlevel scripts. Proper shutdown is
+# not needed!?
+for i in mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \
+bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do
+ count=$(($count + 1))
+ [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i"
+ ln -sf /etc/init.d/$i /mnt/etc/rcS.d/S${count}$i
+done
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+if [ $2 -lt 10 ] ; then
+ local start="0$2"; else local start="$2"
+fi
+if [ $3 -lt 10 ] ; then
+ local stop="0$3"; else local stop="$3"
+fi
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+ rc2.d/S$start$script rc3.d/S$start$script ; do
+ if ! [ -f /mnt/etc/init.d/$script ]; then
+ echo "Target `pwd`../$script does not exist. Skipping links"
+ break
+ else
+ ln -sf ../init.d/$script /mnt/etc/$i
+ [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script"
+ fi
+done
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop
+
+# configure udev
+config_udev () {
+ [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; }
+ if [ -f /mnt/etc/init.d/udev-finish ] ; then
+ rllinker "udev-finish" 24 2
+ fi
+}
+
+# function for ntp configuration
+config_ntp () {
+if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ testmkd /mnt/var/lib/ntp/var/run/ntp
+ rllinker "ntp" 7 14
+fi
+}
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ # testmkd /mnt/var/spool/atjobs
+ # testmkd /mnt/var/spool/atspool
+ # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
+ rllinker "atd" 14 4
+fi
+}
+# function for configuration of cron services (fixme: to be moved to a plugin?)
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/cron ] ; then
+ rllinker "cron" 18 2
+ # fixme! check for proper permissions!
+ testmkd /mnt/var/spool/crontabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ #testmkd /mnt/var/run/sshd
+ rllinker "ssh" 12 10
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" 24 2
+ testmkd /mnt/var/lib/net-snmp
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+# acpi and powersave
+config_acpi () {
+ rllinker "acpid" 8 16
+ #Commented out since battery checking is only useful for Notebooks
+ #rllinker "acpi-support" 99 2
+}
+# configure hal, dbus, policykitd and services like that
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ testmkd /mnt/var/lib/dbus
+ testmkd /mnt/var/lib/misc
+ testmkd /mnt/var/cache/hald
+ touch /mnt/var/lib/misc/PolicyKit.reload
+ chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload
+ rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \
+ /mnt/etc/dbus-1/system.d/nm-* \
+ /mnt/etc/dbus-1/event.d/*NetworkManager*
+ sed -i /mnt/etc/PolicyKit/PolicyKit.conf \
+ -e "s/\(<\/config>\)/ @@new@@\n\1/" \
+ -e "s/@@new@@/<match action=\"@@action@@\">\n@@return@@\n <\/match>/" \
+ -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \
+ -e "s/@@return@@/ <return result=\"yes\"\/>/"
+ sed -i /mnt/etc/dbus-1/system.d/hal.conf \
+ -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/"
+ rllinker "dbus" 2 20
+ rllinker "hal" 3 18
+ if [ ! -e /mnt/etc/init.d/policykit ] ; then
+ testmkd /mnt/var/lib/PolicyKit root:polkituser 1770
+ testmkd /mnt/var/lib/PolicyKit-public root:polkituser
+ else
+ rllinker "policykit" 18 10
+ fi
+fi
+}
+
+# initialize boot.slx - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script (fixme!!)
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$switch" in
+ init)
+ echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \
+from $0\n# after you applied changes to the creation scripts you have to \
+rerun\n# the mkdxsinitrd script to get them applied\n\n\
+. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name
+ echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$info\"" \
+ >>/mnt/etc/init.d/$name
+ chmod u+x /mnt/etc/init.d/$name
+ ;;
+ entry)
+ echo -e "\t${info}" >>/mnt/etc/init.d/${name}
+ ;;
+ close)
+ echo -e "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \
+ >>/mnt/etc/init.d/$name
+ ;;
+esac
+}
+# configure automounter
+config_automount () {
+if [ -f /mnt/etc/init.d/autofs ] ; then
+ testmkd /mnt/var/lock/subsys
+ sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \
+ -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs
+ config_portmap
+ rllinker "autofs" 12 4
+ rllinker "nfs-common" 11 5
+fi
+}
+# start portmapper (needed at least for nfsN and nis services)
+config_portmap () {
+ rllinker "portmap" 2 20
+}
+# start NIS (fixme - does the service is really named ypbind??)
+config_nis () {
+ if [ -f /mnt/etc/init.d/ypbind ] ; then
+ rllinker "ypbind" 6 16
+ config_portmap
+ testmkd /mnt/var/yp/nicknames
+ else
+ error "$df_erryp" nonfatal
+ fi
+}
+# name service caching daemon (useful in most cases)
+config_nscd () {
+ if [ -f /mnt/etc/init.d/nscd ] ; then
+ testmkd /mnt/var/cache/nscd
+ rllinker "nscd" 20 5
+ fi
+}
diff --git a/initramfs/distro-specs/ubuntu/functions-9.04 b/initramfs/distro-specs/ubuntu/functions-9.04
index a5461d31..09567aa5 100644
--- a/initramfs/distro-specs/ubuntu/functions-9.04
+++ b/initramfs/distro-specs/ubuntu/functions-9.04
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -14,4 +14,280 @@
# initial ramfs - stage3) It may overwrite settings from the default config
# file (/etc/functions)
-# no changes from default
+# distro specific configuration variables used in the setup functions
+# (formerly done via config-*, these variables are disputable ...)
+# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using
+# bind mounts
+# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw part
+# of the client filesystem
+# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
+# TempFS usage
+# D_DIRINDXS - directories in client filesystem which should be present anyhow
+#D_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\
+#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
+#X11/xdm/pixmaps\ndhclient.script"
+D_BINDMPTS="tmp root home media"
+D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
+RODIRSINRW="/var/lib/gconf /var/lib/dpkg /var/lib/aspell /var/lib/mlocate \
+/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms"
+#D_RWDIRSINRO="/var/lib/gdm"
+D_DIRINDXS="/var/run/sysconfig/tmp /var/adm /var/lib/nobody /var/lib/pam \
+/var/lib/bluetooth /var/lib/texmf /var/lib/nfs/sm /var/lib/misc \
+/var/lib/acpi-support /var/spool/cron /var/lib/alsa /var/lock/subsys"
+
+# empty functions are defined at the beginning of /etc/functions
+
+# distro specific stuff to initialize
+preinit () {
+ # load unix module to provide sockets (is compiled into kernel on
+ # the live CDs!?)
+ modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal
+}
+
+# distro specific function called from servconfig script
+config_distro () {
+ # clean the runlevel directories which will be populated by the stage3 setup
+ for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do
+ rm -rf /mnt/etc/${dir}/*
+ done
+ # add the halt link to the 0 and 6 runlevel directories
+ ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
+ ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
+
+ # remove annoying udev rule set for changing eth interface
+ rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1
+
+ # inittab is obsolete with the change to upstart in ubuntu 7.10, but to
+ # prevent missunderstandings with the blank inittab created by openslx init
+ # we'll write a comment..
+ echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \
+ > /mnt/etc/inittab
+
+ # fix getty bug (console login on tty1 is started too early)
+ [ -f /mnt/etc/event.d/tty1 ] && \
+ sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1
+
+ # for screen sessions
+ testmkd /mnt/var/run/screen root:utmp 0775
+
+ # no additional /dev/shm mount needed as it is always used
+ sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \
+ -i /mnt/etc/init.d/mountdevsubfs.sh
+
+ # clean up the udev script as much is handled already in stage3
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/# This next bit can/a\ /sbin/udevadm trigger" \
+ -e "/# We need the uevent/,/# It's all over/d" \
+ -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev
+
+ # clean the mountall.sh script as only swap activation needed
+ sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
+ -e "/pre_mountall/,/post_mountall/d" \
+ -i /mnt/etc/init.d/mountall.sh
+
+ # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
+ echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
+export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
+
+ # check for inittab file (might fail for new style init -> upstart)
+ #test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || \
+ # error "$df_erritab"
+}
+
+# initial (boot time) runlevel scripts
+initial_boot () {
+local count=10
+# boot.slx is a special runlevel script generated within initialramfs which
+# should be executed before the normal runlevel scripts. Proper shutdown is
+# not needed!?
+for i in mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \
+bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do
+ count=$(($count + 1))
+ [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i"
+ ln -sf /etc/init.d/$i /mnt/etc/rcS.d/S${count}$i
+done
+}
+
+# linking runlevel scripts
+rllinker () {
+local script="$1"
+if [ $2 -lt 10 ] ; then
+ local start="0$2"; else local start="$2"
+fi
+if [ $3 -lt 10 ] ; then
+ local stop="0$3"; else local stop="$3"
+fi
+# empty runlevel links - decision on running certain services is
+# passed via configuration
+for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+ rc2.d/S$start$script rc3.d/S$start$script ; do
+ if ! [ -f /mnt/etc/init.d/$script ]; then
+ echo "Target `pwd`../$script does not exist. Skipping links"
+ break
+ else
+ ln -sf ../init.d/$script /mnt/etc/$i
+ [ "$DEBUGLEVEL" == 5 ] && echo "Linked $script"
+ fi
+done
+}
+
+# group of functions for the normal runlevels - first parameter is start
+# second stop
+
+# configure udev
+config_udev () {
+ [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; }
+ if [ -f /mnt/etc/init.d/udev-finish ] ; then
+ rllinker "udev-finish" 24 2
+ fi
+}
+
+# function for ntp configuration
+config_ntp () {
+if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; then
+ echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
+ >>/mnt/etc/passwd
+ testmkd /mnt/var/lib/ntp/var/run/ntp
+ rllinker "ntp" 7 14
+fi
+}
+# function for atd
+config_atd () {
+if [ "x$start_atd" = "xyes" ]; then
+ # testmkd /mnt/var/spool/atjobs
+ # testmkd /mnt/var/spool/atspool
+ # chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
+ rllinker "atd" 14 4
+fi
+}
+# function for configuration of cron services (fixme: to be moved to a plugin?)
+config_cron () {
+if [ "x$start_cron" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/cron ] ; then
+ rllinker "cron" 18 2
+ # fixme! check for proper permissions!
+ testmkd /mnt/var/spool/crontabs
+ echo -e "# /etc/crontab - file generated by $0:\n\
+#\t$date\nSHELL=/bin/sh\nPATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin\
+\nMAILTO=\n-*/15 * * * *\troot\ttest -x /usr/lib/cron/run-crons && \
+/usr/lib/cron/run-crons >/dev/null 2>&1\n" >/mnt/etc/crontab
+ else
+ error "$df_errcron" nonfatal
+ fi
+fi
+}
+# secure shell service
+config_sshd () {
+if [ "x$start_sshd" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/ssh ] ; then
+ #testmkd /mnt/var/run/sshd
+ rllinker "ssh" 12 10
+ else
+ error "$df_errsshd" nonfatal
+ fi
+fi
+}
+# snmp agent for remote monitoring
+config_snmp () {
+if [ "x$start_snmp" = "xyes" ] ; then
+ if [ -f /mnt/etc/init.d/snmpd ] ; then
+ rllinker "snmpd" 24 2
+ testmkd /mnt/var/lib/net-snmp
+ fi
+ # fixme!!
+ # write service monitor depending on services started
+ fi
+}
+# acpi and powersave
+config_acpi () {
+ rllinker "acpid" 8 16
+ #Commented out since battery checking is only useful for Notebooks
+ #rllinker "acpi-support" 99 2
+}
+# configure hal, dbus, policykitd and services like that
+config_dreshal () {
+if [ "x$start_dreshal" = "xyes" ]; then
+ testmkd /mnt/var/lib/dbus
+ testmkd /mnt/var/lib/misc
+ testmkd /mnt/var/cache/hald
+ touch /mnt/var/lib/misc/PolicyKit.reload
+ chown root:polkituser /mnt/var/lib/misc/PolicyKit.reload
+ rm -rf /mnt/etc/dbus-1/system.d/*etwork*anager.conf \
+ /mnt/etc/dbus-1/system.d/nm-* \
+ /mnt/etc/dbus-1/event.d/*NetworkManager*
+ sed -i /mnt/etc/PolicyKit/PolicyKit.conf \
+ -e "s/\(<\/config>\)/ @@new@@\n\1/" \
+ -e "s/@@new@@/<match action=\"@@action@@\">\n@@return@@\n <\/match>/" \
+ -e "s/@@action@@/org.freedesktop.hal.storage.mount-removable/" \
+ -e "s/@@return@@/ <return result=\"yes\"\/>/"
+ sed -i /mnt/etc/dbus-1/system.d/hal.conf \
+ -e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/"
+ rllinker "dbus" 2 20
+ rllinker "hal" 3 18
+ if [ ! -e /mnt/etc/init.d/policykit ] ; then
+ testmkd /mnt/var/lib/PolicyKit root:polkituser 1770
+ testmkd /mnt/var/lib/PolicyKit-public root:polkituser
+ else
+ rllinker "policykit" 18 10
+ fi
+fi
+}
+
+# initialize boot.slx - skript to be executed during early system startup
+# (before most of the normal boot init scripts)
+# this script should operate like a normal runlevel script (fixme!!)
+d_mkrlscript () {
+local switch="$1"
+local name="$2"
+local info="$3"
+case "$switch" in
+ init)
+ echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \
+from $0\n# after you applied changes to the creation scripts you have to \
+rerun\n# the mkdxsinitrd script to get them applied\n\n\
+. /lib/lsb/init-functions\n" >/mnt/etc/init.d/$name
+ echo -e "\n\ncase \"\$1\" in\n start)\n\tlog_begin_msg \"$info\"" \
+ >>/mnt/etc/init.d/$name
+ chmod u+x /mnt/etc/init.d/$name
+ ;;
+ entry)
+ echo -e "\t${info}" >>/mnt/etc/init.d/${name}
+ ;;
+ close)
+ echo -e "\tlog_end_msg 0\n\t;;\n stop)\n\t;;\nesac\nexit 0" \
+ >>/mnt/etc/init.d/$name
+ ;;
+esac
+}
+# configure automounter
+config_automount () {
+if [ -f /mnt/etc/init.d/autofs ] ; then
+ testmkd /mnt/var/lock/subsys
+ sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \
+ -e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs
+ config_portmap
+ rllinker "autofs" 12 4
+ rllinker "nfs-common" 11 5
+fi
+}
+# start portmapper (needed at least for nfsN and nis services)
+config_portmap () {
+ rllinker "portmap" 2 20
+}
+# start NIS (fixme - does the service is really named ypbind??)
+config_nis () {
+ if [ -f /mnt/etc/init.d/ypbind ] ; then
+ rllinker "ypbind" 6 16
+ config_portmap
+ testmkd /mnt/var/yp/nicknames
+ else
+ error "$df_erryp" nonfatal
+ fi
+}
+# name service caching daemon (useful in most cases)
+config_nscd () {
+ if [ -f /mnt/etc/init.d/nscd ] ; then
+ testmkd /mnt/var/cache/nscd
+ rllinker "nscd" 20 5
+ fi
+}
diff --git a/initramfs/distro-specs/ubuntu/functions-9.10 b/initramfs/distro-specs/ubuntu/functions-9.10
index 5e5ddde1..28d1dba3 100644
--- a/initramfs/distro-specs/ubuntu/functions-9.10
+++ b/initramfs/distro-specs/ubuntu/functions-9.10
@@ -8,7 +8,7 @@
#
# General information about OpenSLX can be found under http://openslx.org
#
-# Configuration script for Ubuntu 9.10 configure OpenSLX linux stateless
+# Configuration script for Ubuntu 9.10 configure OpenSLX Linux stateless
# clients (merged in stage2 with ubuntu/functions-default - and loaded within
# initial ramfs - stage3) It may overwrite settings from the default config
# file (/etc/functions)
diff --git a/initramfs/distro-specs/ubuntu/functions-default b/initramfs/distro-specs/ubuntu/functions-default
index 4215920d..bfd01524 100644
--- a/initramfs/distro-specs/ubuntu/functions-default
+++ b/initramfs/distro-specs/ubuntu/functions-default
@@ -1,5 +1,5 @@
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -9,7 +9,7 @@
#
# General information about OpenSLX can be found under http://openslx.org
#
-# Configuration script for general Ubuntu to configure OpenSLX linux
+# Configuration script for general Ubuntu to configure OpenSLX Linux
# stateless clients (executed within initial ramdisk after genconfig)
# distro specific configuration variables used in the setup functions
@@ -21,126 +21,92 @@
# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on
# TempFS usage
# D_DIRINDXS - directories in client filesystem which should be present anyhow
-#D_ETCEXCL="etc/gconf/*\n*.old\n*-\netc/autoinstall\nlogrotate*\nbootloader\n\
-#*~\npptp.d\nisdn\nyouservers\nhardware/hwcfg*\n\
-#X11/xdm/pixmaps\ndhclient.script"
D_BINDMPTS="tmp root home media"
D_DIRINBINDMNT="/var/run /var/log /var/tmp /var/lib/gdm"
D_RODIRSINRW="/etc/X11/xkb /var/lib/gconf /var/lib/dpkg /var/lib/aspell \
/var/lib/pango /var/lib/defoma /var/cache/fontconfig /var/lib/dkms"
-#D_RWDIRSINRO="/var/lib/gdm"
-D_DIRINDXS="/var/X11R6/compose-cache /var/run/sysconfig/tmp /var/adm \
-/var/lib/nobody /var/lib/pam_devperm /var/lib/bluetooth /var/lib/texmf \
-/var/lib/nfs/sm /var/lib/misc /var/lib/acpi /var/spool/cron /var/lib/alsa \
-/var/lock/subsys/sysconfig"
-
-# empty functions are defined at the beginning of /etc/functions
+D_DIRINDXS="/var/run/sysconfig/tmp /var/lib/nobody /var/lib/misc /var/lib/pam \
+/var/lib/bluetooth /var/lib/texmf /var/lib/nfs/sm /var/lib/acpi_support \
+/var/spool/cron /var/lib/alsa"
# distro specific stuff to initialize
-preinit () {
- # load unix module to provide sockets (is compiled into kernel on
- # the live CDs!?)
- modprobe ${MODPRV} unix 2>/dev/null || error "$df_errumod" nonfatal
- modprobe ${MODPRV} vesafb 2>/dev/null || error "$df_errumod" nonfatal
- modprobe ${MODPRV} fbcon 2>/dev/null || error "$df_errumod" nonfatal
+postinit () {
+ if [ $DEBUGLEVEL -gt 2 ]; then
+ export DEBUG_UPSTART=" -v --debug"
+ fi
}
# distro specific function called from servconfig script
config_distro () {
- # clean the runlevel directories which will be populated by the stage3 setup
+ # runlevel system changed significantly compared to pre 9.10 sys-v-init
+ # clean up nevertheless
for dir in rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d ; do
rm -rf /mnt/etc/${dir}/*
done
- # add the halt link to the 0 and 6 runlevel directories
- ln -sf ../init.d/halt /mnt/etc/rc0.d/S90halt
- ln -sf ../init.d/reboot /mnt/etc/rc6.d/S90reboot
-
- # remove annoying udev rule set for changing eth interface
- rm /mnt/etc/udev/rules.d/*persistent-net.rules >/dev/null 2>&1
-
- # inittab is obsolete with the change to upstart in ubuntu 7.10, but to
- # prevent missunderstandings with the blank inittab created by openslx init
- # we'll write a comment..
- echo "# inittab is obsolete with the change to upstart from ubuntu 7.10" \
- > /mnt/etc/inittab
+ # remove unneeded init scripts (stuff handled in stage3 which would
+ # interface with already existing setup)
+ # copy all event scripts to a special directory
+ testmkd /mnt/etc/init.inactive
+ echo -e "# This directory was created in OpenSLX stage3 and contains all \
+disabled\n# upstart scripts. They are moved by servconfig to init if this is \
+required." >/mnt/etc/init.inactive/README
+ mv /mnt/etc/init/* /mnt/etc/init.inactive
+ # copy initial upstart scripts back
+ for file in alsa-mixer-save.conf control-alt-delete.conf dbus.conf \
+ dmesg.conf hwclock.conf hwclock-save.conf irqbalance.conf \
+ module-init-tools.conf mountall.conf mounted*conf plymouth*conf \
+ networking.conf procps.conf rc*.conf tty*conf udev*conf \
+ upstart-udev-bridge.conf ; do
+ mv /mnt/etc/init.inactive/${file} /mnt/etc/init >/dev/null 2>&1
+ done
- # fix getty bug (console login on tty1 is started too early)
- [ -f /mnt/etc/event.d/tty1 ] && \
- sed -i "s/start on runlevel 2/start on stopped rc2/" /mnt/etc/event.d/tty1
+ # remove annoying udev rule set for changing eth interface and cd/dvds
+ rm /mnt/etc/udev/rules.d/*persistent*.rules >/dev/null 2>&1
# for screen sessions
testmkd /mnt/var/run/screen root:utmp 0775
- # no additional /dev/shm mount needed as it is always used
- sed -e "/Mount a tmpfs on/,/domount tmpfs /d" \
- -i /mnt/etc/init.d/mountdevsubfs.sh
-
- # clean up the udev script as much is handled already in stage3
- sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
- -e "/# This next bit can/a\ /sbin/udevadm trigger" \
- -e "/# We need the uevent/,/# It's all over/d" \
- -e "/# Log things that/,/kill \$UDEV/d" -i /mnt/etc/init.d/udev
-
- # clean the mountall.sh script as only swap activation needed
- sed -e "3i# Script modified during SLX stage3 bootup (config_distro)" \
- -e "/pre_mountall/,/post_mountall/d" \
- -i /mnt/etc/init.d/mountall.sh
+ # add the slx specific path (/var/opt/openslx/bin) to the PATH variable
+ echo -e "# stuff generated by $0 (out of InitRamFS written $date)\n\
+export PATH=\"\$PATH:/var/opt/openslx/bin\"" >>/mnt/etc/profile
}
-# initial (boot time) runlevel scripts
+# initial boot looks different since ubuntu upstart
initial_boot () {
-local count=10
-# boot.slx is a special runlevel script generated within initialramfs which
-# should be executed before the normal runlevel scripts. Proper shutdown is
-# not needed!?
-for i in mountkernfs.sh mountall.sh mountdevsubfs.sh keyboard-setup procps \
-bootlogd hwclock.sh sudo console-setup udev boot.slx $D_SPLASHY; do
- count=$(($count + 1))
- [ $DEBUGLEVEL -ge 2 ] && echo "boot-runlevelscript $i"
- ln -sf /etc/init.d/$i /mnt/etc/rcS.d/S${count}$i
-done
+ :
}
-# linking runlevel scripts
+# runlevel linker - mostly deprecated in the old form because of new upstart
+# mechanism (with backward compatibility)
rllinker () {
local script="$1"
-if [ $2 -lt 10 ] ; then
- local start="0$2"; else local start="$2"
-fi
-if [ $3 -lt 10 ] ; then
- local stop="0$3"; else local stop="$3"
-fi
-# empty runlevel links - decision on running certain services is
-# passed via configuration
-for i in rc2.d/K$stop$script rc3.d/K$stop$script \
+# activating the new way, check if a appropriate script is available, else
+# try the traditional approach
+if [ -e /mnt/etc/init.inactive/${script}.conf ] ; then
+ mv /mnt/etc/init.inactive/${script}.conf /mnt/etc/init
+elif [ -e /mnt/etc/init.d/${script} -a -n "$1" -a -n "$2" ] ; then
+ if [ $2 -lt 10 ] ; then
+ local start="0$2"; else local start="$2"
+ fi
+ if [ $3 -lt 10 ] ; then
+ local stop="0$3"; else local stop="$3"
+ fi
+ for i in rc2.d/K$stop$script rc3.d/K$stop$script \
rc2.d/S$start$script rc3.d/S$start$script ; do
- if ! [ -f /mnt/etc/init.d/$script ]; then
- echo "Target `pwd`../$script does not exist. Skipping links"
- break
- else
ln -sf ../init.d/$script /mnt/etc/$i
[ "$DEBUGLEVEL" == 5 ] && echo "Linked $script"
- fi
-done
+ done
+else
+ error echo "Target $(pwd)../${script} does not exist. Skipping links."
+fi
}
# set up localization like keytable, console
dlocale () {
# fixme -- use keytable setup script here
# echo -e "\t# entries added by $0: $date" >> /mnt/etc/init.d/boot.slx
-sed "s/LANG.*/LANG=\"${LANG}\"/" -i /mnt/etc/default/locale
-#d_mkrlscript entry boot.slx "setfont ${CONSOLE_FONT} >${LOGFILE} 2>&1"
-}
-
-# group of functions for the normal runlevels - first parameter is start
-# second stop
-
-# configure udev
-config_udev () {
- [ -c /dev/pktcdvd ] && { rm -rf /dev/pktcdvd; mkdir /dev/pktcdvd; }
- if [ -f /mnt/etc/init.d/udev-finish ] ; then
- rllinker "udev-finish" 24 2
- fi
+sed -e "1i# File modified during SLX stage3 bootup (config_distro)" \
+ -e "s/LANG.*/LANG=\"${LANG}\"/" -i /mnt/etc/default/locale
}
# function for ntp configuration
@@ -149,7 +115,7 @@ if [ -f /mnt/etc/init.d/ntp -a "x$start_ntp" != "xno" ] ; then
echo -e "ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false" \
>>/mnt/etc/passwd
testmkd /mnt/var/lib/ntp/var/run/ntp
- rllinker "ntp" 7 14
+
fi
}
# function for atd
@@ -158,14 +124,18 @@ if [ "x$start_atd" = "xyes" ]; then
# testmkd /mnt/var/spool/atjobs
# testmkd /mnt/var/spool/atspool
# chown 1:1 /mnt/var/spool/atjobs /mnt/var/spool/atspool
- rllinker "atd" 14 4
+ if [ -f /mnt/etc/init.inactive/atd ] ; then
+ mv /mnt/etc/init.inactive/atd /mnt/etc/init
+ else
+ error "$df_erratd" nonfatal
+ fi
fi
}
# function for configuration of cron services (fixme: to be moved to a plugin?)
config_cron () {
if [ "x$start_cron" = "xyes" ] ; then
- if [ -f /mnt/etc/init.d/cron ] ; then
- rllinker "cron" 18 2
+ if [ -f /mnt/etc/init.inactive/anacron ] ; then
+ mv /mnt/etc/init.inactive/anacron /mnt/etc/init
# fixme! check for proper permissions!
testmkd /mnt/var/spool/crontabs
echo -e "# /etc/crontab - file generated by $0:\n\
@@ -180,30 +150,36 @@ fi
# secure shell service
config_sshd () {
if [ "x$start_sshd" = "xyes" ] ; then
- if [ -f /mnt/etc/init.d/ssh ] ; then
- #testmkd /mnt/var/run/sshd
- rllinker "ssh" 12 10
+ if [ -f /mnt/etc/init.inactive/ssh.conf ] ; then
+ testmkd /mnt/var/run/sshd
+ mv /mnt/etc/init.inactive/ssh.conf /mnt/etc/init
else
error "$df_errsshd" nonfatal
fi
fi
}
-# snmp agent for remote monitoring
+# snmp agent for remote monitoring (upstart functionality unchecked)
config_snmp () {
if [ "x$start_snmp" = "xyes" ] ; then
- if [ -f /mnt/etc/init.d/snmpd ] ; then
- rllinker "snmpd" 24 2
+ if [ -f /mnt/etc/init.inactive/snmpd.conf ] ; then
testmkd /mnt/var/lib/net-snmp
- fi
+ mv /mnt/etc/init.inactive/snmpd.conf /mnt/etc/init
+ else
# fixme!!
# write service monitor depending on services started
+ :
fi
+fi
}
# acpi and powersave
config_acpi () {
- rllinker "acpid" 8 16
- #Commented out since battery checking is only useful for Notebooks
- #rllinker "acpi-support" 99 2
+ if [ -f /mnt/etc/init.inactive/acpid.conf ] ; then
+ mv /mnt/etc/init.inactive/acpid.conf /mnt/etc/init
+ else
+ # fixme!!
+ # write service monitor depending on services started
+ :
+ fi
}
# configure hal, dbus, policykitd and services like that
config_dreshal () {
@@ -223,14 +199,9 @@ if [ "x$start_dreshal" = "xyes" ]; then
-e "s/@@return@@/ <return result=\"yes\"\/>/"
sed -i /mnt/etc/dbus-1/system.d/hal.conf \
-e "s/^\([^d]*\)deny\(.*Volume.*\)/\1allow\2/"
- rllinker "dbus" 2 20
- rllinker "hal" 3 18
- if [ ! -e /mnt/etc/init.d/policykit ] ; then
- testmkd /mnt/var/lib/PolicyKit root:polkituser 1770
- testmkd /mnt/var/lib/PolicyKit-public root:polkituser
- else
- rllinker "policykit" 18 10
- fi
+ for dir in 10-vendor.d 20-org.d 30-site.d 50-local.d 90-mandatory.d ; do
+ testmkd /mnt/var/lib/polkit-1/localauthority/${dir}
+ done
fi
}
@@ -241,6 +212,7 @@ d_mkrlscript () {
local switch="$1"
local name="$2"
local info="$3"
+# ToDo: needs to be adapted to upstart mechanism
case "$switch" in
init)
echo -e "#!/bin/sh\n# skeleton of /etc/init.d/$name written \
@@ -260,35 +232,46 @@ rerun\n# the mkdxsinitrd script to get them applied\n\n\
;;
esac
}
-# configure automounter
+# configure automounter (unchecked)
config_automount () {
-if [ -f /mnt/etc/init.d/autofs ] ; then
+if [ -f /mnt/etc/init.inactive/autofs.conf ] ; then
+ mv /mnt/etc/init.inactive/autofs.conf /mnt/etc/init
testmkd /mnt/var/lock/subsys
sed -e "1i# /etc/default/autofs - file modified by\n#\t$0:\n#" \
-e "s,TIMEOUT.*,TIMEOUT=60," -i /mnt/etc/default/autofs
config_portmap
- rllinker "autofs" 12 4
- rllinker "nfs-common" 11 5
+ config_nfs
fi
}
# start portmapper (needed at least for nfsN and nis services)
config_portmap () {
- rllinker "portmap" 2 20
+ mv /mnt/etc/init.inactive/portmap.conf /mnt/etc/init
+ mv /mnt/etc/init.inactive/statd.conf /mnt/etc/init
+}
+# mostly unused yet (needs to be properly integrated)
+config_nfs () {
+ [ -e /mnt/etc/init.inactive/gssd.conf ] && \
+ mv /mnt/etc/init.inactive/gssd.conf /mnt/etc/init
+ [ -e /mnt/etc/init.inactive/rpc_pipefs.conf ] && \
+ mv /mnt/etc/init.inactive/rpc_pipefs.conf /mnt/etc/init
+ [ -e /mnt/etc/init.inactive/idmapd.conf ] && \
+ mv /mnt/etc/init.inactive/idmapd.conf /mnt/etc/init
}
-# start NIS (fixme - does the service is really named ypbind??)
+
+# start NIS (unchecked!! fixme - does the service is really named ypbind??)
config_nis () {
- if [ -f /mnt/etc/init.d/ypbind ] ; then
- rllinker "ypbind" 6 16
+ if [ -f /mnt/etc/init.inactive/ypbind.conf ] ; then
+ mv /mnt/etc/init.inactive/ypbind.conf /mnt/etc/init
config_portmap
testmkd /mnt/var/yp/nicknames
else
error "$df_erryp" nonfatal
fi
}
-# name service caching daemon (useful in most cases)
+# name service caching daemon (really existing!?)
config_nscd () {
- if [ -f /mnt/etc/init.d/nscd ] ; then
- testmkd /mnt/var/cache/nscd
- rllinker "nscd" 20 5
- fi
+ #if [ -f /mnt/etc/init.inactive/nscd.conf ] ; then
+ # testmkd /mnt/var/cache/nscd
+ #fi
+ :
}
diff --git a/initramfs/stage3-stuff/bin/hwautocfg b/initramfs/stage3-stuff/bin/hwautocfg
index 0bfbdd2c..fee54a16 100755
--- a/initramfs/stage3-stuff/bin/hwautocfg
+++ b/initramfs/stage3-stuff/bin/hwautocfg
@@ -29,8 +29,14 @@ echo "0 0 0 0" >/proc/sys/kernel/printk
echo "/sbin/mdev" >/proc/sys/kernel/hotplug
modprobe -a ${MODPRV} usbhid hid-bright 2>/dev/null &
nwcardlist=$(echo ${slxconf_listnwmod}|sed "s/\ /|/g")
-hwinfo --netcard --usb-ctrl | grep modprobe | grep -E "$nwcardlist|hcd" | \
+# save results for later info and for Xen plugin when starting Xen VM
+hwinfo --netcard --usb-ctrl >/etc/hwinfo.netcard-usbctrl
+grep modprobe /etc/hwinfo.netcard-usbctrl | grep -E "$nwcardlist|hcd" | \
grep -v ehci | sed 's/.* Cmd: "//;s/"//' | sort -u >/etc/modprobe.base
+# virtio hack
+if [ $(grep -ic "virtio_pci" /etc/modprobe.base) -ge 1 ]; then
+ echo "modprobe virtio_net" >>/etc/modprobe.base
+fi
ash /etc/modprobe.base; mdev -s
# optimization possible: exclude network and usb base drivers from the
# following list (bios detection for non-hwautocfg component)
diff --git a/initramfs/stage3-stuff/etc/functions b/initramfs/stage3-stuff/etc/functions
index 4788a72b..f9ad22ae 100644
--- a/initramfs/stage3-stuff/etc/functions
+++ b/initramfs/stage3-stuff/etc/functions
@@ -1023,3 +1023,7 @@ config_nfsv4 () {
keytable () {
:
}
+# set up localization like keytable, console
+dlocale () {
+:
+}
diff --git a/initramfs/stage3-stuff/etc/messages b/initramfs/stage3-stuff/etc/messages
index 734414c7..8c362144 100644
--- a/initramfs/stage3-stuff/etc/messages
+++ b/initramfs/stage3-stuff/etc/messages
@@ -112,9 +112,6 @@ init_wait=" Waited $ticks ticks to unmount kernel module or firmware \
directory ..."
init_errumnt=" Unmount of the kernel modules directory \
failed for some reason. Some\n modprobe process still active!?"
-init_erritab=" The file /etc/inittab does not exist or is no regular one. It \
-is needed\n for the bootup procedure to follow. If upstart is used instead no \
-inittab\n is needed any more, but a proper configured events.d."
init_errsys=" Unmount of the kernel sys directory \
failed for some\nreason. You will get some error messages that some files \
could not be\n removed."
@@ -151,6 +148,9 @@ configuration\n from your server. You could find that out by checking if \
/initramfs and\n /rootfs are present!"
# messages from distro functions
+df_erritab=" The file /etc/inittab does not exist or is no regular one. It \
+is needed\n for the bootup procedure to follow. If upstart is used instead no \
+inittab\n is needed any more, but a proper configured events.d."
df_errumod=" Failed to load the \"unix\" module. Problems with Hardware \
detection\nwill probably arise."
df_errserv="seems not to be installed or start script is\n not available\
diff --git a/initramfs/stage3-stuff/etc/messages.de b/initramfs/stage3-stuff/etc/messages.de
index dee39590..0d68b551 100644
--- a/initramfs/stage3-stuff/etc/messages.de
+++ b/initramfs/stage3-stuff/etc/messages.de
@@ -1,5 +1,5 @@
# Copyright (c) 2003 - 2006 - RZ Uni Freiburg
-# Copyright (c) 2006 - 2009 - OpenSLX GmbH
+# Copyright (c) 2006 - 2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -121,8 +121,6 @@ init_wait=" Wartete $i Zeiteinheiten das Kernel-Modul- bzw. Firmware-Verzeichni
auszuhaengen ..."
init_errumnt=" Das Kernel Modul Verzeichnis auszuhaengen \
scheiterte aus irgendeinem Grund. Sind einige\n ,,modprobe'' noch aktiv!?"
-init_erritab=" Die Datei /etc/inittab existiert nicht oder \
-ist keine regulaere. \nSie wird fuer den Boot-Process benoetigt."
init_errsys=" Aushaengen des Kernel /sys Verzeichnisses schlug aus irgendeinem \
Grund\n fehl. Sie werden einige Fehlermeldungen bekommen,\
\ndass einige Dateien nicht entfernt werden konnten."
@@ -160,6 +158,8 @@ erkennen Sie daran,\n dass die Verzeichnisse /initramfs, /rootfs angelegt \
wurden. Ihr\n OpenSLX Client wird deshalb nicht wie erwartet funktionieren."
# messages from distro functions
+df_erritab=" Die Datei /etc/inittab existiert nicht oder ist keine regulaere. \
+\n Sie wird fuer den Boot-Process benoetigt."
df_errumod=" Das Laden des \"unix\" Moduls schlug fehl. \nWahrscheinlich \
werden Probleme bei der Hardware-Erkennung auftreten."
df_errserv="ist entweder nicht installiert oder das Start-Skript ist nicht \
diff --git a/initramfs/stage3-stuff/init b/initramfs/stage3-stuff/init
index a96c66e0..40816192 100755
--- a/initramfs/stage3-stuff/init
+++ b/initramfs/stage3-stuff/init
@@ -1,6 +1,6 @@
#!/bin/ash
# Copyright (c) 2003..2006 - RZ Uni Freiburg
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -379,6 +379,7 @@ else
fi
runinithook '10-nw-if-config'
+
# check for multiple ethernet interfaces (we have at least the mac of PXE boot
# device in $bootmac)
# check here for the active ethernet link (skip non-ethN interfaces)
@@ -410,6 +411,7 @@ if strinstr "eth" "$nwif" ; then
done
fi
# hook to setup bridging (several virtualization tools ...)
+
runinithook '20-nw-bridge-config'
# set up loopback networking
@@ -802,6 +804,14 @@ fi
runinithook '50-have-layered-fs'
+# generate a set of default directories
+. /etc/openslx.conf
+for dir in $OPENSLX_DEFAULT_LOGDIR $OPENSLX_DEFAULT_BINDIR \
+ $OPENSLX_DEFAULT_LIBDIR $OPENSLX_DEFAULT_VIRTDIR; do
+ testmkd /mnt/$dir
+done
+chmod -R 1777 /mnt/${OPENSLX_DEFAULT_LOGDIR}
+
# script for stuff to execute during early bootup
d_mkrlscript init boot.slx "Running configuration postponed from InitRamFS"
echo "fs complete at $(sysup)" >/tmp/fscmpl
@@ -927,6 +937,7 @@ else
fi
runinithook '80-after-plugins'
+
# runtimer
[ $DEBUGLEVEL -eq 8 -o $DEBUGLEVEL -eq 20 ] && \
echo "** Plugin configuration finished at $(sysup)"
@@ -969,8 +980,6 @@ mount 2>/dev/null | grep -q "/tmp/scratch type nfs" && \
done
mount 2>/dev/null | grep -q /lib/modules && error "$init_errumnt"
-# check for inittab file (might fail for new style init -> upstart)
-test -f /mnt/etc/inittab || test -d /mnt/etc/event.d || error "$init_erritab"
# close runlevel script for stuff to execute during early bootup
d_mkrlscript close boot.slx ""
# put /tmp into stage4 mtab and add stuff to stage4 fstab
@@ -1015,4 +1024,5 @@ unset BOOT_IMAGE KCMDLINE KERNEL MODPRV NWMODULES OLDPWD UDEVD_EVENT_TIMEOUT \
runinithook '99-handing-over'
# new style of pivoting (switch_root or run-init)
-exec /sbin/switch_root -c dev/console /mnt /sbin/init || error "$init_runinit"
+exec /sbin/switch_root -c dev/console /mnt /sbin/init $DEBUG_UPSTART || \
+ error "$init_runinit"
diff --git a/installer/OpenSLX/OSExport/Distro/Ubuntu.pm b/installer/OpenSLX/OSExport/Distro/Ubuntu.pm
index aff03cf3..ef844d51 100644
--- a/installer/OpenSLX/OSExport/Distro/Ubuntu.pm
+++ b/installer/OpenSLX/OSExport/Distro/Ubuntu.pm
@@ -41,6 +41,8 @@ sub initDistroInfo
- /var/spool/*
- /var/run/*
- /var/log/*
+ - /var/log/apt/*
+ + /var/log/apt
- /var/lib/*dm/*
- /var/lib/libnss-ldap/*
- /var/cache/apt/archives/*
diff --git a/installer/OpenSLX/OSSetup/Distro/Base.pm b/installer/OpenSLX/OSSetup/Distro/Base.pm
index 99bae53f..f3fe05ab 100644
--- a/installer/OpenSLX/OSSetup/Distro/Base.pm
+++ b/installer/OpenSLX/OSSetup/Distro/Base.pm
@@ -72,7 +72,8 @@ sub initialize
- /var/cache/apt/archives/lock
- /var/cache/apt/archives/partial/*
+ /var/cache/apt/archives/partial
- - /var/tmp/*
+ - /var/tmp/*
+ + /var/tmp/apt
- /var/opt/openslx
- /var/lib/vmware
- /var/lib/ntp/*
@@ -101,14 +102,16 @@ sub initialize
+ /lib
- /home/*
+ /home
- - /etc/vmware/installer.sh
+ - /etc/vmware/*
+ + /etc/vmware
+ - /etc/vmware-installer
- /etc/grub*
- /etc/shadow*
- /etc/samba/secrets.tdb
- /etc/resolv.conf.*
- /etc/opt/openslx
- /etc/exports*
- - /etc/X11/xorg.c*
+ - /etc/X11/xorg.*
- /etc/X11/XF86*
+ /etc
- /dev/*
@@ -117,6 +120,7 @@ sub initialize
+ /bin
- /*
- .svn
+ - .git
- .*.cmd
- *~
- *lost+found*
diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm
index 911fc543..72e8c7e8 100644
--- a/installer/OpenSLX/OSSetup/Engine.pm
+++ b/installer/OpenSLX/OSSetup/Engine.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -56,6 +56,8 @@ use vars qw(%supportedDistros);
'suse-11.0_x86_64' => 'clone,update,shell',
'suse-11.1' => 'clone,install,update,shell',
'suse-11.1_x86_64' => 'clone,update,shell',
+ 'suse-11.2' => 'clone,install,update,shell',
+ 'suse-11.2_x86_64' => 'clone,update,shell',
'scilin-4.7' => 'clone,update,shell',
'scilin-5.3' => 'clone,update,shell',
'ubuntu-8.04' => 'clone,install,update,shell',
@@ -66,6 +68,8 @@ use vars qw(%supportedDistros);
'ubuntu-9.04_amd64' => 'clone,update,shell',
'ubuntu-9.10' => 'clone,install,update,shell',
'ubuntu-9.10_amd64' => 'clone,update,shell',
+ 'ubuntu-10.04' => 'clone,install,update,shell',
+ 'ubuntu-10.04_amd64'=> 'clone,update,shell',
);
my %localHttpServers;
@@ -1102,8 +1106,9 @@ sub _generateDefaultDirs
my $OPENSLX_DEFAULT_DIR = "/opt/openslx";
my $OPENSLX_DEFAULT_CONFDIR = "/etc/opt/openslx";
my $OPENSLX_DEFAULT_LOGDIR = "/var/log/openslx";
- my $OPENSLX_DEFAULT_BINDIR = "/var/opt/openslx/bin";
- my $OPENSLX_DEFAULT_LIBDIR = "/var/opt/openslx/lib";
+ my $OPENSLX_DEFAULT_VARDIR = "/var/opt/openslx";
+ my $OPENSLX_DEFAULT_BINDIR = "$OPENSLX_DEFAULT_VARDIR/bin";
+ my $OPENSLX_DEFAULT_LIBDIR = "$OPENSLX_DEFAULT_VARDIR/lib";
my $OPENSLX_DEFAULT_VIRTDIR = "/var/lib/virt";
mkpath("$targetRoot/$OPENSLX_DEFAULT_DIR",
"$targetRoot/$OPENSLX_DEFAULT_CONFDIR",
@@ -1113,9 +1118,12 @@ sub _generateDefaultDirs
"$targetRoot/$OPENSLX_DEFAULT_VIRTDIR");
slxsystem("chmod 1777 $targetRoot/$OPENSLX_DEFAULT_LOGDIR");
- my $openslxConfig = "OPENSLX_DEFAULT_DIR=$OPENSLX_DEFAULT_DIR\n";
+ my $openslxConfig = "# Default OpenSLX directories defined by satge 1\n";
+ $openslxConfig .= "# Version 0.2\n\n";
+ $openslxConfig .= "OPENSLX_DEFAULT_DIR=$OPENSLX_DEFAULT_DIR\n";
$openslxConfig .= "OPENSLX_DEFAULT_CONFDIR=$OPENSLX_DEFAULT_CONFDIR\n";
$openslxConfig .= "OPENSLX_DEFAULT_LOGDIR=$OPENSLX_DEFAULT_LOGDIR\n";
+ $openslxConfig .= "OPENSLX_DEFAULT_VARDIR=$OPENSLX_DEFAULT_VARDIR\n";
$openslxConfig .= "OPENSLX_DEFAULT_BINDIR=$OPENSLX_DEFAULT_BINDIR\n";
$openslxConfig .= "OPENSLX_DEFAULT_LIBDIR=$OPENSLX_DEFAULT_LIBDIR\n";
$openslxConfig .= "OPENSLX_DEFAULT_VIRTDIR=$OPENSLX_DEFAULT_VIRTDIR\n";
@@ -1151,7 +1159,6 @@ sub _copyUclibcRootfs
kexec
libcurses.so*
libncurses.so*
- mconf
strace
);
my $exclOpts = join ' ', map { "--exclude $_" } @excludes;
diff --git a/lib/OpenSLX/DistroUtils/InitFile.pm b/lib/OpenSLX/DistroUtils/InitFile.pm
index a7e5da5d..ab729959 100644
--- a/lib/OpenSLX/DistroUtils/InitFile.pm
+++ b/lib/OpenSLX/DistroUtils/InitFile.pm
@@ -144,10 +144,10 @@ sub setDesc {
}
sub addFunction {
- my $self = shift;
- my $name = shift;
- my $script = shift;
- my $flags = shift || {};
+ my $self = shift;
+ my $name = shift;
+ my $script = shift;
+ my $flags = shift || {};
my $priority = $flags->{priority} || 5;
push(@{$self->{'configHash'}->{'highlevelConfig'}},
diff --git a/lib/OpenSLX/Syscall.pm b/lib/OpenSLX/Syscall.pm
index 172db4d0..da72ae3d 100644
--- a/lib/OpenSLX/Syscall.pm
+++ b/lib/OpenSLX/Syscall.pm
@@ -73,23 +73,25 @@ sub _loadPerlHeader
# any of these).
# If they are missing, we just have a go at creating all of them:
mkpath($phLibDir) unless -e $phLibDir;
- if (-l "/usr/include/asm" && !-e "$phLibDir/asm") {
- my $asmFolder = readlink("/usr/include/asm");
- slxsystem("cd /usr/include && h2ph -rQ -d $phLibDir $asmFolder") == 0
- or die _tr('unable to create Perl-header from "asm" folder! (%s)', $!);
- slxsystem("mv $phLibDir/$asmFolder $phLibDir/asm") == 0
- or die _tr('unable to cleanup "asm" folder for Perl headers! (%s)', $!);
- }
- elsif (-d "/usr/include/asm") {
- slxsystem("cd /usr/include && h2ph -rQ -d $phLibDir asm") == 0
- or die _tr('unable to create Perl-header from "asm" folder! (%s)', $!);
- }
- else {
- die _tr(
- 'the folder "/usr/include/asm" is required - please install kernel headers!'
- );
+ if (!-e "$phLibDir/asm") {
+ if (-l "/usr/include/asm") {
+ my $asmFolder = readlink("/usr/include/asm");
+ slxsystem("cd /usr/include && h2ph -rQ -d $phLibDir $asmFolder") == 0
+ or die _tr('unable to create Perl-header from "asm" folder! (%s)', $!);
+ slxsystem("mv $phLibDir/$asmFolder $phLibDir/asm") == 0
+ or die _tr('unable to cleanup "asm" folder for Perl headers! (%s)', $!);
+ }
+ elsif (-d "/usr/include/asm") {
+ slxsystem("cd /usr/include && h2ph -rQ -d $phLibDir asm") == 0
+ or die _tr('unable to create Perl-header from "asm" folder! (%s)', $!);
+ }
+ else {
+ die _tr(
+ 'the folder "/usr/include/asm" is required - please install kernel headers!'
+ );
+ }
}
- if (-e "usr/include/asm-generic" && !-e "$phLibDir/asm-generic") {
+ if (-e "/usr/include/asm-generic" && !-e "$phLibDir/asm-generic") {
slxsystem("cd /usr/include && h2ph -rQ -d $phLibDir asm-generic") == 0
or die _tr('unable to create Perl-header from "asm-generic" folder! (%s)', $!);
}
diff --git a/lib/distro-info/suse-11.2/export-filter.example b/lib/distro-info/suse-11.2/export-filter.example
new file mode 100644
index 00000000..a414fef4
--- /dev/null
+++ b/lib/distro-info/suse-11.2/export-filter.example
@@ -0,0 +1,15 @@
+# this file defines the filter rules used when exporting a vendor-OS
+# of this distro
+#
+# copy this file to 'export-filter' and add your own filters to it
+# in order to overrule the filters provided by openslx
+#
+#Examples:
+# the following line would include anything below /var/spool/
+#+ /var/spool/*
+#
+# this would exclude anything in /etc that starts with dhcpd.conf
+#- /etc/dhcpd.conf*
+#
+# and this would exclude all rpmnew-files:
+#- *.rpmnew
diff --git a/lib/distro-info/suse-11.2/mirrors/base b/lib/distro-info/suse-11.2/mirrors/base
new file mode 100644
index 00000000..e30465d5
--- /dev/null
+++ b/lib/distro-info/suse-11.2/mirrors/base
@@ -0,0 +1,252 @@
+http://opensuse.mirror.ac.za/opensuse/distribution/11.2/repo/oss
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.2/repo/oss
+http://www.lizardsource.cn/distribution/11.2/repo/oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.2/repo/oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.2/repo/oss
+http://download.opensuse.or.id/distribution/11.2/repo/oss
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.2/repo/oss
+http://mirror.lupaworld.com/opensuse/distribution/11.2/repo/oss
+ftp://www.lizardsource.cn/distribution/11.2/repo/oss
+ftp://opensuse.mirror.ac.za/opensuse/distribution/11.2/repo/oss
+http://repo.ugm.ac.id/opensuse/distribution/11.2/repo/oss
+http://opensuse.cbn.net.id/distribution/11.2/repo/oss
+http://mirror.unej.ac.id/opensuse/distribution/11.2/repo/oss
+http://dl2.foss-id.web.id/opensuse/distribution/11.2/repo/oss
+http://mirror.isoc.org.il/pub/opensuse/distribution/11.2/repo/oss
+ftp://dl2.foss-id.web.id/repo/opensuse/distribution/11.2/repo/oss
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.2/repo/oss
+ftp://opensuse.cbn.net.id/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.kddilabs.jp/Linux/packages/opensuse/distribution/11.2/repo/oss
+ftp://mirror.isoc.org.il/opensuse/distribution/11.2/repo/oss
+ftp://repo.ugm.ac.id/opensuse/distribution/11.2/repo/oss
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.2/repo/oss
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.kddilabs.jp/Linux/packages/opensusedistribution/11.2/repo/oss
+http://ftp.novell.co.jp/pub/opensuse/distribution/11.2/repo/oss
+ftp://mirror.unej.ac.id/opensuse/distribution/11.2/repo/oss
+http://ftp.riken.jp/Linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.riken.jp/Linux/opensuse/distribution/11.2/repo/oss
+http://ftp.daum.net/opensuse/distribution/11.2/repo/oss
+http://77.88.19.68/opensuse/distribution/11.2/repo/oss
+http://77.88.19.73/opensuse/distribution/11.2/repo/oss
+http://mirror.suse.ru/distribution/11.2/repo/oss
+http://77.88.19.74/opensuse/distribution/11.2/repo/oss
+http://93.158.155.193/opensuse/distribution/11.2/repo/oss
+ftp://ftp.daum.net/opensuse/distribution/11.2/repo/oss
+ftp://seeder.yandex.net/opensuse/distribution/11.2/repo/oss
+ftp://ftp.chg.ru/pub/opensuse/distribution/11.2/repo/oss
+ftp://allotter.yandex.net/opensuse/distribution/11.2/repo/oss
+http://mirror.nus.edu.sg/opensuse/distribution/11.2/repo/oss
+ftp://dispenser.yandex.net/opensuse/distribution/11.2/repo/oss
+ftp://ftp.kaist.ac.kr/opensuse/distribution/11.2/repo/oss
+ftp://spreader.yandex.net/opensuse/distribution/11.2/repo/oss
+ftp://ftp.novell.co.jp/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.metu.edu.tr/opensuse/distribution/11.2/repo/oss
+http://ftp.isu.edu.tw/pub/Linux/opensuse/distribution/11.2/repo/oss
+ftp://mirror.in.th/opensuse/distribution/11.2/repo/oss
+ftp://ftp.isu.edu.tw/pub/Linux/OpenSuSE/distribution/11.2/repo/oss
+http://ftp.chg.ru/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.2/repo/oss
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.2/repo/oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.twaren.net/Linux/OpenSuSE/distribution/11.2/repo/oss
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.2/repo/oss
+ftp://ftp.twaren.net/Linux/OpenSuSE/distribution/11.2/repo/oss
+http://suse.inode.at/opensuse/distribution/11.2/repo/oss
+http://mirror-fpt-telecom.fpt.net/opensuse/distribution/11.2/repo/oss
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.2/repo/oss
+http://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.tugraz.at/mirror/opensuse/distribution/11.2/repo/oss
+ftp://suse.inode.at/opensuse/distribution/11.2/repo/oss
+ftp://ftp.tugraz.at/mirror/opensuse/distribution/11.2/repo/oss
+http://suse.lagis.at/opensuse/distribution/11.2/repo/oss
+http://mirror.opensuse.com.ba/opensuse/distribution/11.2/repo/oss
+http://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.2/repo/oss
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.2/repo/oss
+http://mirrors.netbg.com/opensuse/distribution/11.2/repo/oss
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.2/repo/oss
+ftp://suse.lagis.at/opensuse/distribution/11.2/repo/oss
+http://mirror.karneval.cz/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.2/repo/oss
+http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.2/repo/oss
+http://ftp.linux.cz/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+http://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.2/repo/oss
+ftp://mirror.karneval.cz/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://mirrors.netbg.com/opensuse/distribution/11.2/repo/oss
+http://ftp5.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.2/repo/oss
+ftp://mirror.switch.ch/mirror/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/distribution/11.2/repo/oss
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp5.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/distribution/11.2/repo/oss
+http://download.uni-hd.de/ftp/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.2/repo/oss
+http://opensuse.intergenia.de/distribution/11.2/repo/oss
+http://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.2/repo/oss
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.2/repo/oss
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.2/repo/oss
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.2/repo/oss
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp3.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-kassel.de/opensuse/distribution/11.2/repo/oss
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://widehat.opensuse.org/distribution/11.2/repo/oss
+http://ftp4.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://ftp4.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.2/repo/oss
+http://opensuse-linuxmigratio.at/distribution/11.2/repo/oss
+http://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.2/repo/oss
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.klid.dk/ftp/opensuse/distribution/11.2/repo/oss
+ftp://ftp3.gwdg.de/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.uni-siegen.de/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-siegen.de/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.estpak.ee/pub/suse/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.gui.uva.es/sites/opensuse.org/distribution/11.2/repo/oss
+http://ftp.rediris.es/pub/mirror/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.2/repo/oss
+http://suse.bifi.unizar.es/opensuse/distribution/11.2/repo/oss
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.2/repo/oss
+http://opensuse.mirrors.proxad.net/opensuse/distribution/11.2/repo/oss
+ftp://ftp.klid.dk/opensuse/distribution/11.2/repo/oss
+http://mirror.ovh.net/opensuse/distribution/11.2/repo/oss
+http://fr2.rpmfind.net/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.gui.uva.es/sites/opensuse.org/distribution/11.2/repo/oss
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.2/repo/oss
+ftp://fr2.rpmfind.net/linux/opensuse/distribution/11.2/repo/oss
+http://opensuse.cict.fr/distribution/11.2/repo/oss
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://mirror.cict.fr/opensuse/distribution/11.2/repo/oss
+http://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.2/repo/oss
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/oss
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/distribution/11.2/repo/oss
+ftp://ftp.rediris.es/pub/mirror/opensuse/distribution/11.2/repo/oss
+ftp://mirror.ovh.net/opensuse/distribution/11.2/repo/oss
+ftp://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.2/repo/oss
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.2/repo/oss
+http://ftp.ntua.gr/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.2/repo/oss
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/distribution/11.2/repo/oss
+http://roxen.integrity.hu/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.2/repo/oss
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://ftp.ntua.gr/pub/linux/opensusedistribution/11.2/repo/oss
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.2/repo/oss
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/oss
+http://rm.mirror.garr.it/mirrors/opensuse/distribution/11.2/repo/oss
+http://mirror.leaseweb.com/opensuse/distribution/11.2/repo/oss
+ftp://rm.mirror.garr.it/mirrors/opensusedistribution/11.2/repo/oss
+http://mirrors.nl.eu.kernel.org/opensuse/distribution/11.2/repo/oss
+http://repo1.linux.edu.lv/distribution/11.2/repo/oss
+ftp://mirrors.nl.eu.kernel.org/opensuse/distribution/11.2/repo/oss
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/distribution/11.2/repo/oss
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.2/repo/oss
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/distribution/11.2/repo/oss
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/oss
+http://opensuse.hro.nl/opensuse/distribution/11.2/repo/oss
+ftp://repo1.linux.edu.lv/distribution/11.2/repo/oss
+ftp://opensuse.hro.nl/opensuse/distribution/11.2/repo/oss
+http://opensuse.uib.no/distribution/11.2/repo/oss
+ftp://mirror.leaseweb.com/opensuse/distribution/11.2/repo/oss
+http://ftp.uninett.no/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.2/repo/oss
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://ftp.uninett.no/pub/linux/opensuse/distribution/11.2/repo/oss
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.2/repo/oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.2/repo/oss
+http://ftp.sileman.pl/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.2/repo/oss
+http://cesium.di.uminho.pt/pub/opensuse/distribution/11.2/repo/oss
+ftp://cesium.di.uminho.pt/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.sileman.pl/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.2/repo/oss
+http://ftp.gts.lug.ro/opensuse/distribution/11.2/repo/oss
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.2/repo/oss
+http://ftp.ines.lug.ro/opensuse/distribution/11.2/repo/oss
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.2/repo/oss
+http://mirrors.se.eu.kernel.org/opensuse/distribution/11.2/repo/oss
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.2/repo/oss
+ftp://ftp.ines.lug.ro/opensuse/distribution/11.2/repo/oss
+http://ftp.df.lth.se/pub/opensuse/distribution/11.2/repo/oss
+ftp://ftp.df.lth.se/pub/opensusedistribution/11.2/repo/oss
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.2/repo/oss
+ftp://ftp.gts.lug.ro/opensuse/distribution/11.2/repo/oss
+http://opensuse.ynet.sk/distribution/11.2/repo/oss
+http://less.cogeco.net/ftp/openSUSE/distribution/11.2/repo/oss
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.2/repo/oss
+http://www.muug.mb.ca/pub/opensuse/distribution/11.2/repo/oss
+ftp://mirrors.se.eu.kernel.org/opensuse/distribution/11.2/repo/oss
+http://linux.dell.com/repo/community/distribution/11.2/repo/oss
+ftp://www.muug.mb.ca/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.osuosl.org/pub/opensuse/distribution/11.2/repo/oss
+http://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.osuosl.org/pub/opensuse/distribution/11.2/repo/oss
+http://suse.mirrors.tds.net/pub/opensuse/distribution/11.2/repo/oss
+ftp://less.cogeco.net/openSUSE/distribution/11.2/repo/oss
+http://mirrors.med.harvard.edu/opensuse/distribution/11.2/repo/oss
+http://opensuse.cs.utah.edu/distribution/11.2/repo/oss
+http://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.2/repo/oss
+http://mirror.umoss.org/opensuse/distribution/11.2/repo/oss
+http://opensuse.ca.unixheads.org/distribution/11.2/repo/oss
+ftp://opensuse.cs.utah.edu/pub/opensuse/distribution/11.2/repo/oss
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.2/repo/oss
+http://mirrors.xmission.com/opensuse/distribution/11.2/repo/oss
+ftp://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://suse.mirrors.tds.net/pub/opensuse/distribution/11.2/repo/oss
+http://mirrors2.kernel.org/opensuse/distribution/11.2/repo/oss
+http://mirrors1.kernel.org/opensuse/distribution/11.2/repo/oss
+ftp://mirrors2.kernel.org/opensuse/distribution/11.2/repo/oss
+http://mirror.rackspace.com/openSUSE/distribution/11.2/repo/oss
+http://130.57.19.201/distribution/11.2/repo/oss
+ftp://mirror.rackspace.com/openSUSE/distribution/11.2/repo/oss
+ftp://130.57.19.201/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.utexas.edu/opensuse/distribution/11.2/repo/oss
+http://www.gtlib.gatech.edu/pub/opensuse/distribution/11.2/repo/oss
+ftp://www.gtlib.gatech.edu/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.ussg.iu.edu/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.utexas.edu/mirrors/opensuse/distribution/11.2/repo/oss
+ftp://mirrors.xmission.com/opensuse/distribution/11.2/repo/oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.2/repo/oss
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/distribution/11.2/repo/oss
+http://mirror.cps.cmich.edu/opensuse/opensuse/distribution/11.2/repo/oss
+http://mirror.nyi.net/opensuse/distribution/11.2/repo/oss
+ftp://mirrors1.kernel.org/opensuse/distribution/11.2/repo/oss
+http://mirrors.rit.edu/opensuse/distribution/11.2/repo/oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.2/repo/oss
+http://ftp.iinet.net.au/pub/opensuse/distribution/11.2/repo/oss
+ftp://mirror.nyi.net/opensusedistribution/11.2/repo/oss
+http://mirror.internode.on.net/pub/opensuse/distribution/11.2/repo/oss
+http://mirror.pacific.net.au/linux/opensuse/distribution/11.2/repo/oss
+ftp://ftp.iinet.net.au/pub/opensuse/distribution/11.2/repo/oss
+ftp://mirror.pacific.net.au/linux/opensuse/distribution/11.2/repo/oss
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.2/repo/oss
+http://opensuse.patan.com.ar/distribution/11.2/repo/oss
+http://200.221.9.37/pub/opensuse/distribution/11.2/repo/oss
+http://opensuse.c3sl.ufpr.br/distribution/11.2/repo/oss
+http://opensuse.pop.com.br/distribution/11.2/repo/oss
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.2/repo/oss
+ftp://opensuse.c3sl.ufpr.br/opensuse/distribution/11.2/repo/oss
+ftp://mirror.internode.on.net/pub/opensuse/distribution/11.2/repo/oss
diff --git a/lib/distro-info/suse-11.2/mirrors/base_non-oss b/lib/distro-info/suse-11.2/mirrors/base_non-oss
new file mode 100644
index 00000000..47ee0d08
--- /dev/null
+++ b/lib/distro-info/suse-11.2/mirrors/base_non-oss
@@ -0,0 +1,250 @@
+http://opensuse.mirror.ac.za/opensuse/distribution/11.2/repo/non-oss
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://mirror.lupaworld.com/opensuse/distribution/11.2/repo/non-oss
+http://www.lizardsource.cn/distribution/11.2/repo/non-oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://www.lizardsource.cn/distribution/11.2/repo/non-oss
+ftp://opensuse.mirror.ac.za/opensuse/distribution/11.2/repo/non-oss
+http://mirror.unej.ac.id/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.cbn.net.id/distribution/11.2/repo/non-oss
+http://download.opensuse.or.id/distribution/11.2/repo/non-oss
+http://repo.ugm.ac.id/opensuse/distribution/11.2/repo/non-oss
+ftp://opensuse.cbn.net.id/pub/opensuse/distribution/11.2/repo/non-oss
+http://dl2.foss-id.web.id/opensuse/distribution/11.2/repo/non-oss
+http://mirror.isoc.org.il/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.2/repo/non-oss
+ftp://dl2.foss-id.web.id/repo/opensuse/distribution/11.2/repo/non-oss
+http://ftp.kddilabs.jp/Linux/packages/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.2/repo/non-oss
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.isoc.org.il/opensuse/distribution/11.2/repo/non-oss
+http://ftp.novell.co.jp/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://repo.ugm.ac.id/opensuse/distribution/11.2/repo/non-oss
+http://ftp.riken.jp/Linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.novell.co.jp/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.daum.net/opensuse/distribution/11.2/repo/non-oss
+http://77.88.19.68/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.kddilabs.jp/Linux/packages/opensusedistribution/11.2/repo/non-oss
+http://77.88.19.73/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.riken.jp/Linux/opensuse/distribution/11.2/repo/non-oss
+http://mirror.suse.ru/distribution/11.2/repo/non-oss
+http://77.88.19.74/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.chg.ru/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://spreader.yandex.net/opensuse/distribution/11.2/repo/non-oss
+http://mirror.nus.edu.sg/opensuse/distribution/11.2/repo/non-oss
+ftp://dispenser.yandex.net/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.kaist.ac.kr/opensuse/distribution/11.2/repo/non-oss
+ftp://seeder.yandex.net/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.in.th/opensuse/distribution/11.2/repo/non-oss
+ftp://allotter.yandex.net/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.metu.edu.tr/opensuse/distribution/11.2/repo/non-oss
+http://ftp.isu.edu.tw/pub/Linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.isu.edu.tw/pub/Linux/OpenSuSE/distribution/11.2/repo/non-oss
+http://ftp.chg.ru/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.2/repo/non-oss
+http://ftp.twaren.net/Linux/OpenSuSE/distribution/11.2/repo/non-oss
+http://mirror-fpt-telecom.fpt.net/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.twaren.net/Linux/OpenSuSE/distribution/11.2/repo/non-oss
+http://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.2/repo/non-oss
+http://suse.inode.at/opensuse/distribution/11.2/repo/non-oss
+http://ftp.tugraz.at/mirror/opensuse/distribution/11.2/repo/non-oss
+ftp://suse.inode.at/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.tugraz.at/mirror/opensuse/distribution/11.2/repo/non-oss
+http://suse.lagis.at/opensuse/distribution/11.2/repo/non-oss
+ftp://suse.lagis.at/opensuse/distribution/11.2/repo/non-oss
+http://mirror.opensuse.com.ba/opensuse/distribution/11.2/repo/non-oss
+http://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.2/repo/non-oss
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.2/repo/non-oss
+http://mirrors.netbg.com/opensuse/distribution/11.2/repo/non-oss
+http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.2/repo/non-oss
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+http://mirror.karneval.cz/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://mirrors.netbg.com/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.switch.ch/mirror/opensuse/distribution/11.2/repo/non-oss
+http://ftp.linux.cz/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.karneval.cz/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.2/repo/non-oss
+http://ftp5.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://download.uni-hd.de/ftp/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.2/repo/non-oss
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp5.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.intergenia.de/distribution/11.2/repo/non-oss
+http://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.2/repo/non-oss
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.2/repo/non-oss
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.2/repo/non-oss
+http://widehat.opensuse.org/distribution/11.2/repo/non-oss
+http://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.2/repo/non-oss
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp4.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp3.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp4.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uni-kassel.de/opensuse/distribution/11.2/repo/non-oss
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.2/repo/non-oss
+http://opensuse-linuxmigratio.at/distribution/11.2/repo/non-oss
+ftp://ftp3.gwdg.de/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uni-siegen.de/opensuse/distribution/11.2/repo/non-oss
+http://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.2/repo/non-oss
+http://ftp.klid.dk/ftp/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.klid.dk/opensuse/distribution/11.2/repo/non-oss
+http://ftp.estpak.ee/pub/suse/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.gui.uva.es/sites/opensuse.org/distribution/11.2/repo/non-oss
+ftp://ftp.uni-siegen.de/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.rediris.es/pub/mirror/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.rediris.es/pub/mirror/opensuse/distribution/11.2/repo/non-oss
+http://suse.bifi.unizar.es/opensuse/distribution/11.2/repo/non-oss
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.gui.uva.es/sites/opensuse.org/distribution/11.2/repo/non-oss
+http://opensuse.mirrors.proxad.net/opensuse/distribution/11.2/repo/non-oss
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+http://fr2.rpmfind.net/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.ovh.net/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.cict.fr/distribution/11.2/repo/non-oss
+http://mirror.ovh.net/opensuse/distribution/11.2/repo/non-oss
+http://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.2/repo/non-oss
+ftp://fr2.rpmfind.net/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/non-oss
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/distribution/11.2/repo/non-oss
+ftp://mirror.cict.fr/opensuse/distribution/11.2/repo/non-oss
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://ftp.ntua.gr/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.ntua.gr/pub/linux/opensusedistribution/11.2/repo/non-oss
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/distribution/11.2/repo/non-oss
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.2/repo/non-oss
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.2/repo/non-oss
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.2/repo/non-oss
+http://rm.mirror.garr.it/mirrors/opensuse/distribution/11.2/repo/non-oss
+http://roxen.integrity.hu/pub/opensuse/distribution/11.2/repo/non-oss
+http://repo1.linux.edu.lv/distribution/11.2/repo/non-oss
+http://mirror.leaseweb.com/opensuse/distribution/11.2/repo/non-oss
+ftp://repo1.linux.edu.lv/distribution/11.2/repo/non-oss
+ftp://mirror.leaseweb.com/opensuse/distribution/11.2/repo/non-oss
+ftp://rm.mirror.garr.it/mirrors/opensusedistribution/11.2/repo/non-oss
+http://mirrors.nl.eu.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/distribution/11.2/repo/non-oss
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.hro.nl/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.uib.no/distribution/11.2/repo/non-oss
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://ftp.uninett.no/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.2/repo/non-oss
+ftp://mirrors.nl.eu.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.uninett.no/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://opensuse.hro.nl/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.2/repo/non-oss
+http://ftp.sileman.pl/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.2/repo/non-oss
+http://cesium.di.uminho.pt/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://cesium.di.uminho.pt/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.gts.lug.ro/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.sileman.pl/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.ines.lug.ro/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.2/repo/non-oss
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.2/repo/non-oss
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.2/repo/non-oss
+http://mirrors.se.eu.kernel.org/opensuse/distribution/11.2/repo/non-oss
+ftp://mirrors.se.eu.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp.gts.lug.ro/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.ines.lug.ro/opensuse/distribution/11.2/repo/non-oss
+http://ftp.df.lth.se/pub/opensuse/distribution/11.2/repo/non-oss
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.ynet.sk/distribution/11.2/repo/non-oss
+http://less.cogeco.net/ftp/openSUSE/distribution/11.2/repo/non-oss
+http://linux.dell.com/repo/community/distribution/11.2/repo/non-oss
+ftp://less.cogeco.net/openSUSE/distribution/11.2/repo/non-oss
+ftp://ftp.df.lth.se/pub/opensusedistribution/11.2/repo/non-oss
+http://ftp.osuosl.org/pub/opensuse/distribution/11.2/repo/non-oss
+http://www.muug.mb.ca/pub/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.osuosl.org/pub/opensuse/distribution/11.2/repo/non-oss
+http://suse.mirrors.tds.net/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.2/repo/non-oss
+http://mirrors.med.harvard.edu/opensuse/distribution/11.2/repo/non-oss
+ftp://suse.mirrors.tds.net/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://www.muug.mb.ca/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirror.umoss.org/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.cs.utah.edu/distribution/11.2/repo/non-oss
+http://opensuse.ca.unixheads.org/distribution/11.2/repo/non-oss
+ftp://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://mirrors2.kernel.org/opensuse/distribution/11.2/repo/non-oss
+ftp://opensuse.cs.utah.edu/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirrors1.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://mirrors.xmission.com/opensuse/distribution/11.2/repo/non-oss
+http://mirror.rackspace.com/openSUSE/distribution/11.2/repo/non-oss
+http://130.57.19.201/distribution/11.2/repo/non-oss
+ftp://mirrors.xmission.com/opensuse/distribution/11.2/repo/non-oss
+ftp://130.57.19.201/pub/opensuse/distribution/11.2/repo/non-oss
+http://www.gtlib.gatech.edu/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://mirrors2.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://ftp.ussg.iu.edu/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.rackspace.com/openSUSE/distribution/11.2/repo/non-oss
+http://ftp.utexas.edu/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.ussg.iu.edu/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.utexas.edu/mirrors/opensuse/distribution/11.2/repo/non-oss
+ftp://www.gtlib.gatech.edu/pub/opensuse/distribution/11.2/repo/non-oss
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/distribution/11.2/repo/non-oss
+http://mirror.cps.cmich.edu/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://mirror.nyi.net/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://mirrors1.kernel.org/opensuse/distribution/11.2/repo/non-oss
+http://mirrors.rit.edu/opensuse/distribution/11.2/repo/non-oss
+http://ftp.iinet.net.au/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.nyi.net/opensusedistribution/11.2/repo/non-oss
+http://mirror.internode.on.net/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirror.pacific.net.au/linux/opensuse/distribution/11.2/repo/non-oss
+ftp://ftp.iinet.net.au/pub/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.internode.on.net/pub/opensuse/distribution/11.2/repo/non-oss
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.2/repo/non-oss
+ftp://mirror.pacific.net.au/linux/opensuse/distribution/11.2/repo/non-oss
+http://200.221.9.37/pub/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.c3sl.ufpr.br/distribution/11.2/repo/non-oss
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.2/repo/non-oss
+http://opensuse.patan.com.ar/distribution/11.2/repo/non-oss
+http://opensuse.pop.com.br/distribution/11.2/repo/non-oss
+ftp://opensuse.c3sl.ufpr.br/opensuse/distribution/11.2/repo/non-oss
diff --git a/lib/distro-info/suse-11.2/mirrors/base_update b/lib/distro-info/suse-11.2/mirrors/base_update
new file mode 100644
index 00000000..bc6e9a4c
--- /dev/null
+++ b/lib/distro-info/suse-11.2/mirrors/base_update
@@ -0,0 +1,252 @@
+http://mirror.lupaworld.com/opensuse/update/11.2
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/update/11.2
+http://opensuse.mirror.ac.za/opensuse/update/11.2
+ftp://opensuse.mirror.ac.za/opensuse/update/11.2
+http://www.lizardsource.cn/update/11.2
+http://mirror.alva.ge/pub/opensuse/update/11.2
+http://mirror.alva.ge/pub/opensuse/update/11.2
+http://download.opensuse.or.id/update/11.2
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/update/11.2
+ftp://www.lizardsource.cn/update/11.2
+http://opensuse.cbn.net.id/update/11.2
+http://mirror.unej.ac.id/opensuse/update/11.2
+http://dl2.foss-id.web.id/opensuse/update/11.2
+ftp://mirror.isoc.org.il/opensuse/update/11.2
+http://repo.ugm.ac.id/opensuse/update/11.2
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/update/11.2
+http://mirror.isoc.org.il/pub/opensuse/update/11.2
+http://ftp.kddilabs.jp/Linux/packages/opensuse/update/11.2
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/update/11.2
+ftp://dl2.foss-id.web.id/repo/opensuse/update/11.2
+ftp://mirror.unej.ac.id/opensuse/update/11.2
+ftp://opensuse.cbn.net.id/pub/opensuse/update/11.2
+http://ftp.novell.co.jp/pub/opensuse/update/11.2
+ftp://repo.ugm.ac.id/opensuse/update/11.2
+http://ftp.riken.jp/Linux/opensuse/update/11.2
+ftp://ftp.novell.co.jp/pub/opensuse/update/11.2
+ftp://ftp.kddilabs.jp/Linux/packages/opensuseupdate/11.2
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/update/11.2
+http://77.88.19.68/opensuse/update/11.2
+ftp://ftp.daum.net/opensuse/update/11.2
+http://77.88.19.73/opensuse/update/11.2
+ftp://ftp.riken.jp/Linux/opensuse/update/11.2
+http://mirror.suse.ru/update/11.2
+http://77.88.19.74/opensuse/update/11.2
+http://ftp.daum.net/opensuse/update/11.2
+http://93.158.155.193/opensuse/update/11.2
+ftp://ftp.kaist.ac.kr/opensuse/update/11.2
+ftp://spreader.yandex.net/opensuse/update/11.2
+ftp://ftp.chg.ru/pub/opensuse/update/11.2
+ftp://seeder.yandex.net/opensuse/update/11.2
+http://mirror.nus.edu.sg/opensuse/update/11.2
+ftp://mirror.in.th/opensuse/update/11.2
+ftp://allotter.yandex.net/opensuse/update/11.2
+ftp://ftp.suntel.com.tr/pub/opensuse/update/11.2
+ftp://ftp.metu.edu.tr/opensuse/update/11.2
+ftp://dispenser.yandex.net/opensuse/update/11.2
+ftp://ftp.suntel.com.tr/pub/opensuse/update/11.2
+http://ftp.chg.ru/pub/opensuse/update/11.2
+http://ftp.isu.edu.tw/pub/Linux/opensuse/update/11.2
+http://mirror-fpt-telecom.fpt.net/opensuse/update/11.2
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/update/11.2
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/update/11.2
+http://ftp.ncnu.edu.tw/Linux/opensuse/update/11.2
+http://ftp.twaren.net/Linux/OpenSuSE/update/11.2
+ftp://ftp.isu.edu.tw/pub/Linux/OpenSuSE/update/11.2
+http://suse.inode.at/opensuse/update/11.2
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/update/11.2
+ftp://ftp.twaren.net/Linux/OpenSuSE/update/11.2
+http://ftp.tugraz.at/mirror/opensuse/update/11.2
+ftp://suse.inode.at/opensuse/update/11.2
+http://suse.lagis.at/opensuse/update/11.2
+http://ftp.belnet.be/mirror/ftp.opensuse.org/update/11.2
+ftp://ftp.tugraz.at/mirror/opensuse/update/11.2
+ftp://gd.tuwien.ac.at/opsys/linux/opensuse/update/11.2
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/update/11.2
+ftp://suse.lagis.at/opensuse/update/11.2
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/update/11.2
+http://mirror.opensuse.com.ba/opensuse/update/11.2
+http://mirrors.netbg.com/opensuse/update/11.2
+http://mirror.switch.ch/ftp/mirror/opensuse/update/11.2
+ftp://mirror.switch.ch/mirror/opensuse/update/11.2
+http://mirror.karneval.cz/pub/linux/opensuse/update/11.2
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/update/11.2
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/update/11.2
+http://ftp5.gwdg.de/pub/opensuse/update/11.2
+http://gd.tuwien.ac.at/opsys/linux/opensuse/update/11.2
+http://ftp.linux.cz/pub/linux/opensuse/update/11.2
+http://ftp.halifax.rwth-aachen.de/opensuse/update/11.2
+ftp://mirror.karneval.cz/pub/linux/opensuse/update/11.2
+ftp://mirrors.netbg.com/opensuse/update/11.2
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/update/11.2
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/update/11.2
+ftp://ftp.halifax.rwth-aachen.de/opensuse/update/11.2
+http://download.uni-hd.de/ftp/pub/linux/opensuse/update/11.2
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/update/11.2
+ftp://ftp5.gwdg.de/pub/opensuse/update/11.2
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/update/11.2
+http://opensuse.intergenia.de/update/11.2
+http://ftp.uni-ulm.de/mirrors/opensuse/update/11.2
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/update/11.2
+ftp://ftp.uni-ulm.de/mirrors/opensuse/update/11.2
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/update/11.2
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/update/11.2
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/update/11.2
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/update/11.2
+http://ftp.uni-kl.de/pub/linux/opensuse/update/11.2
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/update/11.2
+http://ftp3.gwdg.de/pub/opensuse/update/11.2
+ftp://ftp.uni-kl.de/pub/linux/opensuse/update/11.2
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/update/11.2
+http://widehat.opensuse.org/update/11.2
+http://ftp4.gwdg.de/pub/opensuse/update/11.2
+ftp://ftp4.gwdg.de/pub/opensuse/update/11.2
+ftp://ftp3.gwdg.de/pub/opensuse/update/11.2
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/update/11.2
+http://ftp.uni-kassel.de/opensuse/update/11.2
+http://ftp.uni-bayreuth.de/linux/opensuse/update/11.2
+http://opensuse-linuxmigratio.at/update/11.2
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/update/11.2
+http://ftp.tu-ilmenau.de/mirror/opensuse/update/11.2
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/update/11.2
+ftp://ftp.uni-siegen.de/pub/opensuse/update/11.2
+http://ftp.uni-paderborn.de/pub/linux/opensuse/update/11.2
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/update/11.2
+ftp://ftp.uni-bayreuth.de/linux/opensuse/update/11.2
+http://ftp.estpak.ee/pub/suse/opensuse/update/11.2
+http://ftp.gui.uva.es/sites/opensuse.org/update/11.2
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/update/11.2
+ftp://ftp.gui.uva.es/sites/opensuse.org/update/11.2
+http://ftp.rediris.es/pub/mirror/opensuse/update/11.2
+ftp://ftp.klid.dk/opensuse/update/11.2
+ftp://ftp.rediris.es/pub/mirror/opensuse/update/11.2
+http://suse.bifi.unizar.es/opensuse/update/11.2
+http://ftp.uni-siegen.de/opensuse/update/11.2
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/update/11.2
+http://ftp.klid.dk/ftp/opensuse/update/11.2
+http://opensuse.mirrors.proxad.net/opensuse/update/11.2
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/update/11.2
+ftp://mirror.ovh.net/opensuse/update/11.2
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/update/11.2
+http://mirror.ovh.net/opensuse/update/11.2
+http://www.mirrorservice.org/sites/download.opensuse.org/update/11.2
+http://fr2.rpmfind.net/linux/opensuse/update/11.2
+ftp://www.mirrorservice.org/sites/download.opensuse.org/update/11.2
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/update/11.2
+ftp://fr2.rpmfind.net/linux/opensuse/update/11.2
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/update/11.2
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/update/11.2
+http://opensuse.cict.fr/update/11.2
+http://ftp.ntua.gr/pub/linux/opensuse/update/11.2
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/update/11.2
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/update/11.2
+ftp://ftp.ntua.gr/pub/linux/opensuseupdate/11.2
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/update/11.2
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/update/11.2
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/update/11.2
+http://roxen.integrity.hu/pub/opensuse/update/11.2
+ftp://mirror.cict.fr/opensuse/update/11.2
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/update/11.2
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/update/11.2
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/update/11.2
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/update/11.2
+http://rm.mirror.garr.it/mirrors/opensuse/update/11.2
+http://repo1.linux.edu.lv/update/11.2
+ftp://repo1.linux.edu.lv/update/11.2
+http://mirror.leaseweb.com/opensuse/update/11.2
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/update/11.2
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/update/11.2
+ftp://mirror.leaseweb.com/opensuse/update/11.2
+ftp://rm.mirror.garr.it/mirrors/opensuseupdate/11.2
+ftp://mirrors.nl.eu.kernel.org/opensuse/update/11.2
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/update/11.2
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/update/11.2
+http://mirrors.nl.eu.kernel.org/opensuse/update/11.2
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/update/11.2
+http://opensuse.hro.nl/opensuse/update/11.2
+http://opensuse.uib.no/update/11.2
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/update/11.2
+http://ftp.uninett.no/pub/linux/opensuse/update/11.2
+http://ftp.icm.edu.pl/pub/Linux/opensuse/update/11.2
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/update/11.2
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/update/11.2
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/update/11.2
+ftp://ftp.uninett.no/pub/linux/opensuse/update/11.2
+ftp://opensuse.hro.nl/opensuse/update/11.2
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/update/11.2
+ftp://ftp.pbone.net/pub/opensuse/update/11.2
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/update/11.2
+http://ftp.sileman.pl/pub/opensuse/update/11.2
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/update/11.2
+ftp://ftp.sileman.pl/pub/opensuse/update/11.2
+ftp://ftp.pbone.net/pub/opensuse/update/11.2
+http://cesium.di.uminho.pt/pub/opensuse/update/11.2
+http://ftp.gts.lug.ro/opensuse/update/11.2
+ftp://cesium.di.uminho.pt/pub/opensuse/update/11.2
+ftp://ftp.gts.lug.ro/opensuse/update/11.2
+http://ftp.nux.ipb.pt/pub/dists/opensuse/update/11.2
+http://ftp.ines.lug.ro/opensuse/update/11.2
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/update/11.2
+ftp://ftp.ines.lug.ro/opensuse/update/11.2
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/update/11.2
+http://mirrors.se.eu.kernel.org/opensuse/update/11.2
+http://ftp.df.lth.se/pub/opensuse/update/11.2
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/update/11.2
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/update/11.2
+http://opensuse.ynet.sk/update/11.2
+ftp://mirrors.se.eu.kernel.org/opensuse/update/11.2
+ftp://ftp.df.lth.se/pub/opensuseupdate/11.2
+ftp://less.cogeco.net/openSUSE/update/11.2
+http://www.muug.mb.ca/pub/opensuse/update/11.2
+http://linux.dell.com/repo/community/update/11.2
+http://ftp.osuosl.org/pub/opensuse/update/11.2
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/update/11.2
+http://less.cogeco.net/ftp/openSUSE/update/11.2
+ftp://www.muug.mb.ca/pub/opensuse/update/11.2
+http://suse.mirrors.tds.net/pub/opensuse/update/11.2
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/update/11.2
+ftp://suse.mirrors.tds.net/pub/opensuse/update/11.2
+http://opensuse.fastsoft.net/pub/linux/opensuse/update/11.2
+http://mirror.anl.gov/pub/opensuse/opensuse/update/11.2
+http://mirror.umoss.org/opensuse/update/11.2
+ftp://mirror.anl.gov/pub/opensuse/opensuse/update/11.2
+http://opensuse.cs.utah.edu/update/11.2
+http://mirrors.med.harvard.edu/opensuse/update/11.2
+ftp://ftp.osuosl.org/pub/opensuse/update/11.2
+http://mirrors.xmission.com/opensuse/update/11.2
+ftp://mirrors.xmission.com/opensuse/update/11.2
+ftp://opensuse.cs.utah.edu/pub/opensuse/update/11.2
+http://mirrors1.kernel.org/opensuse/update/11.2
+http://opensuse.ca.unixheads.org/update/11.2
+http://mirror.rackspace.com/openSUSE/update/11.2
+http://130.57.19.201/update/11.2
+http://mirrors2.kernel.org/opensuse/update/11.2
+ftp://mirrors1.kernel.org/opensuse/update/11.2
+ftp://130.57.19.201/pub/opensuse/update/11.2
+ftp://mirrors2.kernel.org/opensuse/update/11.2
+http://ftp.ussg.iu.edu/linux/opensuse/update/11.2
+ftp://mirror.rackspace.com/openSUSE/update/11.2
+http://ftp.utexas.edu/opensuse/update/11.2
+http://www.gtlib.gatech.edu/pub/opensuse/update/11.2
+ftp://mirror.colorado.edu/pub/opensuse/update/11.2
+ftp://ftp.utexas.edu/mirrors/opensuse/update/11.2
+ftp://www.gtlib.gatech.edu/pub/opensuse/update/11.2
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/update/11.2
+http://mirror.cps.cmich.edu/opensuse/opensuse/update/11.2
+ftp://ftp.ussg.iu.edu/linux/opensuse/update/11.2
+http://mirror.nyi.net/opensuse/update/11.2
+ftp://mirror.colorado.edu/pub/opensuse/update/11.2
+http://mirrors.rit.edu/opensuse/update/11.2
+ftp://mirror.nyi.net/opensuseupdate/11.2
+http://ftp.iinet.net.au/pub/opensuse/update/11.2
+http://mirror.internode.on.net/pub/opensuse/update/11.2
+http://mirror.pacific.net.au/linux/opensuse/update/11.2
+ftp://ftp.iinet.net.au/pub/opensuse/update/11.2
+ftp://mirror.internode.on.net/pub/opensuse/update/11.2
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/update/11.2
+http://opensuse.patan.com.ar/update/11.2
+http://opensuse.c3sl.ufpr.br/update/11.2
+http://200.221.9.37/pub/opensuse/update/11.2
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/update/11.2
+ftp://opensuse.c3sl.ufpr.br/opensuse/update/11.2
+http://opensuse.pop.com.br/update/11.2
diff --git a/lib/distro-info/suse-11.2/prereqfiles/etc/group b/lib/distro-info/suse-11.2/prereqfiles/etc/group
new file mode 100644
index 00000000..505cb221
--- /dev/null
+++ b/lib/distro-info/suse-11.2/prereqfiles/etc/group
@@ -0,0 +1,33 @@
+root:x:0:
+bin:x:1:daemon
+daemon:x:2:
+sys:x:3:
+tty:x:5:
+disk:x:6:
+lp:x:7:
+www:x:8:
+kmem:x:9:
+wheel:x:10:
+mail:x:12:
+news:x:13:
+uucp:x:14:
+shadow:x:15:
+dialout:x:16:
+audio:x:17:
+floppy:x:19:
+cdrom:x:20:
+console:x:21:
+utmp:x:22:
+public:x:32:
+video:x:33:
+games:x:40:
+xok:x:41:
+trusted:x:42:
+modem:x:43:
+ftp:x:49:
+man:x:62:
+users:x:100:
+nobody:x:65533:
+nogroup:x:65534:nobody
+messagebus:!:101:
+haldaemon:!:102:
diff --git a/lib/distro-info/suse-11.2/prereqfiles/etc/hosts b/lib/distro-info/suse-11.2/prereqfiles/etc/hosts
new file mode 100644
index 00000000..75721cd5
--- /dev/null
+++ b/lib/distro-info/suse-11.2/prereqfiles/etc/hosts
@@ -0,0 +1 @@
+127.0.0.1 localhost
diff --git a/lib/distro-info/suse-11.2/prereqfiles/etc/passwd b/lib/distro-info/suse-11.2/prereqfiles/etc/passwd
new file mode 100644
index 00000000..9b8fc4fe
--- /dev/null
+++ b/lib/distro-info/suse-11.2/prereqfiles/etc/passwd
@@ -0,0 +1,14 @@
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/bin:/bin/bash
+daemon:x:2:2:Daemon:/sbin:/bin/bash
+lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
+mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
+news:x:9:13:News system:/etc/news:/bin/bash
+uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
+games:x:12:100:Games account:/var/games:/bin/bash
+man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
+wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
+ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
+nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
+messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false
+haldaemon:x:101:102:User for haldaemon:/var/run/hal:/bin/false
diff --git a/lib/distro-info/suse-11.2/prereqfiles/etc/shadow b/lib/distro-info/suse-11.2/prereqfiles/etc/shadow
new file mode 100644
index 00000000..cd100a5a
--- /dev/null
+++ b/lib/distro-info/suse-11.2/prereqfiles/etc/shadow
@@ -0,0 +1,14 @@
+root::13481::::::
+bin:*:13481::::::
+daemon:*:13481::::::
+lp:*:13481::::::
+mail:*:13481::::::
+news:*:13481::::::
+uucp:*:13481::::::
+games:*:13481::::::
+man:*:13481::::::
+wwwrun:*:13481::::::
+ftp:*:13481::::::
+nobody:*:13481::::::
+messagebus:!:13481:0::7:::
+haldaemon:!:13481:0::7:::
diff --git a/lib/distro-info/suse-11.2/settings.default b/lib/distro-info/suse-11.2/settings.default
new file mode 100644
index 00000000..7e152670
--- /dev/null
+++ b/lib/distro-info/suse-11.2/settings.default
@@ -0,0 +1,1126 @@
+bootstrap-packages = <<END
+ i586/aaa_base-11.2-10007.5.i586.rpm
+ i586/audit-libs-1.7.7-5.1.i586.rpm
+ i586/bash-3.2-141.10.i586.rpm
+ i586/boost-license-1.36.0-9.5.i586.rpm
+ i586/bzip2-1.0.5-34.5.i586.rpm
+ i586/ConsoleKit-0.2.10-60.16.i586.rpm
+ i586/coreutils-6.12-32.10.i586.rpm
+ i586/coreutils-lang-6.12-32.10.i586.rpm
+ i586/cpio-2.9-75.35.i586.rpm
+ i586/cpio-lang-2.9-75.35.i586.rpm
+ i586/cracklib-2.8.12-55.1.i586.rpm
+ i586/cracklib-dict-small-2.8.12-55.1.i586.rpm
+ i586/cron-4.1-194.28.i586.rpm
+ i586/cyrus-sasl-2.1.22-182.1.i586.rpm
+ i586/dbus-1-1.2.4-5.1.i586.rpm
+ i586/dbus-1-glib-0.76-32.1.i586.rpm
+ i586/device-mapper-1.02.27-7.1.i586.rpm
+ i586/diffutils-2.8.7-143.9.i586.rpm
+ i586/dhcpcd-3.2.3-44.1.i586.rpm
+ i586/dirmngr-1.0.2-1.39.i586.rpm
+ i586/e2fsprogs-1.41.1-11.9.i586.rpm
+ i586/elfutils-0.137-3.11.i586.rpm
+ i586/file-4.24-43.1.i586.rpm
+ i586/filesystem-11.2-2.3.i586.rpm
+ i586/fillup-1.42-242.8.i586.rpm
+ i586/findutils-4.4.0-38.27.i586.rpm
+ i586/gawk-3.1.6-1.44.i586.rpm
+ i586/gdbm-1.8.3-371.8.i586.rpm
+ i586/glib2-2.18.2-5.1.i586.rpm
+ i586/glib2-lang-2.18.2-5.1.i586.rpm
+ i586/glib2-branding-upstream-2.18.2-5.1.i586.rpm
+ i586/glibc-2.9-2.8.i586.rpm
+ i586/gpg2-2.0.9-25.105.i586.rpm
+ i586/gpg2-lang-2.0.9-25.105.i586.rpm
+ i586/grep-2.5.2-90.28.i586.rpm
+ i586/gzip-1.3.12-68.36.i586.rpm
+ i586/hal-0.5.12-10.1.i586.rpm
+ i586/info-4.12-1.85.i586.rpm
+ i586/insserv-1.12.0-22.15.i586.rpm
+ i586/irqbalance-0.55-120.8.i586.rpm
+ i586/kernel-default-2.6.27.7-9.1.i586.rpm
+ i586/kernel-default-base-2.6.27.7-9.1.i586.rpm
+ i586/keyutils-1.2-107.4.i586.rpm
+ i586/keyutils-libs-1.2-107.4.i586.rpm
+ i586/krb5-1.6.3-132.1.i586.rpm
+ i586/libacl-2.2.47-27.5.i586.rpm
+ i586/libasm1-0.137-3.11.i586.rpm
+ i586/libasound2-1.0.18-8.7.i586.rpm
+ i586/libattr-2.4.39-67.5.i586.rpm
+ i586/libbz2-1-1.0.5-34.5.i586.rpm
+ i586/libblkid1-1.41.1-11.9.i586.rpm
+ i586/libblocxx6-2.1.0.342-120.1.i586.rpm
+ i586/libboost_signals1_36_0-1.36.0-9.5.i586.rpm
+ i586/libcom_err2-1.41.1-11.9.i586.rpm
+ i586/libcurl4-7.19.0-11.2.i586.rpm
+ i586/libdb-4_5-4.5.20-94.17.i586.rpm
+ i586/libdw1-0.137-3.11.i586.rpm
+ i586/libelf1-0.137-3.11.i586.rpm
+ i586/libext2fs2-1.41.1-11.9.i586.rpm
+ i586/libexpat1-2.0.1-88.10.i586.rpm
+ i586/libgcc43-4.3.3_20081022-9.5.i586.rpm
+ i586/libgcrypt11.2.4.1-4.1.i586.rpm
+ i586/libglib-2_0-0-2.18.2-5.1.i586.rpm
+ i586/libgobject-2_0-0-2.18.2-5.1.i586.rpm
+ i586/libgpg-error0-1.6-6.10.i586.rpm
+ i586/libgthread-2_0-0-2.18.2-5.1.i586.rpm
+ i586/libidn-1.10-2.14.i586.rpm
+ i586/libksba-1.0.4-1.17.i586.rpm
+ i586/libldap-2_4-2-2.4.12-5.3.i586.rpm
+ i586/libncurses5-5.6-89.10.i586.rpm
+ i586/libncurses6-5.6-89.10.i586.rpm
+ i586/libnscd-2.0.2-72.47.i586.rpm
+ i586/libopenssl0_9_8-0.9.8h-28.4.i586.rpm
+ i586/libpt2-2.4.2-2.19.i586.rpm
+ i586/libreadline5-5.2-141.10.i586.rpm
+ i586/libreiserfs-0.3.0.5-107.47.i586.rpm
+ i586/libselinux1-2.0.71-3.38.i586.rpm
+ i586/libsepol1-2.0.32-5.38.i586.rpm
+ i586/libsmbios2-2.0.2-10.9.i586.rpm
+ i586/libstdc++43-4.3.3_20081022-9.5.i586.rpm
+ i586/libusb-0_1-4-0.1.12-136.10.i586.rpm
+ i586/libusb-1_0-0-0.9.3-4.20.i586.rpm
+ i586/libuuid1-1.41.1-11.9.i586.rpm
+ i586/libvolume_id-126-17.25.i586.rpm
+ i586/libvolume_id1-128-9.3.i586.rpm
+ i586/libxcrypt-3.0.1-25.20.i586.rpm
+ i586/libxml2-2.7.1-9.1.i586.rpm
+ i586/libzio-0.9-4.19.i586.rpm
+ i586/limal-1.5.1-1.12.i586.rpm
+ i586/limal-perl-1.5.1-1.12.i586.rpm
+ i586/login-3.37-1.5.i586.rpm
+ i586/logrotate-3.7.7-9.11.i586.rpm
+ i586/m4-1.4.12-1.13.i586.rpm
+ i586/metamail-2.7.19-1244.29.i586.rpm
+ i586/mingetty-1.0.7s-70.41.i586.rpm
+ i586/mkinitrd-2.4-34.1.i586.rpm
+ i586/module-init-tools-3.4-56.5.i586.rpm
+ i586/ncurses-utils-5.6-89.10.i586.rpm
+ i586/net-tools-1.60-725.5.i586.rpm
+ i586/openldap2-client-2.4.12-5.3.i586.rpm
+ i586/openslp-1.2.0-168.6.i586.rpm
+ i586/openssl-0.9.8h-28.4.i586.rpm
+ i586/openSUSE-release-11.2-1.19.i586.rpm
+ i586/openSUSE-release-ftp-11.2-1.19.i586.rpm
+ i586/pam-1.0.2-13.3.i586.rpm
+ i586/pam-config-0.68-1.3.i586.rpm
+ i586/pam-modules-11.2-5.1.i586.rpm
+ i586/parted-1.8.8-91.5.i586.rpm
+ i586/pciutils-3.0.1-1.26.i586.rpm
+ i586/pcre-7.8-1.26.i586.rpm
+ i586/perl-5.10.0-62.10.i586.rpm
+ i586/perl-base-5.10.0-62.10.i586.rpm
+ i586/perl-Bootloader-0.4.81-1.1.i586.rpm
+ i586/perl-gettext-1.05-91.163.i586.rpm
+ i586/permissions-2008.11.25-1.5.i586.rpm
+ i586/pinentry-0.7.5-61.14.i586.rpm
+ i586/pm-utils-0.99.4.20071229-10.3.i586.rpm
+ i586/pmtools-20071116-44.3.i586.rpm
+ i586/PolicyKit-0.9-13.9.i586.rpm
+ i586/popt-1.7-20.1.i586.rpm
+ i586/postfix-2.5.5-6.7.i586.rpm
+ i586/procmail-3.22-238.15.i586.rpm
+ i586/procps-3.2.7-147.11.i586.rpm
+ i586/psmisc-22.6-61.14.i586.rpm
+ i586/pth-2.0.7-102.29.i586.rpm
+ i586/pwdutils-3.2.2-2.8.i586.rpm
+ i586/reiserfs-3.6.19-116.62.i586.rpm
+ i586/rmail-8.14.3-50.9.i586.rpm
+ i586/rpm-4.4.2.3-20.1.i586.rpm
+ i586/satsolver-tools-0.13.0-3.3.i586.rpm
+ i586/SDL-1.2.13-104.1.i586.rpm
+ i586/sed-4.1.5-85.60.i586.rpm
+ i586/setserial-2.17-716.20.i586.rpm
+ i586/sharutils-4.6.3-3.100.i586.rpm
+ i586/sysvinit-2.86-186.7.i586.rpm
+ i586/tcpd-7.6-855.11.i586.rpm
+ i586/tcsh-6.15.00-93.3.i586.rpm
+ i586/terminfo-base-5.6-89.10.i586.rpm
+ i586/udev-128-9.3.i586.rpm
+ i586/util-linux-2.14.1-10.1.i586.rpm
+ i586/util-linux-lang-2.14.1-10.1.i586.rpm
+ i586/uucp-1.07-50.7.i586.rpm
+ i586/uuid-runtime-1.41.1-11.9.i586.rpm
+ i586/zlib-1.2.3-104.137.i586.rpm
+ noarch/netcfg-11.2-1.14.noarch.rpm
+ noarch/pciutils-ids-2008.11.26-2.4.noarch.rpm
+ noarch/suse-build-key-1.0-907.32.noarch.rpm
+END
+<metapackager zypper>
+ packages = <<END
+ i586/libzypp-5.24.5-1.1.i586.rpm
+ i586/zypper-1.0.2-1.5.i586.rpm
+ END
+</metapackager>
+<metapackager smart>
+ packages = <<END
+ i586/python-2.6.0-2.16.i586.rpm
+ i586/python-xml-2.6.0-2.12.i586.rpm
+ i586/rpm-python-4.4.2.3-20.1.i586.rpm
+ END
+</metapackager>
+<metapackager yum>
+ packages = <<END
+ i586/glib2-2.18.2-4.3.i586.rpm
+ i586/libxml2-2.7.1-8.3.i586.rpm
+ i586/libxml2-python-2.7.1-9.1.i586.rpm
+ i586/python-2.6.0-2.16.i586.rpm
+ i586/python-urlgrabber-3.1.0-178.8.i586.rpm
+ i586/python-xml-2.6.0-2.12.i586.rpm
+ i586/rpm-python-4.4.2.3-20.1.i586.rpm
+ i586/sqlite3-3.6.4-1.8.i586.rpm
+ i586/yum-metadata-parser-1.1.2-107.22.i586.rpm
+ END
+</metapackager>
+package-subdir = suse
+prereq-packages = <<END
+ i586/bzip2-1.0.5-34.5.i586.rpm
+ i586/glibc-2.9-2.8.i586.rpm
+ i586/libselinux1-2.0.71-3.38.i586.rpm
+ i586/libbz2-1-1.0.5-34.5.i586.rpm
+ i586/popt-1.7-20.1.i586.rpm
+ i586/rpm-4.4.2.3-20.1.i586.rpm
+ i586/zlib-1.2.3-104.137.i586.rpm
+END
+<repository base>
+ name = openSUSE 11.2
+ repo-subdir = suse
+ file-for-speedtest = suse/setup/descr/packages.en.gz
+</repository>
+<repository base_non-oss>
+ name = openSUSE 11.2 non-OSS
+ file-for-speedtest = suse/setup/descr/packages.en.gz
+</repository>
+<repository base_update>
+ name = openSUSE 11.2 updates
+ file-for-speedtest = repodata/primary.xml.gz
+</repository>
+<selection minimal>
+ packages = <<END
+ glibc-locale
+ END
+</selection>
+<selection textmode>
+ base = minimal
+ packages = <<END
+ acl
+ acpid
+ apparmor-docs
+ apparmor-parser
+ apparmor-profiles
+ apparmor-utils
+ ash
+ at
+ atk
+ attr
+ audit
+ autofs bc
+ bind-libs
+ bind-utils
+ binutils
+ blktrace
+ bundle-lang-common-en
+ cdrkit-cdrtools-compat
+ compat compat-openssl097g
+ cpufrequtils
+ cyrus-sasl-saslauthd
+ db-utils
+ deltarpm
+ dmraid
+ dos2unix
+ dosfstools
+ ed
+ eject
+ ethtool
+ fbset
+ fontconfig
+ freetype2
+ gdb
+ genisoimage
+ glibc-i18ndata
+ gnutls
+ gpm
+ groff
+ hfsutils
+ icedax
+ ifplugd
+ initviocons
+ inst-source-utils
+ iproute2
+ iputils
+ joe
+ kbd
+ klogd
+ kpartx
+ ksh
+ ksymoops
+ lcms
+ less
+ libaio
+ libapparmor1
+ libart_lgpl
+ libatk-1_0-0
+ libcap1
+ libcap2
+ libdrm
+ libevent-1_4-2
+ libgimpprint
+ libgmodule-2_0-0
+ libgnutls26
+ libgssglue1
+ libicu
+ libjpeg
+ liblazy1
+ liblcms1
+ libltdl3
+ libltdl7
+ liblzo2-2
+ libmng
+ libnet
+ libopencdk10
+ libopenct1
+ libopensc2
+ libpcap0
+ libpng12-0
+ libpython2_6-1_0
+ librpcsecgss
+ libsensors3
+ libsensors4
+ libsnmp15
+ libsqlite3-0
+ libtiff3
+ libtirpc1
+ licenses
+ lukemftp
+ lvm2
+ mailx
+ man
+ man-pages
+ microcode_ctl
+ multipath-tools
+ nbd
+ net-snmp
+ nfs-client
+ nfs-kernel-server
+ nfsidmap
+ nscd
+ ntfsprogs
+ ntp
+ openct
+ opensc
+ openssh
+ patch
+ pax
+ pcsc-lite
+ perl-Crypt-SmbHash
+ perl-DBD-SQLite
+ perl-DBI
+ perl-Digest-MD4
+ perl-File-Tail
+ perl-HTML-Parser
+ perl-HTML-Tagset
+ perl-Net-Daemon
+ perl-PlRPC
+ perl-RPC-XML
+ perl-SNMP
+ perl-TermReadKey
+ perl-TimeDate
+ perl-URI
+ perl-XML-Parser
+ perl-XML-Writer
+ perl-libapparmor
+ perl-libwww-perl
+ ppp
+ preload
+ procinfo
+ providers
+ qlogic-firmware
+ recode
+ rpcbind
+ rsync
+ sash
+ screen
+ sensors
+ sg3_utils
+ smartmontools
+ smpppd
+ snmp-mibs
+ sqlite3
+ strace
+ sudo
+ sysconfig
+ sysfsutils
+ syslog-ng
+ tcpdump
+ telnet
+ terminfo
+ timezone
+ ulimit
+ usbutils
+ utempter
+ vim
+ vim-base
+ vim-data
+ wdiff
+ wget
+ wireless-tools
+ wodim
+ wvstreams
+ xfsprogs
+ xinetd
+ yp-tools
+ ypbind
+ zip
+ zisofs-tools
+ zsh
+ END
+</selection>
+<selection kde>
+ base = textmode
+ packages = <<END
+ 3ddiag
+ a2ps
+ aalib
+ alsa
+ alsa-utils
+ amarok
+ amarok-libvisual
+ amarok-xine
+ arts
+ aspell
+ aspell-de
+ aspell-en
+ audiofile
+ autoyast2
+ autoyast2-installation
+ bluez
+ bootsplash
+ bootsplash-branding-openSUSE
+ branding-openSUSE
+ bundle-lang-gnome-en
+ bundle-lang-kde-en
+ cabextract
+ cairo
+ cdparanoia
+ cdrdao
+ check
+ checkmedia
+ chmlib
+ chromium
+ clucene-core
+ compiz
+ compiz-branding-openSUSE
+ compiz-kde4
+ cpp
+ cpp41
+ cpp43
+ cryptsetup
+ Crystalcursors
+ cups
+ cups-client
+ cups-drivers
+ cups-libs
+ curl
+ cyrus-sasl-crammd5
+ cyrus-sasl-digestmd5
+ cyrus-sasl-plain
+ dbus-1-mono
+ dbus-1-python
+ dbus-1-qt3
+ dbus-1-x11
+ dcraw
+ dejavu
+ desktop-data-openSUSE
+ desktop-data-openSUSE-extra-gnome
+ desktop-file-utils
+ dhcp
+ dhcp-client
+ dialog
+ digikam
+ digikamimageplugins
+ DirectFB
+ dnsmasq
+ dvd+rw-tools
+ eel
+ efont-unicode
+ enchant
+ enscript
+ evolution-data-server
+ exiftool
+ expat
+ fam
+ fftw3
+ fileshareset
+ FirmwareUpdateKit
+ flac
+ fonts-config
+ foomatic-filters
+ freealut
+ freeglut
+ freetype
+ fribidi
+ frozen-bubble
+ frozen-bubble-server
+ ft2demos
+ fvwm2
+ gcc-gij
+ gcc41-gij
+ gcc43-gij
+ gconf2
+ gconf2-branding-openSUSE
+ gettext-runtime
+ gfxboot
+ gfxboot-branding-openSUSE
+ ggz
+ ggz-client-libs
+ ghostscript-fonts-other
+ ghostscript-fonts-std
+ ghostscript-library
+ ghostscript-omni
+ ghostscript-x11
+ giflib
+ gimp
+ gimp-branding-openSUSE
+ gimp-help
+ gimp-plugins-python
+ gle
+ glib
+ glib-sharp2
+ glibc-locale
+ glitz
+ gltt
+ gmime
+ gmp
+ gnokii
+ gpart
+ gpgme
+ GraphicsMagick
+ grub
+ gsf-sharp
+ gstreamer-0_10
+ gstreamer-0_10-plugins-base
+ gtk
+ gtk-sharp2
+ gtk2
+ gtk2-branding-openSUSE
+ gtk2-engines
+ gtk2-theme-openSUSE
+ gtksourceview
+ gutenprint
+ gvfs
+ gwenview
+ gwenview-lang
+ hal-palm
+ hdparm
+ hicolor-icon-theme
+ hplip
+ hplip-hpijs
+ htdig
+ hunspell
+ hwinfo
+ icewm
+ icewm-default
+ id3lib
+ ifnteuro
+ IlmBase
+ ImageMagick
+ imlib
+ imlib2
+ imlib2-loaders
+ info2html
+ intlfnts
+ iptables
+ ispell
+ ispell-american
+ ispell-german
+ ispell-ngerman
+ jack
+ jfsutils
+ jpackage-utils
+ jpeg
+ k3b
+ kaffeine
+ kde-susetranslations
+ kde3-i18n-de
+ kde4-ark
+ kde4-filesystem
+ kde4-kdm
+ kde4-kdm-branding-openSUSE
+ kde4-kget
+ kde4-kgreeter-plugins
+ kde4-kmix
+ kde4-knewsticker
+ kde4-konqueror
+ kde4-konqueror-plugins
+ kde4-kopete
+ kde4-kpat
+ kde4-krdc
+ kde4-kscd
+ kde4-ksudoku
+ kde4-kwin
+ kde4-okular
+ kde4-plasma-addons
+ kdeaddons3-kicker
+ kdeartwork3-kscreensaver
+ kdeartwork3-xscreensaver
+ kdebase3
+ kdebase3-nsplugin
+ kdebase3-runtime
+ kdebase3-samba
+ kdebase3-session
+ kdebase3-SuSE
+ kdebase3-SuSE-branding-openSUSE
+ kdebase3-SuSE-lang
+ kdebase4-openSUSE
+ kdebase4-runtime
+ kdebase4-workspace
+ kdebase4-workspace-branding-openSUSE
+ kdebase4-workspace-ksysguardd
+ kdebluetooth
+ kdebluetooth-lang
+ kdegames4-carddecks-default
+ kdegraphics3
+ kdegraphics3-kamera
+ kdegraphics3-scan
+ kdelibs3
+ kdelibs3-default-style
+ kdelibs3-doc
+ kdelibs4
+ kdelibs4-core
+ kdemultimedia3
+ kdepim3
+ kdepim3-kpilot
+ kdepim3-notes
+ kdepimlibs4
+ kdetv
+ kdetv-lang
+ kio_ipodslave
+ kio_iso
+ kio_slp
+ kio_sysinfo
+ kipi-plugins
+ kitchensync
+ knights
+ koffice
+ koffice-i18n-de
+ koffice-i18n-de-doc
+ koffice-illustration
+ konversation
+ kpowersave
+ kpowersave-lang
+ krecord
+ krename
+ krusader
+ ktorrent
+ kwin-decor-suse2
+ lbreakout
+ libakode
+ libakonadi4
+ libakonadiprotocolinternals1
+ libao
+ libarchive2
+ libavahi-client3
+ libavahi-common3
+ libavahi-glib1
+ libbabl-0_0-0
+ libbeagle1
+ libbluetooth3
+ libbonobo
+ libbonoboui
+ libcanberra-gtk
+ libcanberra-gtk0
+ libcanberra0
+ libcroco
+ libcroco-0_6-3
+ libcryptsetup0
+ libdbus-1-qt3-0
+ libdjvulibre21
+ libdns_sd
+ libdvdread4
+ libeel-2-2
+ libenchant1
+ libesd0
+ libevoldap-2_4-2
+ libexempi3
+ libexif
+ libexiv2-4
+ libFLAC++6
+ libFLAC8
+ libflashsupport
+ libfuse2
+ libgcj41
+ libgcj43
+ libgegl-0_0-0
+ libggz2
+ libgio-2_0-0
+ libgio-fam
+ libglade2
+ libgmime-2_0-3
+ libgnome
+ libgnome-desktop-2-7
+ libgnome-menu2
+ libgnomecanvas
+ libgnomecups
+ libgnomekbd
+ libgnomeprint
+ libgnomeprintui
+ libgnomesu
+ libgnomesu0
+ libgnomeui
+ libgomp43
+ libgpgme11
+ libgphoto2
+ libgpod-tools
+ libgpod3
+ libGraphicsMagick2
+ libgsf
+ libgsf-1-114
+ libgsf-gnome
+ libgssglue-devel
+ libgstinterfaces-0_10-0
+ libgstreamer-0_10-0
+ libgtkhtml
+ libgtkimageview0
+ libgtksourceview-2_0-0
+ libgtop
+ libgtop-2_0-7
+ libgvfscommon0
+ libgweather
+ libgweather1
+ libical0
+ libidl
+ libieee1284
+ libjack0
+ libjasper
+ libkcal
+ libkcal2
+ libkcddb4
+ libkcompactdisc4
+ libkdcraw3
+ libkde4
+ libkdecore4
+ libkdegames4
+ libkdepimlibs4
+ libkexiv2-3
+ libkipi0
+ libkmime2
+ libkonq5
+ libktnef1
+ libldapcpp1
+ liblpsolve55
+ liblua5_1
+ libMagick++1
+ libMagickCore1
+ libMagickWand1
+ libmal
+ libmikmod
+ libmpcdec5
+ libmpfr1
+ libmtp8
+ libmusicbrainz4
+ libneon27
+ libnetpbm10
+ libnjb
+ libnjb5
+ libnl
+ libnsssharedhelper0
+ libofa0
+ libogg0
+ liboil
+ libopensync
+ libopensync-plugin-file
+ libopensync-plugin-gnokii
+ libopensync-plugin-gpe
+ libopensync-plugin-irmc
+ libopensync-plugin-kdepim
+ libopensync-plugin-opie
+ libopensync-plugin-palm
+ libopensync-plugin-sunbird
+ libopensync-plugin-syncml
+ libopensync-tools
+ libotr2
+ libphonon4
+ libpisock9
+ libpoppler-glib4
+ libpoppler-qt2
+ libpoppler-qt4-3
+ libpoppler4
+ libpulse0
+ libpulsecore4
+ libqca2
+ libqimageblitz4
+ libqscintilla2-4
+ libqt4
+ libqt4-qt3support
+ libqt4-sql
+ libqt4-sql-unixODBC
+ libqt4-x11
+ libqtpod0
+ libQtWebKit4
+ libraptor1
+ librasqal1
+ libredland0
+ librsvg
+ libsamplerate
+ libsmbclient0
+ libsndfile
+ libsoprano4
+ libsoup
+ libsoup-2_4-1
+ libspectre1
+ libspeex
+ libstrigi0
+ libstroke
+ libsyncml0
+ libtalloc1
+ libtasn1
+ libtasn1-3
+ libtdb1
+ libtheora0
+ libtunepimp
+ libtunepimp5
+ libvisual
+ libvisual-plugins
+ libVNCServer
+ libvorbis
+ libwbclient0
+ libwbxml2-0
+ libwebkit-1_0-1
+ libwmf
+ libwnck
+ libwnck-1-22
+ libwpd-0_8-8
+ libwpg-0_1-1
+ libwps-0_1-1
+ libx86
+ libxine1
+ libxine1-gnome-vfs
+ libxine1-pulse
+ libxklavier
+ libxklavier12
+ libxml2-python
+ libxslt
+ libzip1
+ libzvbi0
+ limal-ca-mgm
+ limal-ca-mgm-perl
+ limal-nfs-server
+ limal-nfs-server-perl
+ lsb
+ lsof
+ make
+ manufacturer-PPDs
+ master-boot-code
+ mdadm
+ mesa
+ metacity
+ misc-console-font
+ modemManager
+ mono-core
+ mono-data
+ mono-data-sqlite
+ mono-web
+ mono-winforms
+ mozilla-nspr
+ mozilla-nss
+ mozilla-xulrunner181
+ mozilla-xulrunner190
+ mozilla-xulrunner190-gnomevfs
+ mozilla-xulrunner190-translations
+ mozillaFirefox
+ mozillaFirefox-branding-openSUSE
+ mozillaFirefox-translations
+ mtools
+ myspell-american
+ myspell-german
+ nautilus
+ neon
+ netcat
+ netpbm
+ networkManager
+ networkManager-glib
+ networkManager-kde
+ numlockx
+ obexftp
+ ocrad
+ openal
+ OpenEXR
+ openobex
+ OpenOffice_org
+ OpenOffice_org-base
+ OpenOffice_org-branding-openSUSE
+ OpenOffice_org-calc
+ OpenOffice_org-components
+ OpenOffice_org-draw
+ OpenOffice_org-filters
+ OpenOffice_org-filters-optional
+ OpenOffice_org-help-de
+ OpenOffice_org-help-en-US
+ OpenOffice_org-icon-themes
+ OpenOffice_org-impress
+ OpenOffice_org-kde
+ OpenOffice_org-l10n-de
+ OpenOffice_org-l10n-extras
+ OpenOffice_org-libs-core
+ OpenOffice_org-libs-extern
+ OpenOffice_org-libs-gui
+ OpenOffice_org-mailmerge
+ OpenOffice_org-math
+ OpenOffice_org-pyuno
+ OpenOffice_org-Quickstarter
+ OpenOffice_org-templates-en
+ OpenOffice_org-templates-labels-a4
+ OpenOffice_org-templates-labels-letter
+ OpenOffice_org-templates-presentation-layouts
+ OpenOffice_org-thesaurus-en
+ OpenOffice_org-ure
+ OpenOffice_org-writer
+ openssh-askpass
+ opensuse-codecs-installer
+ opensuse-manual_de
+ opensuse-manual_en
+ opensuse-manual_en-pdf
+ opt_gnome-compat
+ orbit2
+ oxygen-icon-theme
+ pango
+ perl-Config-Crontab
+ perl-Crypt-SSLeay
+ perl-Digest-HMAC
+ perl-Digest-SHA1
+ perl-IO-Socket-SSL
+ perl-Net-DNS
+ perl-Net-IP
+ perl-Net-SSLeay
+ perl-NetxAP
+ perl-Parse-RecDescent
+ perl-spamassassin
+ perl-X500-DN
+ perl-XML-LibXML
+ perl-XML-LibXML-Common
+ perl-XML-NamespaceSupport
+ perl-XML-SAX
+ perl-XML-Simple
+ phalanx
+ phonon
+ phonon-backend-gstreamer-0_10
+ pilot-link
+ pinentry-qt
+ pkg-config
+ plasma-theme-aya
+ pm-profiler
+ PolicyKit-gnome-libs
+ powerdevil
+ pptp
+ pulseaudio
+ pulseaudio-esound-compat
+ python
+ python-base
+ python-cairo
+ python-gobject2
+ python-gtk
+ python-numeric
+ python-qt
+ python-qt4
+ python-ReportLab
+ python-sip
+ python-xml
+ pyxml
+ qca
+ qt3
+ qtcurve-gtk2
+ rdesktop
+ release-notes-openSUSE
+ rrdtool
+ ruby
+ sane-backends
+ sane-backends-autoconfig
+ sane-frontends
+ sax2
+ sax2-gui
+ sax2-ident
+ sax2-libsax
+ sax2-libsax-perl
+ sax2-tools
+ scpm
+ SDL_image
+ SDL_mixer
+ SDL_net
+ SDL_Pango
+ SDL_perl
+ SDL_ttf
+ sgml-skel
+ shared-mime-info
+ soprano
+ sound-theme-freedesktop
+ spamassassin
+ speex
+ splashy
+ splashy-branding-openSUSE
+ sqlite2
+ startup-notification
+ strigi
+ SuSEfirewall2
+ susehelp
+ susehelp_de
+ susehelp_en
+ suseRegister
+ syslinux
+ taglib
+ tango-icon-theme
+ tar
+ tcl
+ tightvnc
+ tk
+ ufraw
+ ufraw-gimp
+ unclutter
+ unixODBC
+ unzip
+ usb_modeswitch
+ v4l-conf
+ w3m
+ wbxml2
+ words
+ wpa_supplicant
+ wv
+ wvdial
+ x11-input-synaptics
+ x11-input-wacom
+ x11-tools
+ xalan-j2
+ xaw3d
+ xdg-menu
+ xdg-utils
+ xdmbgrd
+ xerces-j2
+ xerces-j2-xml-apis
+ xkeyboard-config
+ xli
+ xlockmore
+ xorg-x11
+ xorg-x11-driver-input
+ xorg-x11-driver-video
+ xorg-x11-driver-video-radeonhd
+ xorg-x11-driver-video-unichrome
+ xorg-x11-fonts
+ xorg-x11-fonts-core
+ xorg-x11-libfontenc
+ xorg-x11-libICE
+ xorg-x11-libs
+ xorg-x11-libSM
+ xorg-x11-libX11
+ xorg-x11-libX11-ccache
+ xorg-x11-libXau
+ xorg-x11-libxcb
+ xorg-x11-libXdmcp
+ xorg-x11-libXext
+ xorg-x11-libXfixes
+ xorg-x11-libxkbfile
+ xorg-x11-libXmu
+ xorg-x11-libXp
+ xorg-x11-libXpm
+ xorg-x11-libXprintUtil
+ xorg-x11-libXrender
+ xorg-x11-libXt
+ xorg-x11-libXv
+ xorg-x11-server
+ xorg-x11-xauth
+ xorg-x11-Xvnc
+ xpdf-tools
+ xscreensaver
+ xterm
+ xtermset
+ yakuake
+ yast2
+ yast2-apparmor
+ yast2-backup
+ yast2-bootloader
+ yast2-branding-openSUSE
+ yast2-control-center
+ yast2-control-center-gnome
+ yast2-control-center-qt
+ yast2-core
+ yast2-country
+ yast2-country-data
+ yast2-firewall
+ yast2-gtk
+ yast2-hardware-detection
+ yast2-inetd
+ yast2-installation
+ yast2-irda
+ yast2-iscsi-client
+ yast2-kerberos-client
+ yast2-ldap
+ yast2-ldap-client
+ yast2-libyui
+ yast2-mail
+ yast2-mouse
+ yast2-ncurses
+ yast2-network
+ yast2-nfs-client
+ yast2-nfs-common
+ yast2-nis-client
+ yast2-ntp-client
+ yast2-online-update
+ yast2-online-update-frontend
+ yast2-packager
+ yast2-pam
+ yast2-perl-bindings
+ yast2-pkg-bindings
+ yast2-power-management
+ yast2-printer
+ yast2-profile-manager
+ yast2-qt
+ yast2-registration
+ yast2-registration-branding-openSUSE
+ yast2-repair
+ yast2-restore
+ yast2-runlevel
+ yast2-samba-client
+ yast2-samba-server
+ yast2-scanner
+ yast2-schema
+ yast2-security
+ yast2-slp
+ yast2-sound
+ yast2-storage
+ yast2-storage-lib
+ yast2-sudo
+ yast2-support
+ yast2-sysconfig
+ yast2-theme-openSUSE
+ yast2-trans-de
+ yast2-trans-stats
+ yast2-transfer
+ yast2-tune
+ yast2-tv
+ yast2-update
+ yast2-users
+ yast2-x11
+ yast2-xml
+ yast2-ycp-ui-bindings
+ zvbi
+ END
+</selection>
+<selection kde-additional>
+ base = kde
+ packages = <<END
+ cm_gtk
+ flash-player
+ java-1_5_0-gcj-compat
+ java-1_5_0-sun
+ java-1_5_0-sun-plugin
+ suspend
+ END
+</selection>
+<selection gnome>
+ base = textmode
+ packages = <<END
+ END
+</selection>
+<selection default>
+ base = minimal
+</selection>
+
diff --git a/lib/distro-info/suse-11.2/settings.example b/lib/distro-info/suse-11.2/settings.example
new file mode 100644
index 00000000..a8db67df
--- /dev/null
+++ b/lib/distro-info/suse-11.2/settings.example
@@ -0,0 +1,23 @@
+# rename this file to 'settings' and edit it as you please
+#
+# for a list of all options, have a look at the corresponding
+# settings.default in /opt/openslx/share/distro-info
+
+# use local installation source
+#<repository base>
+# local-url = /srv/ftp/pub/opensuse/distribution/11.2/repo/oss
+#</repository>
+#<repository base_non-oss>
+# local-url = /srv/ftp/pub/opensuse/distribution/11.2/repo/non-oss
+#</repository>
+#<repository base_update>
+# local-url = /srv/ftp/pub/suse/update/11.2
+#</repository>
+
+# add a new selection:
+#<selection my_kde>
+# base = kde
+# packages = <<END
+# kinternet
+# END
+#</selection>
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc
new file mode 100644
index 00000000..ddcc28cd
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQGiBEHtkpsRBACRHiXh3olS++6/Mp9N7ByGMmjaaE+Y8cJQLUPG1myrbW5aogIP
+0WenayhGbbgOHNWgd5dQ8KQpYYFoQuUHjFYzj5MvgrdOENOvD7ZNJ6+EmbkNh5cV
+zUYfNG9jdiGweZkyA1sh8DYS0JiUmQ4CzaBD/DotB/dCmDcyuNQFiw4qKwCglQah
+ATyueBRsOiXl0NIs1uB6dkkD/1A2YmQ6te1q38a1J+a8os6bDlMZhVnkZdhJdw6x
+eBwUb9XS0n7hyt/AKCcBnrDEUQJuhBMNgzctJvbuMv27yRMANAXZDQkp0ip/yHLJ
+PhUdSNTTRHOL9bV3t+JuZ9xmuclprwyrrJYUkEESXNc0tkuczHBP2c/RqA3OxYHt
+hrHLA/9Pqe2gEleeo8l26u/uFXs2dtwjh8EZmdhHoqGcOlpYR4DyAg2D+jYfh3RI
+oPzIwRlHVUR1ii5h8iPi98BVuEvukwfbbQ1K22Jwzxt6w3ihCXBKWKbeC3ElIMfA
+hVMchLFUbTAw+yodO/u3NHxKQ34+ginid9dVyxV5T0gpDEEHObQrT3BlbiBFbnRl
+cnByaXNlIFNlcnZlciA8c3VwcG9ydEBub3ZlbGwuY29tPoheBBMRAgAeBQJB7ZKb
+AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEHPSXWMN+zGID4oAoJPTGZbZApW+
+tuU422mHYGwoqgjrAJ9fhzRhRbV3YsOxKUomNeuIfmWGXA==
+=Qv5+
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc
new file mode 100644
index 00000000..8cc6c669
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc
@@ -0,0 +1,13 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mIsERCAdXQEEAL7MrBTz+3SBWpCm2ae2yaDqV3ezQcs2JlvqidJVhsZqQe9/jkxi
+KTEQW5+TXF/+BlQSiebunRI7oo3+9U8GyRCgs1sf+yRQWMLzZqRaarzRhw9w+Ihl
+edtqYl6/U2JZCb8Adp6d7RzlRliJdJ/VtsfXj2ef7Dwu7elOVSsmaBdtAAYptChT
+dVNFIFBhY2thZ2UgU2lnbmluZyBLZXkgPGJ1aWxkQHN1c2UuZGU+iLgEEwECACIC
+GwMECwcDAgMVAgMDFgIBAh4BAheABQJIHzCqBQkHwXpNAAoJEOOlw2Awfj1UvWgE
+AIRoxE8S6jQB7S43SVcX06FHJeUJ/m+1ErIj9LwJTYrR/8qsDjTgrttgb+nBHkIj
+NhCCLAuR8sWj3CxsUMH2fayryNnwZEWGqnzo7Jtt4R1Ur3h5pHYonFjfoJyFUZjJ
+7Mhw7/TuOWx20FrzqBi8tbHx8pd7Fa5lCUgopVtMh6GR
+=R56j
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc
new file mode 100644
index 00000000..31f2005c
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQENAzbhLQQAAAEIAKAkXHe0lWRBXLpn38hMHy03F0I4Sszmoc8aaKJrhfhyMlOA
+BqvklPLE2f9UrI4Xc860gH79ZREwAgPt0pi6+SleNFLNcNFAuuHMLQOOsaMFatbz
+JR9i4m/lf6q929YROu5zB48rBAlcfTm+IBbijaEdnqpwGib45wE/Cfy6FAttBHQh
+1Kp+r/jPbf1mYAvljUfHKuvbg8t2EIQz/5yGp+n5trn9pElfQO2cRBq8LFpf1l+U
+P7EKjFmlOq+Gs/fF98/dP3DfniSd78LQPq5vp8RL8nr/o2i7jkAQ33m4f1wOBWd+
+cZovrKXYlXiR+Bf7m2hpZo+/sAzhd7LmAD0l09kABRG0JVN1U0UgU2VjdXJpdHkg
+VGVhbSA8c2VjdXJpdHlAc3VzZS5kZT6JARUDBRA24S1H5Fiyh7HKPEUBAVcOB/9b
+yHYji1/+4Xc2GhvXK0FSJN0MGgeXgW47yxDL7gmR4mNgjlIOUHZj0PEpVjWepOJ7
+tQS3L9oP6cpj1Fj/XxuLbkp5VCQ61hpt54coQAvYrnT9rtWEGN+xmwejT1WmYmDJ
+xG+EGBXKr+XP69oIUl1E2JO3rXeklulgjqRKos4cdXKgyjWZ7CP9V9daRXDtje63
+Om8gwSdU/nCvhdRIWp/Vwbf7Ia8iZr9OJ5YuQl0DBG4qmGDDrvImgPAFkYFzwlqo
+choXFQ9y0YVCV41DnR+GYhwl2qBd81T8aXhihEGPIgaw3g8gd8B5o6mPVgl+nJqI
+BkEYGBusiag2pS6qwznZiQEVAwUQNuEtBHey5gA9JdPZAQFtOAf+KVh939b0J94u
+v/kpg4xs1LthlhquhbHcKNoVTNspugiC3qMPyvSX4XcBr2PC0cVkS4Z9PY9iCfT+
+x9WM96g39dAF+le2CCx7XISk9XXJ4ApEy5g4AuK7NYgAJd39PPbERgWnxjxir9g0
+Ix30dS30bW39D+3NPU5Ho9TD/B7UDFvYT5AWHl3MGwo3a1RhTs6sfgL7yQ3U+mvq
+MkTExZb5mfN1FeaYKMopoI4VpzNVeGxQWIz67VjJHVyUlF20ekOz4kWVgsxkc8G2
+saqZd6yv2EwqYTi8BDAduweP33KrQc4KDDommQNDOXxaKOeCoESIdM4p7Esdjq1o
+L0oixF12CohGBBARAgAGBQI7HmHDAAoJEJ5A4xAACqukTlQAoI4QzP9yjPohY7OU
+F7J3eKBTzp25AJ42BmtSd3pvm5ldmognWF3Trhp+GYkAlQMFEDe3O8IWkDf+zvyS
+FQEBAfkD/3GG5UgJj18UhYmh1gfjIlDcPAeqMwSytEHDENmHC+vlZQ/p0mT9tPiW
+tp34io54mwr+bLPN8l6B5GJNkbGvH6M+mO7R8Lj4nHL6pyAv3PQr83WyLHcaX7It
+Klj371/4yzKV6qpz43SGRK4MacLo2rNZ/dNej7lwPCtzCcFYwqkiiEYEEBECAAYF
+AjoaQqQACgkQx1KqMrDf94ArewCfWnTUDG5gNYkmHG4bYL8fQcizyA4An2eVo/n+
+3J2KRWSOhpAMsnMxtPbB
+=Ay23
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc
new file mode 100644
index 00000000..580858ba
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQENBEkUTD8BCADWLy5d5IpJedHQQSXkC1VK/oAZlJEeBVpSZjMCn8LiHaI9Wq3G
+3Vp6wvsP1b3kssJGzVFNctdXt5tjvOLxvrEfRJuGfqHTKILByqLzkeyWawbFNfSQ
+93/8OunfSTXC1Sx3hgsNXQuOrNVKrDAQUqT620/jj94xNIg09bLSxsjN6EeTvyiO
+mtE9H1J03o9tY6meNL/gcQhxBvwuo205np0JojYBP0pOfN8l9hnIOLkA0yu4ZXig
+oKOVmf4iTjX4NImIWldT+UaWTO18NWcCrujtgHueytwYLBNV5N0oJIP2VYuLZfSD
+VYuPllv7c6O2UEOXJsdbQaVuzU1HLocDyipnABEBAAG0NG9wZW5TVVNFIFByb2pl
+Y3QgU2lnbmluZyBLZXkgPG9wZW5zdXNlQG9wZW5zdXNlLm9yZz6JATwEEwECACYF
+AkkUTD8CGwMFCQPCZwAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRC4iy/UPb3C
+hIE9B/9DUwwQ5c+8xW0x2Fli5Yn1P+4Wq3nmB+ZTpM5Q1a7A2l+HhpUBsnwx2e/4
+RuXlJ06uYby8UpXCli44jXFepJgiXp7ZRPX5A06aY9Pz0wawsMtYQS716+vSV3e3
+ynZmTGKxj8Z94TEVcEjMP1/XpjW22DcpItRJX2VCW7lUXDmRfQzBEolcfwlF7a1B
+VcSqGZX8JvuTocLX/+fYBhZYQvERw6PUVGoEskMXMoRg6PqWMesW9Bq3cm8oeBa2
+4YmGLkN2ztBIbqRMSv0binKcddHHvRlxVFRXrnnlXrEPKrx9Fbu4vkqrG+EKE6+v
+GO73ROyEcJuuoJTYsKPx6Uic5gRl
+=guZP
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc
new file mode 100644
index 00000000..fdd693f9
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQGiBEeWWzMRBADU8l2IckSzgdUS1dn0WMM7wXK4seoFsHHQw/0unHCQCxpyDMnn
+TKV86p5KTbR1FDdeaZlY0yCV+IGsiIxLyuUdJn8vuA5gA5ZkUr89/HtWaeZVl77J
+HIQxvhDRBWCOO4QNtrZYWvGbvl83wl/zOfdLEs8IGElt0LgfohyTA1qfrwCg/Hac
+tDDscXsPlo5Jek/+3RHVeD0D/30riCpfpLJOmhraLg1EbWsE0mN9IQsl+WDPdoYo
+bB76z6eH3e38618WzP/LTG4WuVbwpSSqmXyfdVpXxWzESfT8q0B8CGpHf/Sa/T/L
+emohmRnLvkf/tAfxFmDMm1jOewJIE9S35jANGHVJcxmfRNpPWC7uHnqjopnsmDkL
+kMEdBAC6YcpDOcMJZ9sJbt/JNZBaoT5CltgMDlSN50t2v/J5em8qMLqCSNF5UJyd
+LFnePHTHy6gVjWbqcC0ncFzOqM1y644Up7BoKSAr1hRTl6Mw9S3UfZZZ0al3JtWt
+8y0eFIW3QP66w1AL0LO2bZMBuOvhb63DXv5iHorcxk0yIFbbybRCb3BlblNVU0U6
+RmFjdG9yeSBPQlMgUHJvamVjdCA8b3BlblNVU0U6RmFjdG9yeUBidWlsZC5vcGVu
+c3VzZS5vcmc+iGYEExECACYFAkeWWzMCGwMFCQQesAAGCwkIBwMCBBUCCAMEFgID
+AQIeAQIXgAAKCRAcchwkVrQXevBsAKCOeScnlH2fWVBJGHTOVJ3M4yBqDACbBeNk
+PuWo05AOQ3M1dLE1hkN36G+IRgQTEQIABgUCR5ZbMwAKCRA7MBG3a51lI7PfAKCc
+9ZtKfI5G/g66V7pSMXh9gi+ykgCgivPfGMDh9HIROwBIudo2qGImOqI=
+=htdw
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc
new file mode 100644
index 00000000..d0f64278
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQGiBER0iroRBADfqUeJmPCXqPJFnf3CVKy40dL1F+gfvP+JHN7/uu4c9+oCYjI1
+uAE8iGTm/Twb/Zzbs4dt0iWjhNFXbRi42rMww4d/8QcPYZ21WSehh+fv8nCjt2sw
+LeC87ar2SR8OTpJBK0fQlcd4e6H5GMntfI6SYEUOPd8m/eQ+4+1AxpUUpwCgswaF
+13fePZGI//pDn5tGjbvmaP8D/R3qum/I+oDS8lbFeeDS10GkEkwTYec13gdfsq6I
+yzIj7VBsC+rGfbipv+VGR61Q4d19pOHKLDekr9OG+3G4ZcYM4NQvQZR+QIlp3xWu
+nBmYD1LRkHLVj+Z4DGQhjjOffkPSuacKPymMaZ/aRiLgTIAo97W2YPhutscXrLSG
+2Y+BA/4jsyaDb7kbW4wc8RtPIcuFEheVqgBeRakP9Uj47kBMBEpPtI/mIdY5liKk
+ztKnuQG6ROYLNV/PW0ZbE1uT64C710weh4cB3PnZLV5P10deDLBjHk8MJQGCTSDD
+JYvhutUzQfshAU6j2kErGvKdZxWGezab34vFyMP2oLGqswPAJrRQTm92ZWxsIFBy
+b3ZvIEJ1aWxkIChDb250YWN0IHNlY3VyaXR5QG5vdmVsbC5jb20pIDxub3ZlbGwt
+cHJvdm8tYnVpbGRAbm92ZWxsLmNvbT6IZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQW
+AgMBAh4BAheABQJIFkiPBQkHhmvVAAoJEBTCi8l+LjsFn4QAn2wgOHudNubNZvTz
+NdaYJKJ0m2qnAJ9hd0nQBhn28H4Ii4a4h7kpGWRxN4hGBBMRAgAGBQJEexD/AAoJ
+EKhO2uicgArKFLwAn0B+g2mJ5n8LrBziTQ5SjnSPyDBXAJwJoYTta5Sfw/3vVGpU
+fJAKVDoB9w==
+=MWDN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc
new file mode 100644
index 00000000..c813e864
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc
@@ -0,0 +1,37 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQGiBDnu9IERBACT8Y35+2vv4MGVKiLEMOl9GdST6MCkYS3yEKeueNWc+z/0Kvff
+4JctBsgs47tjmiI9sl0eHjm3gTR8rItXMN6sJEUHWzDP+Y0PFPboMvKx0FXl/A0d
+M+HFrruCgBlWt6FA+okRySQiliuI5phwqkXefl9AhkwR8xocQSVCFxcwvwCglVcO
+QliHu8jwRQHxlRE0tkwQQI0D+wfQwKdvhDplxHJ5nf7U8c/yE/vdvpN6lF0tmFrK
+XBUX+K7u4ifrZlQvj/81M4INjtXreqDiJtr99Rs6xa0ScZqITuZC4CWxJa9GynBE
+D3+D2t1V/f8l0smsuYoFOF7Ib49IkTdbtwAThlZp8bEhELBeGaPdNCcmfZ66rKUd
+G5sRA/9ovnc1krSQF2+sqB9/o7w5/q2qiyzwOSTnkjtBUVKn4zLUOf6aeBAoV6NM
+CC3Kj9aZHfA+ND0ehPaVGJgjaVNFhPi4x0e7BULdvgOoAqajLfvkURHAeSsxXIoE
+myW/xC1sBbDkDUIBSx5oej73XCZgnj/inphRqGpsb+1nKFvF+rQoU3VTRSBQYWNr
+YWdlIFNpZ25pbmcgS2V5IDxidWlsZEBzdXNlLmRlPohiBBMRAgAiAhsDBAsHAwID
+FQIDAxYCAQIeAQIXgAUCSB80OgUJEfKmuQAKCRCoTtronIAKyuJlAJ0cWZifmBO6
+Eh71jattipdMhUYBTwCfSXbJJtuF3c96JPmpmT8be2LDo86IRgQQEQIABgUCOnBe
+UgAKCRCeQOMQAAqrpNzOAKCL512FZvv4VZx94TpbA9lxyoAejACeOO1HIbActAev
+k5MUBhNeLZa/qM2JARUDBRA6cGBvd7LmAD0l09kBATWnB/9An5vfiUUE1VQnt+T/
+EYklES3tXXaJJp9pHMa4fzFa8jPVtv5UBHGee3XoUNDVwM2OgSEISZxbzdXGnqIl
+cT08TzBUD9i579uifklLsnr35SJDZ6ram51/CWOnnaVhUzneOA9gTPSr+/fT3WeV
+nwJiQCQ30kNLWVXWATMnsnT486eAOlT6UNBPYQLpUprF5Yryk23pQUPAgJENDEqe
+U6iIO9Ot1ZPtB0lniw+/xCi13D360o1tZDYOp0hHHJN3D3EN8C1yPqZd5CvvznYv
+B6bWBIpWcRgdn2DUVMmpU661jwqGlRz1F84JG/xe4jGuzgpJt9IXSzyohEJB6XG5
++D0BuQINBDnu9JIQCACEkdBN6Mxf5WvqDWkcMRy6wnrd9DYJ8UUTmIT2iQf07tRU
+KJJ9v0JXfx2Z4d08IQSMNRaq4VgSe+PdYgIy0fbj23Via5/gO7fJEpD2hd2f+pMn
+OWvH2rOOIbeYfuhzAc6BQjAKtmgR0ERUTafTM9Wb6F13CNZZNZfDqnFDP6L12w3z
+3F7FFXkz07Rs3AIto1ZfYZd4sCSpMr/0S5nLrHbIvGLp271hhQBeRmmoGEKO2JRe
+lGgUJ2CUzOdtwDIKT0LbCpvaP8PVnYF5IFoYJIWRHqlEt5ucTXstZy7vYjL6vTP4
+l5xs+LIOkNmPhqmfsgLzVo0UaLt80hOwc4NvDCOLAAMGB/9g+9V3ORzw4LvO1pwR
+YJqfDKUq/EJ0rNMMD4N8RLpZRhKHKJUm9nNHLbksnlZwrbSTM5LpC/U6sheLP+l0
+bLVoq0lmsCcUSyh+mY6PxWirLIWCn/IAZAGnXb6Zd6TtIJlGG6pqUN8QxGJYQnon
+l0uTJKHJENbI9sWHQdcTtBMc34gorHFCo1Bcvpnc1LFLrWn7mfoGx6INQjf3HGQp
+MXAWuSBQhzkazY6vaWFpa8bBJ+gKbBuySWzNm3rFtT5HRKMWpO+M9bHp4d+puY0L
+1YwN1OMatcMMpcWnZpiWiR83oi32+xtWUY2U7Ae38mMag8zFbpeqPQUsDv9V7CAJ
+1dbriEwEGBECAAwFAkgfNGYFCRHyptQACgkQqE7a6JyACsrv3ACbBLhafFXmTjH3
+JJWFJGWuIOaZUosAniPs4feEyN46gjXGgcZc2Ai8nkm6
+=mY6G
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc
new file mode 100644
index 00000000..18086b97
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc
@@ -0,0 +1,31 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+mQILBERqCJkBEACdqhZWdAbUHLIumXMEgv+GFjr1ZzVHgynnFOzztU/8sxZNa9cm
+YV4HZpVfjMr7fos3ArzyiPPt/336cf7w9p79/ZS4rHSNPDMlPCtXYvFxUbvU0/GY
+q4jwcBsrJ0xaJ9CP5bWyAgVKOb7Y6k0ktaLjRR+tDfMsHA4H0ClMoRr6ATw8NL0e
+VCfAHuzqCKvX1If8ng+wTivtAhKvz/WwQiELNELmPfc5tZHOw8NgP/r0Pze18Hn2
+dlAHu0WpC7uoR00vscsMIJiJJPcsxbL1F1eADKnk+wEy8Go+EJeJ5i0WoFbqD52q
+Lv/C/oY6NVtVY0MBwtn+oQNSnQ4JBsB/Akdt53LAi0ZtNQxMyUW+76R8FCOmVCV8
+WGiF5CPRP0yvG80AMBjBjKjHb/v8ov5MnIyFimzAHS1gQcUNxTEYA/5eFwoYcGcK
+weGq9FUjPTzLQAgvp7XmOzHpSAfJ7qysxFTepNsSZZhgizJyInrdQldr+GYcUNqB
+krD9MWmFop975OxhCTEnNv/HcE79r8WD26HzDFYxTiTJbr0pU/ivBzo+rjq+YG2V
+stJk+udVYmZTnC4LmXus8JiNuqBXbxNscwCBpcJ8YcfCV6uh+7E0XfXZsgVUFLp1
+NF+ylYRGTycOlWoZODrnJevZW7N9O3bWRx/G2P4bJD07LsDLe4i5hymf5QAGKbRQ
+Tm92ZWxsIFByb3ZvIEJ1aWxkIChDb250YWN0IHNlY3VyaXR5QG5vdmVsbC5jb20p
+IDxub3ZlbGwtcHJvdm8tYnVpbGRAbm92ZWxsLmNvbT6JAjMEEwECAB0FAkRqCJkG
+CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBHijLooZEiCKSFD/93vZHCAMLEfksU
+KnvXl08bv1rfuamuyJnE3ANRE5RDyypriHMCnkVxazvQ2WI4W4UEjluL9+SzZwtV
+ZvKVoAr31614nSyWwv2YnJTHfjMG+xRlkolZMnuIiB9PcCBo9+GPU0ABuzo4pEJW
+NIRoSS1NFbAZBhtUnY0cN+trM5QObLl7xXTavLyGk//blkk57fov7GXsQJlZUig0
+l2yt5XNyGpLUnTMDumHh8b389quF+0+ZfdwOy7A768xjipAZiTvIujBrEv51wrxh
+0HBT0VGA0MhD9t0B+Ce4BM9P/iVMO00naaOp6PqMfPPKxQQqer8qy1i6UWBx95SY
+mKZBIvOm2d9PezDxkckCu61r6krx1iKnT1wdprCAkIYwALK118SpbxuyGW0bhRHc
+wsc/akzWH72fS0Xu49mvL4k4A2U9asdeQid3dMgbtm5mSWof0yiU/G4YNn0yeXoY
+oG1VbCAqQbFX1Rvd6GITJVqI+ekW/uMA9BP78dF8wBeG0+QmpQnSf+eOsxB/RT8o
+Kb4hHY+29MUlg+i9ceVt7hoKr03J/uIG5TXFXRYLaI0iAFVlKfWxpqDfS2XA4+dD
+VYt+5RDgBcnxDaTB4FE9GqcYScNfe7+NFtL0p0wOPftbmgZzGjucTmrD8mDUNdqA
+xGK7vlk4GATSfOQlq7G6LXW6RYnInohGBBMRAgAGBQJEazMlAAoJEKhO2uicgArK
+2vMAn0TbVDESEVKVuFZStrfIzOvJQrR9AJsH733Ju1kE99GFrdfCeGqpckmNhg==
+=E+qN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2/trusted-package-keys/pubring.gpg b/lib/distro-info/suse-11.2/trusted-package-keys/pubring.gpg
new file mode 100644
index 00000000..5bd5a78e
--- /dev/null
+++ b/lib/distro-info/suse-11.2/trusted-package-keys/pubring.gpg
Binary files differ
diff --git a/lib/distro-info/suse-11.2_x86_64/mirrors/base b/lib/distro-info/suse-11.2_x86_64/mirrors/base
new file mode 100644
index 00000000..8d55eac4
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/mirrors/base
@@ -0,0 +1,247 @@
+http://opensuse.mirror.ac.za/opensuse/distribution/11.1/repo/oss
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.1/repo/oss
+http://mirror.lupaworld.com/opensuse/distribution/11.1/repo/oss
+http://www.lizardsource.cn/distribution/11.1/repo/oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.1/repo/oss
+ftp://www.lizardsource.cn/distribution/11.1/repo/oss
+ftp://opensuse.mirror.ac.za/opensuse/distribution/11.1/repo/oss
+http://download.opensuse.or.id/distribution/11.1/repo/oss
+http://mirror.unej.ac.id/opensuse/distribution/11.1/repo/oss
+http://opensuse.cbn.net.id/distribution/11.1/repo/oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.1/repo/oss
+http://repo.ugm.ac.id/opensuse/distribution/11.1/repo/oss
+http://dl2.foss-id.web.id/opensuse/distribution/11.1/repo/oss
+http://mirror.isoc.org.il/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.isoc.org.il/opensuse/distribution/11.1/repo/oss
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.1/repo/oss
+ftp://opensuse.cbn.net.id/pub/opensuse/distribution/11.1/repo/oss
+ftp://dl2.foss-id.web.id/repo/opensuse/distribution/11.1/repo/oss
+http://ftp.kddilabs.jp/Linux/packages/opensuse/distribution/11.1/repo/oss
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.1/repo/oss
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.riken.jp/Linux/opensuse/distribution/11.1/repo/oss
+ftp://mirror.unej.ac.id/opensuse/distribution/11.1/repo/oss
+ftp://ftp.novell.co.jp/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.riken.jp/Linux/opensuse/distribution/11.1/repo/oss
+http://ftp.daum.net/opensuse/distribution/11.1/repo/oss
+ftp://repo.ugm.ac.id/opensuse/distribution/11.1/repo/oss
+http://77.88.19.68/opensuse/distribution/11.1/repo/oss
+http://77.88.19.73/opensuse/distribution/11.1/repo/oss
+http://mirror.suse.ru/distribution/11.1/repo/oss
+http://77.88.19.74/opensuse/distribution/11.1/repo/oss
+http://93.158.155.193/opensuse/distribution/11.1/repo/oss
+ftp://ftp.chg.ru/pub/opensuse/distribution/11.1/repo/oss
+ftp://dispenser.yandex.net/opensuse/distribution/11.1/repo/oss
+ftp://ftp.daum.net/opensuse/distribution/11.1/repo/oss
+http://mirror.nus.edu.sg/opensuse/distribution/11.1/repo/oss
+ftp://seeder.yandex.net/opensuse/distribution/11.1/repo/oss
+ftp://allotter.yandex.net/opensuse/distribution/11.1/repo/oss
+ftp://ftp.kaist.ac.kr/opensuse/distribution/11.1/repo/oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.metu.edu.tr/opensuse/distribution/11.1/repo/oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.in.th/opensuse/distribution/11.1/repo/oss
+http://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.1/repo/oss
+http://ftp.chg.ru/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.1/repo/oss
+ftp://ftp.isu.edu.tw/pub/Linux/OpenSuSE/distribution/11.1/repo/oss
+http://ftp.twaren.net/Linux/OpenSuSE/distribution/11.1/repo/oss
+http://mirror-fpt-telecom.fpt.net/opensuse/distribution/11.1/repo/oss
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.1/repo/oss
+http://ftp.isu.edu.tw/pub/Linux/opensuse/distribution/11.1/repo/oss
+http://suse.inode.at/opensuse/distribution/11.1/repo/oss
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.1/repo/oss
+ftp://ftp.twaren.net/Linux/OpenSuSE/distribution/11.1/repo/oss
+http://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.tugraz.at/mirror/opensuse/distribution/11.1/repo/oss
+ftp://ftp.tugraz.at/mirror/opensuse/distribution/11.1/repo/oss
+ftp://suse.inode.at/opensuse/distribution/11.1/repo/oss
+http://suse.lagis.at/opensuse/distribution/11.1/repo/oss
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://mirror.opensuse.com.ba/opensuse/distribution/11.1/repo/oss
+http://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.1/repo/oss
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.1/repo/oss
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://mirrors.netbg.com/opensuse/distribution/11.1/repo/oss
+http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.1/repo/oss
+ftp://mirror.switch.ch/mirror/opensuse/distribution/11.1/repo/oss
+ftp://suse.lagis.at/opensuse/distribution/11.1/repo/oss
+http://mirror.karneval.cz/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://mirror.karneval.cz/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.1/repo/oss
+ftp://mirrors.netbg.com/opensuse/distribution/11.1/repo/oss
+http://ftp.linux.cz/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.1/repo/oss
+http://ftp5.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.1/repo/oss
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/distribution/11.1/repo/oss
+http://download.uni-hd.de/ftp/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.1/repo/oss
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/distribution/11.1/repo/oss
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://opensuse.intergenia.de/distribution/11.1/repo/oss
+ftp://ftp5.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.1/repo/oss
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.1/repo/oss
+http://widehat.opensuse.org/distribution/11.1/repo/oss
+ftp://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.1/repo/oss
+http://ftp4.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp3.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.1/repo/oss
+http://ftp.uni-kassel.de/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://opensuse-linuxmigratio.at/distribution/11.1/repo/oss
+ftp://ftp3.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.1/repo/oss
+ftp://ftp4.gwdg.de/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.uni-siegen.de/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-siegen.de/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.1/repo/oss
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://ftp.klid.dk/ftp/opensuse/distribution/11.1/repo/oss
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.1/repo/oss
+ftp://ftp.klid.dk/opensuse/distribution/11.1/repo/oss
+http://ftp.estpak.ee/pub/suse/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.gui.uva.es/sites/opensuse.org/distribution/11.1/repo/oss
+ftp://ftp.gui.uva.es/sites/opensuse.org/distribution/11.1/repo/oss
+http://ftp.rediris.es/pub/mirror/opensuse/distribution/11.1/repo/oss
+http://suse.bifi.unizar.es/opensuse/distribution/11.1/repo/oss
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.1/repo/oss
+http://opensuse.mirrors.proxad.net/opensuse/distribution/11.1/repo/oss
+http://mirror.ovh.net/opensuse/distribution/11.1/repo/oss
+ftp://ftp.rediris.es/pub/mirror/opensuse/distribution/11.1/repo/oss
+http://fr2.rpmfind.net/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.1/repo/oss
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.1/repo/oss
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/oss
+ftp://fr2.rpmfind.net/linux/opensuse/distribution/11.1/repo/oss
+http://opensuse.cict.fr/distribution/11.1/repo/oss
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/distribution/11.1/repo/oss
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://mirror.ovh.net/opensuse/distribution/11.1/repo/oss
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.ntua.gr/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.ntua.gr/pub/linux/opensusedistribution/11.1/repo/oss
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.1/repo/oss
+ftp://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.1/repo/oss
+http://roxen.integrity.hu/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.cict.fr/opensuse/distribution/11.1/repo/oss
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.1/repo/oss
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+http://rm.mirror.garr.it/mirrors/opensuse/distribution/11.1/repo/oss
+http://repo1.linux.edu.lv/distribution/11.1/repo/oss
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/oss
+ftp://repo1.linux.edu.lv/distribution/11.1/repo/oss
+http://mirror.leaseweb.com/opensuse/distribution/11.1/repo/oss
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+ftp://mirror.leaseweb.com/opensuse/distribution/11.1/repo/oss
+http://mirrors.nl.eu.kernel.org/opensuse/distribution/11.1/repo/oss
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/oss
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/distribution/11.1/repo/oss
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/distribution/11.1/repo/oss
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.1/repo/oss
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/distribution/11.1/repo/oss
+http://opensuse.hro.nl/opensuse/distribution/11.1/repo/oss
+http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.1/repo/oss
+http://opensuse.uib.no/distribution/11.1/repo/oss
+ftp://rm.mirror.garr.it/mirrors/opensusedistribution/11.1/repo/oss
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/distribution/11.1/repo/oss
+http://ftp.uninett.no/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.1/repo/oss
+ftp://ftp.uninett.no/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://opensuse.hro.nl/opensuse/distribution/11.1/repo/oss
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.1/repo/oss
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.sileman.pl/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://mirrors.nl.eu.kernel.org/opensuse/distribution/11.1/repo/oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://ftp.sileman.pl/pub/opensuse/distribution/11.1/repo/oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.1/repo/oss
+http://cesium.di.uminho.pt/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.gts.lug.ro/opensuse/distribution/11.1/repo/oss
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.1/repo/oss
+ftp://ftp.gts.lug.ro/opensuse/distribution/11.1/repo/oss
+http://ftp.ines.lug.ro/opensuse/distribution/11.1/repo/oss
+http://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.1/repo/oss
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.1/repo/oss
+ftp://cesium.di.uminho.pt/pub/opensuse/distribution/11.1/repo/oss
+http://mirrors.se.eu.kernel.org/opensuse/distribution/11.1/repo/oss
+http://ftp.df.lth.se/pub/opensuse/distribution/11.1/repo/oss
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.1/repo/oss
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.1/repo/oss
+http://opensuse.ynet.sk/distribution/11.1/repo/oss
+ftp://mirrors.se.eu.kernel.org/opensuse/distribution/11.1/repo/oss
+ftp://ftp.ines.lug.ro/opensuse/distribution/11.1/repo/oss
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.1/repo/oss
+http://www.muug.mb.ca/pub/opensuse/distribution/11.1/repo/oss
+http://less.cogeco.net/ftp/openSUSE/distribution/11.1/repo/oss
+ftp://ftp.df.lth.se/pub/opensusedistribution/11.1/repo/oss
+http://linux.dell.com/repo/community/distribution/11.1/repo/oss
+http://ftp.osuosl.org/pub/opensuse/distribution/11.1/repo/oss
+ftp://less.cogeco.net/openSUSE/distribution/11.1/repo/oss
+http://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.1/repo/oss
+http://suse.mirrors.tds.net/pub/opensuse/distribution/11.1/repo/oss
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.osuosl.org/pub/opensuse/distribution/11.1/repo/oss
+http://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://www.muug.mb.ca/pub/opensuse/distribution/11.1/repo/oss
+http://mirror.umoss.org/opensuse/distribution/11.1/repo/oss
+ftp://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.1/repo/oss
+http://mirrors.med.harvard.edu/opensuse/distribution/11.1/repo/oss
+http://opensuse.cs.utah.edu/distribution/11.1/repo/oss
+ftp://suse.mirrors.tds.net/pub/opensuse/distribution/11.1/repo/oss
+http://mirrors.xmission.com/opensuse/distribution/11.1/repo/oss
+http://mirrors2.kernel.org/opensuse/distribution/11.1/repo/oss
+http://opensuse.ca.unixheads.org/distribution/11.1/repo/oss
+http://mirrors1.kernel.org/opensuse/distribution/11.1/repo/oss
+ftp://mirrors2.kernel.org/opensuse/distribution/11.1/repo/oss
+http://mirror.rackspace.com/openSUSE/distribution/11.1/repo/oss
+http://130.57.19.201/distribution/11.1/repo/oss
+ftp://mirrors.xmission.com/opensuse/distribution/11.1/repo/oss
+ftp://130.57.19.201/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirrors1.kernel.org/opensuse/distribution/11.1/repo/oss
+http://ftp.ussg.iu.edu/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.utexas.edu/opensuse/distribution/11.1/repo/oss
+ftp://opensuse.cs.utah.edu/pub/opensuse/distribution/11.1/repo/oss
+http://www.gtlib.gatech.edu/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.1/repo/oss
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/distribution/11.1/repo/oss
+ftp://ftp.utexas.edu/mirrors/opensuse/distribution/11.1/repo/oss
+http://mirror.nyi.net/opensuse/distribution/11.1/repo/oss
+http://mirror.cps.cmich.edu/opensuse/opensuse/distribution/11.1/repo/oss
+http://mirrors.rit.edu/opensuse/distribution/11.1/repo/oss
+ftp://ftp.ussg.iu.edu/linux/opensuse/distribution/11.1/repo/oss
+http://ftp.iinet.net.au/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.nyi.net/opensusedistribution/11.1/repo/oss
+ftp://mirror.rackspace.com/openSUSE/distribution/11.1/repo/oss
+http://mirror.internode.on.net/pub/opensuse/distribution/11.1/repo/oss
+http://mirror.pacific.net.au/linux/opensuse/distribution/11.1/repo/oss
+ftp://ftp.iinet.net.au/pub/opensuse/distribution/11.1/repo/oss
+ftp://mirror.internode.on.net/pub/opensuse/distribution/11.1/repo/oss
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.1/repo/oss
+ftp://mirror.pacific.net.au/linux/opensuse/distribution/11.1/repo/oss
+http://opensuse.patan.com.ar/distribution/11.1/repo/oss
+http://200.221.9.37/pub/opensuse/distribution/11.1/repo/oss
+http://opensuse.c3sl.ufpr.br/distribution/11.1/repo/oss
+ftp://opensuse.c3sl.ufpr.br/opensuse/distribution/11.1/repo/oss
+http://opensuse.pop.com.br/distribution/11.1/repo/oss
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.1/repo/oss
diff --git a/lib/distro-info/suse-11.2_x86_64/mirrors/base_non-oss b/lib/distro-info/suse-11.2_x86_64/mirrors/base_non-oss
new file mode 100644
index 00000000..bd887ed3
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/mirrors/base_non-oss
@@ -0,0 +1,246 @@
+http://opensuse.mirror.ac.za/opensuse/distribution/11.1/repo/non-oss
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.mirror.ac.za/opensuse/distribution/11.1/repo/non-oss
+http://mirror.lupaworld.com/opensuse/distribution/11.1/repo/non-oss
+http://www.lizardsource.cn/distribution/11.1/repo/non-oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.1/repo/non-oss
+http://mirror.alva.ge/pub/opensuse/distribution/11.1/repo/non-oss
+http://download.opensuse.or.id/distribution/11.1/repo/non-oss
+http://opensuse.cbn.net.id/distribution/11.1/repo/non-oss
+http://repo.ugm.ac.id/opensuse/distribution/11.1/repo/non-oss
+http://mirror.unej.ac.id/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.cbn.net.id/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.unej.ac.id/opensuse/distribution/11.1/repo/non-oss
+http://dl2.foss-id.web.id/opensuse/distribution/11.1/repo/non-oss
+http://mirror.isoc.org.il/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.1/repo/non-oss
+ftp://dl2.foss-id.web.id/repo/opensuse/distribution/11.1/repo/non-oss
+ftp://www.lizardsource.cn/distribution/11.1/repo/non-oss
+http://ftp.kddilabs.jp/Linux/packages/opensuse/distribution/11.1/repo/non-oss
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.novell.co.jp/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.1/repo/non-oss
+ftp://repo.ugm.ac.id/opensuse/distribution/11.1/repo/non-oss
+http://ftp.riken.jp/Linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.riken.jp/Linux/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.isoc.org.il/opensuse/distribution/11.1/repo/non-oss
+http://ftp.daum.net/opensuse/distribution/11.1/repo/non-oss
+http://77.88.19.68/opensuse/distribution/11.1/repo/non-oss
+http://77.88.19.73/opensuse/distribution/11.1/repo/non-oss
+http://mirror.suse.ru/distribution/11.1/repo/non-oss
+http://77.88.19.74/opensuse/distribution/11.1/repo/non-oss
+http://93.158.155.193/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.chg.ru/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://seeder.yandex.net/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.kaist.ac.kr/opensuse/distribution/11.1/repo/non-oss
+http://mirror.nus.edu.sg/opensuse/distribution/11.1/repo/non-oss
+ftp://allotter.yandex.net/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.novell.co.jp/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.metu.edu.tr/opensuse/distribution/11.1/repo/non-oss
+ftp://dispenser.yandex.net/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.isu.edu.tw/pub/Linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.suntel.com.tr/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.chg.ru/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.1/repo/non-oss
+ftp://ftp.isu.edu.tw/pub/Linux/OpenSuSE/distribution/11.1/repo/non-oss
+http://ftp.twaren.net/Linux/OpenSuSE/distribution/11.1/repo/non-oss
+ftp://mirror.in.th/opensuse/distribution/11.1/repo/non-oss
+http://mirror-fpt-telecom.fpt.net/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/distribution/11.1/repo/non-oss
+http://suse.inode.at/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/distribution/11.1/repo/non-oss
+ftp://spreader.yandex.net/opensuse/distribution/11.1/repo/non-oss
+ftp://suse.inode.at/opensuse/distribution/11.1/repo/non-oss
+http://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.tugraz.at/mirror/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.twaren.net/Linux/OpenSuSE/distribution/11.1/repo/non-oss
+http://suse.lagis.at/opensuse/distribution/11.1/repo/non-oss
+ftp://suse.lagis.at/opensuse/distribution/11.1/repo/non-oss
+http://mirror.opensuse.com.ba/opensuse/distribution/11.1/repo/non-oss
+http://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.tugraz.at/mirror/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+http://mirrors.netbg.com/opensuse/distribution/11.1/repo/non-oss
+ftp://mirrors.netbg.com/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.1/repo/non-oss
+http://mirror.karneval.cz/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://gd.tuwien.ac.at/opsys/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.karneval.cz/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.switch.ch/mirror/opensuse/distribution/11.1/repo/non-oss
+http://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.halifax.rwth-aachen.de/opensuse/distribution/11.1/repo/non-oss
+http://ftp5.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp5.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/distribution/11.1/repo/non-oss
+http://download.uni-hd.de/ftp/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.linux.cz/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/distribution/11.1/repo/non-oss
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.intergenia.de/distribution/11.1/repo/non-oss
+http://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.uni-ulm.de/mirrors/opensuse/distribution/11.1/repo/non-oss
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.1/repo/non-oss
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.uni-kl.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp3.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/distribution/11.1/repo/non-oss
+http://widehat.opensuse.org/distribution/11.1/repo/non-oss
+http://ftp4.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp4.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uni-kassel.de/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://opensuse-linuxmigratio.at/distribution/11.1/repo/non-oss
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uni-siegen.de/opensuse/distribution/11.1/repo/non-oss
+http://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp3.gwdg.de/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.klid.dk/ftp/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/distribution/11.1/repo/non-oss
+http://ftp.estpak.ee/pub/suse/opensuse/distribution/11.1/repo/non-oss
+http://ftp.gui.uva.es/sites/opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.uni-siegen.de/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.uni-bayreuth.de/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.rediris.es/pub/mirror/opensuse/distribution/11.1/repo/non-oss
+http://mirror.ovh.net/opensuse/distribution/11.1/repo/non-oss
+http://suse.bifi.unizar.es/opensuse/distribution/11.1/repo/non-oss
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.mirrors.proxad.net/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.klid.dk/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.rediris.es/pub/mirror/opensuse/distribution/11.1/repo/non-oss
+http://fr2.rpmfind.net/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.ovh.net/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.gui.uva.es/sites/opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://fr2.rpmfind.net/linux/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.cict.fr/distribution/11.1/repo/non-oss
+http://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.1/repo/non-oss
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/non-oss
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/distribution/11.1/repo/non-oss
+ftp://mirror.cict.fr/opensuse/distribution/11.1/repo/non-oss
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://ftp.ntua.gr/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/distribution/11.1/repo/non-oss
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.1/repo/non-oss
+http://roxen.integrity.hu/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.ntua.gr/pub/linux/opensusedistribution/11.1/repo/non-oss
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+ftp://www.mirrorservice.org/sites/download.opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/distribution/11.1/repo/non-oss
+http://rm.mirror.garr.it/mirrors/opensuse/distribution/11.1/repo/non-oss
+ftp://rm.mirror.garr.it/mirrors/opensusedistribution/11.1/repo/non-oss
+http://repo1.linux.edu.lv/distribution/11.1/repo/non-oss
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://repo1.linux.edu.lv/distribution/11.1/repo/non-oss
+http://mirror.leaseweb.com/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.leaseweb.com/opensuse/distribution/11.1/repo/non-oss
+http://mirrors.nl.eu.kernel.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/distribution/11.1/repo/non-oss
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/distribution/11.1/repo/non-oss
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.hro.nl/opensuse/distribution/11.1/repo/non-oss
+ftp://mirrors.nl.eu.kernel.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.1/repo/non-oss
+http://ftp.uninett.no/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.uib.no/distribution/11.1/repo/non-oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.sileman.pl/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.uninett.no/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.hro.nl/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.pbone.net/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/distribution/11.1/repo/non-oss
+http://cesium.di.uminho.pt/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://cesium.di.uminho.pt/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.sileman.pl/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.1/repo/non-oss
+http://ftp.gts.lug.ro/opensuse/distribution/11.1/repo/non-oss
+http://ftp.ines.lug.ro/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.ines.lug.ro/opensuse/distribution/11.1/repo/non-oss
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.1/repo/non-oss
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/distribution/11.1/repo/non-oss
+http://mirrors.se.eu.kernel.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/distribution/11.1/repo/non-oss
+http://ftp.df.lth.se/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.ynet.sk/distribution/11.1/repo/non-oss
+ftp://mirrors.se.eu.kernel.org/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.df.lth.se/pub/opensusedistribution/11.1/repo/non-oss
+http://less.cogeco.net/ftp/openSUSE/distribution/11.1/repo/non-oss
+ftp://ftp.gts.lug.ro/opensuse/distribution/11.1/repo/non-oss
+ftp://less.cogeco.net/openSUSE/distribution/11.1/repo/non-oss
+http://www.muug.mb.ca/pub/opensuse/distribution/11.1/repo/non-oss
+http://linux.dell.com/repo/community/distribution/11.1/repo/non-oss
+http://ftp.osuosl.org/pub/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.osuosl.org/pub/opensuse/distribution/11.1/repo/non-oss
+http://suse.mirrors.tds.net/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://www.muug.mb.ca/pub/opensuse/distribution/11.1/repo/non-oss
+http://mirrors.med.harvard.edu/opensuse/distribution/11.1/repo/non-oss
+http://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://mirror.umoss.org/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.cs.utah.edu/distribution/11.1/repo/non-oss
+http://opensuse.ca.unixheads.org/distribution/11.1/repo/non-oss
+ftp://opensuse.cs.utah.edu/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/distribution/11.1/repo/non-oss
+http://mirrors.xmission.com/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.anl.gov/pub/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://mirrors2.kernel.org/opensuse/distribution/11.1/repo/non-oss
+ftp://mirrors.xmission.com/opensuse/distribution/11.1/repo/non-oss
+http://mirrors1.kernel.org/opensuse/distribution/11.1/repo/non-oss
+http://mirror.rackspace.com/openSUSE/distribution/11.1/repo/non-oss
+http://130.57.19.201/distribution/11.1/repo/non-oss
+ftp://130.57.19.201/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.rackspace.com/openSUSE/distribution/11.1/repo/non-oss
+http://ftp.utexas.edu/opensuse/distribution/11.1/repo/non-oss
+http://www.gtlib.gatech.edu/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirrors2.kernel.org/opensuse/distribution/11.1/repo/non-oss
+http://ftp.ussg.iu.edu/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://ftp.utexas.edu/mirrors/opensuse/distribution/11.1/repo/non-oss
+ftp://www.gtlib.gatech.edu/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirrors1.kernel.org/opensuse/distribution/11.1/repo/non-oss
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/distribution/11.1/repo/non-oss
+http://mirror.cps.cmich.edu/opensuse/opensuse/distribution/11.1/repo/non-oss
+http://mirror.nyi.net/opensuse/distribution/11.1/repo/non-oss
+http://mirrors.rit.edu/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.1/repo/non-oss
+http://ftp.iinet.net.au/pub/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.nyi.net/opensusedistribution/11.1/repo/non-oss
+ftp://mirror.colorado.edu/pub/opensuse/distribution/11.1/repo/non-oss
+http://mirror.pacific.net.au/linux/opensuse/distribution/11.1/repo/non-oss
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.pacific.net.au/linux/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.internode.on.net/pub/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.patan.com.ar/distribution/11.1/repo/non-oss
+http://200.221.9.37/pub/opensuse/distribution/11.1/repo/non-oss
+http://opensuse.c3sl.ufpr.br/distribution/11.1/repo/non-oss
+http://opensuse.pop.com.br/distribution/11.1/repo/non-oss
+ftp://opensuse.c3sl.ufpr.br/opensuse/distribution/11.1/repo/non-oss
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/distribution/11.1/repo/non-oss
diff --git a/lib/distro-info/suse-11.2_x86_64/mirrors/base_update b/lib/distro-info/suse-11.2_x86_64/mirrors/base_update
new file mode 100644
index 00000000..d0c666e0
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/mirrors/base_update
@@ -0,0 +1,246 @@
+http://opensuse.mirror.ac.za/opensuse/update/11.1
+http://ftp.up.ac.za/mirrors/opensuse/opensuse/update/11.1
+http://download.opensuse.or.id/update/11.1
+ftp://opensuse.mirror.ac.za/opensuse/update/11.1
+http://mirror.lupaworld.com/opensuse/update/11.1
+http://www.lizardsource.cn/update/11.1
+http://mirror.alva.ge/pub/opensuse/update/11.1
+http://mirror.alva.ge/pub/opensuse/update/11.1
+ftp://ftp.up.ac.za/mirrors/opensuse/opensuse/update/11.1
+http://mirror.unej.ac.id/opensuse/update/11.1
+http://opensuse.cbn.net.id/update/11.1
+http://repo.ugm.ac.id/opensuse/update/11.1
+ftp://mirror.unej.ac.id/opensuse/update/11.1
+http://dl2.foss-id.web.id/opensuse/update/11.1
+http://mirror.isoc.org.il/pub/opensuse/update/11.1
+http://ftp.jaist.ac.jp/pub/Linux/openSUSE/update/11.1
+ftp://dl2.foss-id.web.id/repo/opensuse/update/11.1
+http://ftp.kddilabs.jp/Linux/packages/opensuse/update/11.1
+ftp://mirror.isoc.org.il/opensuse/update/11.1
+ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/update/11.1
+ftp://opensuse.cbn.net.id/pub/opensuse/update/11.1
+ftp://repo.ugm.ac.id/opensuse/update/11.1
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/opensuse/update/11.1
+ftp://www.lizardsource.cn/update/11.1
+http://ftp.riken.jp/Linux/opensuse/update/11.1
+http://ftp.daum.net/opensuse/update/11.1
+http://77.88.19.68/opensuse/update/11.1
+ftp://ftp.novell.co.jp/pub/opensuse/update/11.1
+http://77.88.19.73/opensuse/update/11.1
+ftp://ftp.riken.jp/Linux/opensuse/update/11.1
+http://mirror.suse.ru/update/11.1
+http://77.88.19.74/opensuse/update/11.1
+http://93.158.155.193/opensuse/update/11.1
+ftp://dispenser.yandex.net/opensuse/update/11.1
+ftp://ftp.kaist.ac.kr/opensuse/update/11.1
+ftp://ftp.chg.ru/pub/opensuse/update/11.1
+ftp://spreader.yandex.net/opensuse/update/11.1
+ftp://allotter.yandex.net/opensuse/update/11.1
+http://mirror.nus.edu.sg/opensuse/update/11.1
+ftp://seeder.yandex.net/opensuse/update/11.1
+ftp://ftp.metu.edu.tr/opensuse/update/11.1
+ftp://ftp.suntel.com.tr/pub/opensuse/update/11.1
+http://ftp.isu.edu.tw/pub/Linux/opensuse/update/11.1
+ftp://mirror.in.th/opensuse/update/11.1
+ftp://ftp.suntel.com.tr/pub/opensuse/update/11.1
+http://ftp.chg.ru/pub/opensuse/update/11.1
+http://ftp.ncnu.edu.tw/Linux/opensuse/update/11.1
+ftp://ftp.ncnu.edu.tw/Linux/opensuse/update/11.1
+http://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/update/11.1
+http://ftp.twaren.net/Linux/OpenSuSE/update/11.1
+http://mirror-fpt-telecom.fpt.net/opensuse/update/11.1
+http://suse.inode.at/opensuse/update/11.1
+ftp://ftp.twaren.net/Linux/OpenSuSE/update/11.1
+http://gd.tuwien.ac.at/opsys/linux/opensuse/update/11.1
+ftp://ftp.cse.yzu.edu.tw/pub/Linux/openSUSE/update/11.1
+http://ftp.tugraz.at/mirror/opensuse/update/11.1
+ftp://suse.inode.at/opensuse/update/11.1
+http://suse.lagis.at/opensuse/update/11.1
+ftp://suse.lagis.at/opensuse/update/11.1
+http://mirror.opensuse.com.ba/opensuse/update/11.1
+http://ftp.belnet.be/mirror/ftp.opensuse.org/update/11.1
+ftp://ftp.tugraz.at/mirror/opensuse/update/11.1
+http://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/update/11.1
+ftp://opensuse.mirrors.skynet.be/pub/ftp.opensuse.org/opensuse/update/11.1
+http://mirrors.netbg.com/opensuse/update/11.1
+ftp://mirrors.netbg.com/opensuse/update/11.1
+http://mirror.switch.ch/ftp/mirror/opensuse/update/11.1
+ftp://ftp.belnet.be/mirror/ftp.opensuse.org/update/11.1
+http://mirror.karneval.cz/pub/linux/opensuse/update/11.1
+http://ftp.sh.cvut.cz/MIRRORS/opensuse/update/11.1
+http://ftp.linux.cz/pub/linux/opensuse/update/11.1
+ftp://mirror.switch.ch/mirror/opensuse/update/11.1
+http://ftp.halifax.rwth-aachen.de/opensuse/update/11.1
+ftp://mirror.karneval.cz/pub/linux/opensuse/update/11.1
+http://ftp5.gwdg.de/pub/opensuse/update/11.1
+ftp://ftp.sh.cvut.cz/MIRRORS/opensuse/update/11.1
+ftp://ftp5.gwdg.de/pub/opensuse/update/11.1
+http://download.uni-hd.de/ftp/pub/linux/opensuse/update/11.1
+ftp://ftp.halifax.rwth-aachen.de/opensuse/update/11.1
+http://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/update/11.1
+http://ftp.uni-bremen.de/pub/mirrors/opensuse/update/11.1
+http://sunsite.rwth-aachen.de:3080/ftp/pub/Linux/opensuse/update/11.1
+http://opensuse.intergenia.de/update/11.1
+http://ftp.uni-ulm.de/mirrors/opensuse/update/11.1
+ftp://ftp.rz.uni-wuerzburg.de/pub/linux/opensuse/update/11.1
+http://ftp.hosteurope.de/mirror/ftp.opensuse.org/update/11.1
+ftp://ftp.uni-heidelberg.de/pub/linux/opensuse/update/11.1
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/opensuse/update/11.1
+ftp://ftp.hosteurope.de/mirror/ftp.opensuse.org/update/11.1
+http://ftp.tu-chemnitz.de/pub/linux/opensuse/update/11.1
+ftp://ftp.tu-chemnitz.de/pub/linux/opensuse/update/11.1
+ftp://ftp.uni-ulm.de/mirrors/opensuse/update/11.1
+http://ftp.uni-kl.de/pub/linux/opensuse/update/11.1
+http://ftp3.gwdg.de/pub/opensuse/update/11.1
+http://widehat.opensuse.org/update/11.1
+ftp://ftp4.gwdg.de/pub/opensuse/update/11.1
+http://ftp.uni-kassel.de/opensuse/update/11.1
+http://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/update/11.1
+ftp://ftp3.gwdg.de/pub/opensuse/update/11.1
+http://ftp4.gwdg.de/pub/opensuse/update/11.1
+ftp://suse.uni-leipzig.de/pub/ftp.opensuse.org/opensuse/update/11.1
+ftp://ftp.uni-kl.de/pub/linux/opensuse/update/11.1
+http://ftp.uni-bayreuth.de/linux/opensuse/update/11.1
+http://opensuse-linuxmigratio.at/update/11.1
+ftp://ftp.uni-kassel.de/pub/linux/opensuse/update/11.1
+http://ftp.uni-siegen.de/opensuse/update/11.1
+http://ftp.tu-ilmenau.de/mirror/opensuse/update/11.1
+http://ftp.uni-paderborn.de/pub/linux/opensuse/update/11.1
+ftp://ftp.uni-paderborn.de/pub/linux/opensuse/update/11.1
+http://ftp.klid.dk/ftp/opensuse/update/11.1
+http://ftp.estpak.ee/pub/suse/opensuse/update/11.1
+ftp://ftp.uni-siegen.de/pub/opensuse/update/11.1
+ftp://ftp.uni-bayreuth.de/linux/opensuse/update/11.1
+ftp://ftp.gui.uva.es/sites/opensuse.org/update/11.1
+http://ftp.rediris.es/pub/mirror/opensuse/update/11.1
+ftp://ftp.klid.dk/opensuse/update/11.1
+http://ftp.gui.uva.es/sites/opensuse.org/update/11.1
+http://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/update/11.1
+ftp://ftp.tu-ilmenau.de/mirror/opensuse/update/11.1
+http://opensuse.mirrors.proxad.net/opensuse/update/11.1
+ftp://opensuse.mirrors.proxad.net/mirrors/ftp.opensuse.org/opensuse/update/11.1
+http://mirror.ovh.net/opensuse/update/11.1
+http://suse.bifi.unizar.es/opensuse/update/11.1
+ftp://ftp.rediris.es/pub/mirror/opensuse/update/11.1
+http://fr2.rpmfind.net/linux/opensuse/update/11.1
+ftp://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/update/11.1
+http://opensuse.cict.fr/update/11.1
+ftp://mirror.cict.fr/opensuse/update/11.1
+http://www.mirrorservice.org/sites/download.opensuse.org/update/11.1
+http://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/update/11.1
+ftp://fr2.rpmfind.net/linux/opensuse/update/11.1
+http://anorien.csc.warwick.ac.uk/mirrors/download.opensuse.org/update/11.1
+ftp://anorien.csc.warwick.ac.uk/download.opensuse.org/update/11.1
+ftp://mirror.ovh.net/opensuse/update/11.1
+ftp://www.mirrorservice.org/sites/download.opensuse.org/update/11.1
+http://ftp.ntua.gr/pub/linux/opensuse/update/11.1
+http://ftp.fsn.hu/pub/linux/distributions/opensuse/update/11.1
+http://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/update/11.1
+ftp://ftp.fsn.hu/pub/linux/distributions/opensuse/update/11.1
+http://roxen.integrity.hu/pub/opensuse/update/11.1
+ftp://mirror.ox.ac.uk/sites/ftp.opensuse.org/pub/opensuse/update/11.1
+ftp://ftp.cc.uoc.gr/mirrors/linux/opensuse/opensuse/update/11.1
+http://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/update/11.1
+ftp://ftp.ntua.gr/pub/linux/opensuseupdate/11.1
+http://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/update/11.1
+ftp://ftp.esat.net/mirrors/ftp.opensuse.org/pub/opensuse/update/11.1
+http://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/update/11.1
+ftp://ftp.heanet.ie/mirrors/ftp.opensuse.org/opensuse/update/11.1
+ftp://ftp.novell.hu/pub/mirrors/ftp.opensuse.org/opensuse/update/11.1
+http://rm.mirror.garr.it/mirrors/opensuse/update/11.1
+http://repo1.linux.edu.lv/update/11.1
+http://mirror.leaseweb.com/opensuse/update/11.1
+ftp://rm.mirror.garr.it/mirrors/opensuseupdate/11.1
+http://mirrors.nl.eu.kernel.org/opensuse/update/11.1
+http://ftp1.nluug.nl/os/Linux/distr/opensuse/update/11.1
+ftp://mirrors.nl.eu.kernel.org/opensuse/update/11.1
+http://ftp2.nluug.nl/os/Linux/distr/opensuse/update/11.1
+ftp://mirror.leaseweb.com/opensuse/update/11.1
+ftp://ftp1.nluug.nl/pub/os/Linux/distr/opensuse/update/11.1
+http://opensuse.hro.nl/opensuse/update/11.1
+ftp://repo1.linux.edu.lv/update/11.1
+http://opensuse.uib.no/update/11.1
+ftp://ftp2.nluug.nl/pub/os/Linux/distr/opensuse/update/11.1
+http://ftp.uninett.no/pub/linux/opensuse/update/11.1
+ftp://ftp.uninett.no/pub/linux/opensuse/update/11.1
+ftp://opensuse.hro.nl/opensuse/update/11.1
+http://ftp.icm.edu.pl/pub/Linux/opensuse/update/11.1
+ftp://ftp.icm.edu.pl/pub/Linux/opensuse/update/11.1
+http://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/update/11.1
+ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/opensuse/update/11.1
+ftp://ftp.man.poznan.pl/pub/linux/opensuse/opensuse/update/11.1
+http://ftp.sileman.pl/pub/opensuse/update/11.1
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/update/11.1
+ftp://ftp.pbone.net/pub/opensuse/update/11.1
+http://cesium.di.uminho.pt/pub/opensuse/update/11.1
+ftp://ftp.man.szczecin.pl/pub/Linux/opensuse/opensuse/update/11.1
+ftp://ftp.sileman.pl/pub/opensuse/update/11.1
+http://ftp.nux.ipb.pt/pub/dists/opensuse/update/11.1
+ftp://ftp.nux.ipb.pt/pub/dists/opensuse/update/11.1
+http://ftp.gts.lug.ro/opensuse/update/11.1
+ftp://cesium.di.uminho.pt/pub/opensuse/update/11.1
+http://ftp.ines.lug.ro/opensuse/update/11.1
+ftp://ftp.ines.lug.ro/opensuse/update/11.1
+http://ftp.iasi.roedu.net/mirrors/opensuse.org/update/11.1
+http://mirrors.se.eu.kernel.org/opensuse/update/11.1
+ftp://ftp.pbone.net/pub/opensuse/update/11.1
+http://ftp.df.lth.se/pub/opensuse/update/11.1
+ftp://ftp.df.lth.se/pub/opensuseupdate/11.1
+ftp://ftp.gts.lug.ro/opensuse/update/11.1
+http://ftp.sunet.se/pub/Linux/distributions/opensuse/update/11.1
+http://less.cogeco.net/ftp/openSUSE/update/11.1
+ftp://ftp.iasi.roedu.net/mirrors/opensuse.org/update/11.1
+http://opensuse.ynet.sk/update/11.1
+ftp://mirrors.se.eu.kernel.org/opensuse/update/11.1
+http://www.muug.mb.ca/pub/opensuse/update/11.1
+http://linux.dell.com/repo/community/update/11.1
+ftp://www.muug.mb.ca/pub/opensuse/update/11.1
+http://ftp.osuosl.org/pub/opensuse/update/11.1
+http://opensuse.fastsoft.net/pub/linux/opensuse/update/11.1
+http://suse.mirrors.tds.net/pub/opensuse/update/11.1
+http://mirrors.med.harvard.edu/opensuse/update/11.1
+ftp://ftp.osuosl.org/pub/opensuse/update/11.1
+http://mirror.anl.gov/pub/opensuse/opensuse/update/11.1
+http://mirror.umoss.org/opensuse/update/11.1
+ftp://ftp.sunet.se/pub/Linux/distributions/opensuse/update/11.1
+http://opensuse.cs.utah.edu/update/11.1
+http://opensuse.ca.unixheads.org/update/11.1
+ftp://opensuse.cs.utah.edu/pub/opensuse/update/11.1
+ftp://opensuse.fastsoft.net/pub/linux/opensuse/update/11.1
+http://mirrors.xmission.com/opensuse/update/11.1
+ftp://mirror.anl.gov/pub/opensuse/opensuse/update/11.1
+ftp://suse.mirrors.tds.net/pub/opensuse/update/11.1
+http://mirrors2.kernel.org/opensuse/update/11.1
+ftp://mirrors.xmission.com/opensuse/update/11.1
+http://mirrors1.kernel.org/opensuse/update/11.1
+ftp://mirrors2.kernel.org/opensuse/update/11.1
+http://130.57.19.201/update/11.1
+ftp://mirrors1.kernel.org/opensuse/update/11.1
+ftp://mirror.rackspace.com/openSUSE/update/11.1
+ftp://130.57.19.201/pub/opensuse/update/11.1
+http://ftp.utexas.edu/opensuse/update/11.1
+ftp://mirror.colorado.edu/pub/opensuse/update/11.1
+http://mirror.rackspace.com/openSUSE/update/11.1
+ftp://www.gtlib.gatech.edu/pub/opensuse/update/11.1
+http://www.gtlib.gatech.edu/pub/opensuse/update/11.1
+ftp://ftp.utexas.edu/mirrors/opensuse/update/11.1
+http://ftp.ussg.iu.edu/linux/opensuse/update/11.1
+http://distro.ibiblio.org/pub/linux/distributions/opensuse/update/11.1
+http://mirror.cps.cmich.edu/opensuse/opensuse/update/11.1
+http://mirror.nyi.net/opensuse/update/11.1
+ftp://mirror.colorado.edu/pub/opensuse/update/11.1
+http://mirrors.rit.edu/opensuse/update/11.1
+http://ftp.iinet.net.au/pub/opensuse/update/11.1
+ftp://mirror.nyi.net/opensuseupdate/11.1
+http://mirror.internode.on.net/pub/opensuse/update/11.1
+http://mirror.pacific.net.au/linux/opensuse/update/11.1
+ftp://ftp.iinet.net.au/pub/opensuse/update/11.1
+http://mirror.aarnet.edu.au/pub/opensuse/opensuse/update/11.1
+http://200.221.9.37/pub/opensuse/update/11.1
+http://opensuse.c3sl.ufpr.br/update/11.1
+http://opensuse.pop.com.br/update/11.1
+http://opensuse.patan.com.ar/update/11.1
+ftp://mirror.internode.on.net/pub/opensuse/update/11.1
+ftp://mirror.pacific.net.au/linux/opensuse/update/11.1
+ftp://mirror.aarnet.edu.au/pub/opensuse/opensuse/update/11.1
+ftp://opensuse.c3sl.ufpr.br/opensuse/update/11.1
diff --git a/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/group b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/group
new file mode 100644
index 00000000..505cb221
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/group
@@ -0,0 +1,33 @@
+root:x:0:
+bin:x:1:daemon
+daemon:x:2:
+sys:x:3:
+tty:x:5:
+disk:x:6:
+lp:x:7:
+www:x:8:
+kmem:x:9:
+wheel:x:10:
+mail:x:12:
+news:x:13:
+uucp:x:14:
+shadow:x:15:
+dialout:x:16:
+audio:x:17:
+floppy:x:19:
+cdrom:x:20:
+console:x:21:
+utmp:x:22:
+public:x:32:
+video:x:33:
+games:x:40:
+xok:x:41:
+trusted:x:42:
+modem:x:43:
+ftp:x:49:
+man:x:62:
+users:x:100:
+nobody:x:65533:
+nogroup:x:65534:nobody
+messagebus:!:101:
+haldaemon:!:102:
diff --git a/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/hosts b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/hosts
new file mode 100644
index 00000000..75721cd5
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/hosts
@@ -0,0 +1 @@
+127.0.0.1 localhost
diff --git a/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/passwd b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/passwd
new file mode 100644
index 00000000..9b8fc4fe
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/passwd
@@ -0,0 +1,14 @@
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/bin:/bin/bash
+daemon:x:2:2:Daemon:/sbin:/bin/bash
+lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
+mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
+news:x:9:13:News system:/etc/news:/bin/bash
+uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
+games:x:12:100:Games account:/var/games:/bin/bash
+man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
+wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
+ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
+nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
+messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false
+haldaemon:x:101:102:User for haldaemon:/var/run/hal:/bin/false
diff --git a/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/shadow b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/shadow
new file mode 100644
index 00000000..cd100a5a
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/prereqfiles/etc/shadow
@@ -0,0 +1,14 @@
+root::13481::::::
+bin:*:13481::::::
+daemon:*:13481::::::
+lp:*:13481::::::
+mail:*:13481::::::
+news:*:13481::::::
+uucp:*:13481::::::
+games:*:13481::::::
+man:*:13481::::::
+wwwrun:*:13481::::::
+ftp:*:13481::::::
+nobody:*:13481::::::
+messagebus:!:13481:0::7:::
+haldaemon:!:13481:0::7:::
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc
new file mode 100644
index 00000000..ac75d62a
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQGiBEHtkpsRBACRHiXh3olS++6/Mp9N7ByGMmjaaE+Y8cJQLUPG1myrbW5aogIP
+0WenayhGbbgOHNWgd5dQ8KQpYYFoQuUHjFYzj5MvgrdOENOvD7ZNJ6+EmbkNh5cV
+zUYfNG9jdiGweZkyA1sh8DYS0JiUmQ4CzaBD/DotB/dCmDcyuNQFiw4qKwCglQah
+ATyueBRsOiXl0NIs1uB6dkkD/1A2YmQ6te1q38a1J+a8os6bDlMZhVnkZdhJdw6x
+eBwUb9XS0n7hyt/AKCcBnrDEUQJuhBMNgzctJvbuMv27yRMANAXZDQkp0ip/yHLJ
+PhUdSNTTRHOL9bV3t+JuZ9xmuclprwyrrJYUkEESXNc0tkuczHBP2c/RqA3OxYHt
+hrHLA/9Pqe2gEleeo8l26u/uFXs2dtwjh8EZmdhHoqGcOlpYR4DyAg2D+jYfh3RI
+oPzIwRlHVUR1ii5h8iPi98BVuEvukwfbbQ1K22Jwzxt6w3ihCXBKWKbeC3ElIMfA
+hVMchLFUbTAw+yodO/u3NHxKQ34+ginid9dVyxV5T0gpDEEHObQrT3BlbiBFbnRl
+cnByaXNlIFNlcnZlciA8c3VwcG9ydEBub3ZlbGwuY29tPoheBBMRAgAeBQJB7ZKb
+AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEHPSXWMN+zGID4oAoJPTGZbZApW+
+tuU422mHYGwoqgjrAJ9fhzRhRbV3YsOxKUomNeuIfmWGXA==
+=Qv5+
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc
new file mode 100644
index 00000000..57a9078a
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-307e3d54-481f30aa.asc
@@ -0,0 +1,13 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mIsERCAdXQEEAL7MrBTz+3SBWpCm2ae2yaDqV3ezQcs2JlvqidJVhsZqQe9/jkxi
+KTEQW5+TXF/+BlQSiebunRI7oo3+9U8GyRCgs1sf+yRQWMLzZqRaarzRhw9w+Ihl
+edtqYl6/U2JZCb8Adp6d7RzlRliJdJ/VtsfXj2ef7Dwu7elOVSsmaBdtAAYptChT
+dVNFIFBhY2thZ2UgU2lnbmluZyBLZXkgPGJ1aWxkQHN1c2UuZGU+iLgEEwECACIC
+GwMECwcDAgMVAgMDFgIBAh4BAheABQJIHzCqBQkHwXpNAAoJEOOlw2Awfj1UvWgE
+AIRoxE8S6jQB7S43SVcX06FHJeUJ/m+1ErIj9LwJTYrR/8qsDjTgrttgb+nBHkIj
+NhCCLAuR8sWj3CxsUMH2fayryNnwZEWGqnzo7Jtt4R1Ur3h5pHYonFjfoJyFUZjJ
+7Mhw7/TuOWx20FrzqBi8tbHx8pd7Fa5lCUgopVtMh6GR
+=R56j
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc
new file mode 100644
index 00000000..80380d2f
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQENAzbhLQQAAAEIAKAkXHe0lWRBXLpn38hMHy03F0I4Sszmoc8aaKJrhfhyMlOA
+BqvklPLE2f9UrI4Xc860gH79ZREwAgPt0pi6+SleNFLNcNFAuuHMLQOOsaMFatbz
+JR9i4m/lf6q929YROu5zB48rBAlcfTm+IBbijaEdnqpwGib45wE/Cfy6FAttBHQh
+1Kp+r/jPbf1mYAvljUfHKuvbg8t2EIQz/5yGp+n5trn9pElfQO2cRBq8LFpf1l+U
+P7EKjFmlOq+Gs/fF98/dP3DfniSd78LQPq5vp8RL8nr/o2i7jkAQ33m4f1wOBWd+
+cZovrKXYlXiR+Bf7m2hpZo+/sAzhd7LmAD0l09kABRG0JVN1U0UgU2VjdXJpdHkg
+VGVhbSA8c2VjdXJpdHlAc3VzZS5kZT6JARUDBRA24S1H5Fiyh7HKPEUBAVcOB/9b
+yHYji1/+4Xc2GhvXK0FSJN0MGgeXgW47yxDL7gmR4mNgjlIOUHZj0PEpVjWepOJ7
+tQS3L9oP6cpj1Fj/XxuLbkp5VCQ61hpt54coQAvYrnT9rtWEGN+xmwejT1WmYmDJ
+xG+EGBXKr+XP69oIUl1E2JO3rXeklulgjqRKos4cdXKgyjWZ7CP9V9daRXDtje63
+Om8gwSdU/nCvhdRIWp/Vwbf7Ia8iZr9OJ5YuQl0DBG4qmGDDrvImgPAFkYFzwlqo
+choXFQ9y0YVCV41DnR+GYhwl2qBd81T8aXhihEGPIgaw3g8gd8B5o6mPVgl+nJqI
+BkEYGBusiag2pS6qwznZiQEVAwUQNuEtBHey5gA9JdPZAQFtOAf+KVh939b0J94u
+v/kpg4xs1LthlhquhbHcKNoVTNspugiC3qMPyvSX4XcBr2PC0cVkS4Z9PY9iCfT+
+x9WM96g39dAF+le2CCx7XISk9XXJ4ApEy5g4AuK7NYgAJd39PPbERgWnxjxir9g0
+Ix30dS30bW39D+3NPU5Ho9TD/B7UDFvYT5AWHl3MGwo3a1RhTs6sfgL7yQ3U+mvq
+MkTExZb5mfN1FeaYKMopoI4VpzNVeGxQWIz67VjJHVyUlF20ekOz4kWVgsxkc8G2
+saqZd6yv2EwqYTi8BDAduweP33KrQc4KDDommQNDOXxaKOeCoESIdM4p7Esdjq1o
+L0oixF12CohGBBARAgAGBQI7HmHDAAoJEJ5A4xAACqukTlQAoI4QzP9yjPohY7OU
+F7J3eKBTzp25AJ42BmtSd3pvm5ldmognWF3Trhp+GYkAlQMFEDe3O8IWkDf+zvyS
+FQEBAfkD/3GG5UgJj18UhYmh1gfjIlDcPAeqMwSytEHDENmHC+vlZQ/p0mT9tPiW
+tp34io54mwr+bLPN8l6B5GJNkbGvH6M+mO7R8Lj4nHL6pyAv3PQr83WyLHcaX7It
+Klj371/4yzKV6qpz43SGRK4MacLo2rNZ/dNej7lwPCtzCcFYwqkiiEYEEBECAAYF
+AjoaQqQACgkQx1KqMrDf94ArewCfWnTUDG5gNYkmHG4bYL8fQcizyA4An2eVo/n+
+3J2KRWSOhpAMsnMxtPbB
+=Ay23
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc
new file mode 100644
index 00000000..aaec909b
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-3dbdc284-49144c3f.asc
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQENBEkUTD8BCADWLy5d5IpJedHQQSXkC1VK/oAZlJEeBVpSZjMCn8LiHaI9Wq3G
+3Vp6wvsP1b3kssJGzVFNctdXt5tjvOLxvrEfRJuGfqHTKILByqLzkeyWawbFNfSQ
+93/8OunfSTXC1Sx3hgsNXQuOrNVKrDAQUqT620/jj94xNIg09bLSxsjN6EeTvyiO
+mtE9H1J03o9tY6meNL/gcQhxBvwuo205np0JojYBP0pOfN8l9hnIOLkA0yu4ZXig
+oKOVmf4iTjX4NImIWldT+UaWTO18NWcCrujtgHueytwYLBNV5N0oJIP2VYuLZfSD
+VYuPllv7c6O2UEOXJsdbQaVuzU1HLocDyipnABEBAAG0NG9wZW5TVVNFIFByb2pl
+Y3QgU2lnbmluZyBLZXkgPG9wZW5zdXNlQG9wZW5zdXNlLm9yZz6JATwEEwECACYF
+AkkUTD8CGwMFCQPCZwAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRC4iy/UPb3C
+hIE9B/9DUwwQ5c+8xW0x2Fli5Yn1P+4Wq3nmB+ZTpM5Q1a7A2l+HhpUBsnwx2e/4
+RuXlJ06uYby8UpXCli44jXFepJgiXp7ZRPX5A06aY9Pz0wawsMtYQS716+vSV3e3
+ynZmTGKxj8Z94TEVcEjMP1/XpjW22DcpItRJX2VCW7lUXDmRfQzBEolcfwlF7a1B
+VcSqGZX8JvuTocLX/+fYBhZYQvERw6PUVGoEskMXMoRg6PqWMesW9Bq3cm8oeBa2
+4YmGLkN2ztBIbqRMSv0binKcddHHvRlxVFRXrnnlXrEPKrx9Fbu4vkqrG+EKE6+v
+GO73ROyEcJuuoJTYsKPx6Uic5gRl
+=guZP
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc
new file mode 100644
index 00000000..f0bb55a3
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-56b4177a-47965b33.asc
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQGiBEeWWzMRBADU8l2IckSzgdUS1dn0WMM7wXK4seoFsHHQw/0unHCQCxpyDMnn
+TKV86p5KTbR1FDdeaZlY0yCV+IGsiIxLyuUdJn8vuA5gA5ZkUr89/HtWaeZVl77J
+HIQxvhDRBWCOO4QNtrZYWvGbvl83wl/zOfdLEs8IGElt0LgfohyTA1qfrwCg/Hac
+tDDscXsPlo5Jek/+3RHVeD0D/30riCpfpLJOmhraLg1EbWsE0mN9IQsl+WDPdoYo
+bB76z6eH3e38618WzP/LTG4WuVbwpSSqmXyfdVpXxWzESfT8q0B8CGpHf/Sa/T/L
+emohmRnLvkf/tAfxFmDMm1jOewJIE9S35jANGHVJcxmfRNpPWC7uHnqjopnsmDkL
+kMEdBAC6YcpDOcMJZ9sJbt/JNZBaoT5CltgMDlSN50t2v/J5em8qMLqCSNF5UJyd
+LFnePHTHy6gVjWbqcC0ncFzOqM1y644Up7BoKSAr1hRTl6Mw9S3UfZZZ0al3JtWt
+8y0eFIW3QP66w1AL0LO2bZMBuOvhb63DXv5iHorcxk0yIFbbybRCb3BlblNVU0U6
+RmFjdG9yeSBPQlMgUHJvamVjdCA8b3BlblNVU0U6RmFjdG9yeUBidWlsZC5vcGVu
+c3VzZS5vcmc+iGYEExECACYFAkeWWzMCGwMFCQQesAAGCwkIBwMCBBUCCAMEFgID
+AQIeAQIXgAAKCRAcchwkVrQXevBsAKCOeScnlH2fWVBJGHTOVJ3M4yBqDACbBeNk
+PuWo05AOQ3M1dLE1hkN36G+IRgQTEQIABgUCR5ZbMwAKCRA7MBG3a51lI7PfAKCc
+9ZtKfI5G/g66V7pSMXh9gi+ykgCgivPfGMDh9HIROwBIudo2qGImOqI=
+=htdw
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc
new file mode 100644
index 00000000..74ff59e0
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-7e2e3b05-4816488f.asc
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQGiBER0iroRBADfqUeJmPCXqPJFnf3CVKy40dL1F+gfvP+JHN7/uu4c9+oCYjI1
+uAE8iGTm/Twb/Zzbs4dt0iWjhNFXbRi42rMww4d/8QcPYZ21WSehh+fv8nCjt2sw
+LeC87ar2SR8OTpJBK0fQlcd4e6H5GMntfI6SYEUOPd8m/eQ+4+1AxpUUpwCgswaF
+13fePZGI//pDn5tGjbvmaP8D/R3qum/I+oDS8lbFeeDS10GkEkwTYec13gdfsq6I
+yzIj7VBsC+rGfbipv+VGR61Q4d19pOHKLDekr9OG+3G4ZcYM4NQvQZR+QIlp3xWu
+nBmYD1LRkHLVj+Z4DGQhjjOffkPSuacKPymMaZ/aRiLgTIAo97W2YPhutscXrLSG
+2Y+BA/4jsyaDb7kbW4wc8RtPIcuFEheVqgBeRakP9Uj47kBMBEpPtI/mIdY5liKk
+ztKnuQG6ROYLNV/PW0ZbE1uT64C710weh4cB3PnZLV5P10deDLBjHk8MJQGCTSDD
+JYvhutUzQfshAU6j2kErGvKdZxWGezab34vFyMP2oLGqswPAJrRQTm92ZWxsIFBy
+b3ZvIEJ1aWxkIChDb250YWN0IHNlY3VyaXR5QG5vdmVsbC5jb20pIDxub3ZlbGwt
+cHJvdm8tYnVpbGRAbm92ZWxsLmNvbT6IZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQW
+AgMBAh4BAheABQJIFkiPBQkHhmvVAAoJEBTCi8l+LjsFn4QAn2wgOHudNubNZvTz
+NdaYJKJ0m2qnAJ9hd0nQBhn28H4Ii4a4h7kpGWRxN4hGBBMRAgAGBQJEexD/AAoJ
+EKhO2uicgArKFLwAn0B+g2mJ5n8LrBziTQ5SjnSPyDBXAJwJoYTta5Sfw/3vVGpU
+fJAKVDoB9w==
+=MWDN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc
new file mode 100644
index 00000000..daeef8a5
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-9c800aca-481f343a.asc
@@ -0,0 +1,37 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQGiBDnu9IERBACT8Y35+2vv4MGVKiLEMOl9GdST6MCkYS3yEKeueNWc+z/0Kvff
+4JctBsgs47tjmiI9sl0eHjm3gTR8rItXMN6sJEUHWzDP+Y0PFPboMvKx0FXl/A0d
+M+HFrruCgBlWt6FA+okRySQiliuI5phwqkXefl9AhkwR8xocQSVCFxcwvwCglVcO
+QliHu8jwRQHxlRE0tkwQQI0D+wfQwKdvhDplxHJ5nf7U8c/yE/vdvpN6lF0tmFrK
+XBUX+K7u4ifrZlQvj/81M4INjtXreqDiJtr99Rs6xa0ScZqITuZC4CWxJa9GynBE
+D3+D2t1V/f8l0smsuYoFOF7Ib49IkTdbtwAThlZp8bEhELBeGaPdNCcmfZ66rKUd
+G5sRA/9ovnc1krSQF2+sqB9/o7w5/q2qiyzwOSTnkjtBUVKn4zLUOf6aeBAoV6NM
+CC3Kj9aZHfA+ND0ehPaVGJgjaVNFhPi4x0e7BULdvgOoAqajLfvkURHAeSsxXIoE
+myW/xC1sBbDkDUIBSx5oej73XCZgnj/inphRqGpsb+1nKFvF+rQoU3VTRSBQYWNr
+YWdlIFNpZ25pbmcgS2V5IDxidWlsZEBzdXNlLmRlPohiBBMRAgAiAhsDBAsHAwID
+FQIDAxYCAQIeAQIXgAUCSB80OgUJEfKmuQAKCRCoTtronIAKyuJlAJ0cWZifmBO6
+Eh71jattipdMhUYBTwCfSXbJJtuF3c96JPmpmT8be2LDo86IRgQQEQIABgUCOnBe
+UgAKCRCeQOMQAAqrpNzOAKCL512FZvv4VZx94TpbA9lxyoAejACeOO1HIbActAev
+k5MUBhNeLZa/qM2JARUDBRA6cGBvd7LmAD0l09kBATWnB/9An5vfiUUE1VQnt+T/
+EYklES3tXXaJJp9pHMa4fzFa8jPVtv5UBHGee3XoUNDVwM2OgSEISZxbzdXGnqIl
+cT08TzBUD9i579uifklLsnr35SJDZ6ram51/CWOnnaVhUzneOA9gTPSr+/fT3WeV
+nwJiQCQ30kNLWVXWATMnsnT486eAOlT6UNBPYQLpUprF5Yryk23pQUPAgJENDEqe
+U6iIO9Ot1ZPtB0lniw+/xCi13D360o1tZDYOp0hHHJN3D3EN8C1yPqZd5CvvznYv
+B6bWBIpWcRgdn2DUVMmpU661jwqGlRz1F84JG/xe4jGuzgpJt9IXSzyohEJB6XG5
++D0BuQINBDnu9JIQCACEkdBN6Mxf5WvqDWkcMRy6wnrd9DYJ8UUTmIT2iQf07tRU
+KJJ9v0JXfx2Z4d08IQSMNRaq4VgSe+PdYgIy0fbj23Via5/gO7fJEpD2hd2f+pMn
+OWvH2rOOIbeYfuhzAc6BQjAKtmgR0ERUTafTM9Wb6F13CNZZNZfDqnFDP6L12w3z
+3F7FFXkz07Rs3AIto1ZfYZd4sCSpMr/0S5nLrHbIvGLp271hhQBeRmmoGEKO2JRe
+lGgUJ2CUzOdtwDIKT0LbCpvaP8PVnYF5IFoYJIWRHqlEt5ucTXstZy7vYjL6vTP4
+l5xs+LIOkNmPhqmfsgLzVo0UaLt80hOwc4NvDCOLAAMGB/9g+9V3ORzw4LvO1pwR
+YJqfDKUq/EJ0rNMMD4N8RLpZRhKHKJUm9nNHLbksnlZwrbSTM5LpC/U6sheLP+l0
+bLVoq0lmsCcUSyh+mY6PxWirLIWCn/IAZAGnXb6Zd6TtIJlGG6pqUN8QxGJYQnon
+l0uTJKHJENbI9sWHQdcTtBMc34gorHFCo1Bcvpnc1LFLrWn7mfoGx6INQjf3HGQp
+MXAWuSBQhzkazY6vaWFpa8bBJ+gKbBuySWzNm3rFtT5HRKMWpO+M9bHp4d+puY0L
+1YwN1OMatcMMpcWnZpiWiR83oi32+xtWUY2U7Ae38mMag8zFbpeqPQUsDv9V7CAJ
+1dbriEwEGBECAAwFAkgfNGYFCRHyptQACgkQqE7a6JyACsrv3ACbBLhafFXmTjH3
+JJWFJGWuIOaZUosAniPs4feEyN46gjXGgcZc2Ai8nkm6
+=mY6G
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc
new file mode 100644
index 00000000..8467c19b
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/gpg-pubkey-a1912208-446a0899.asc
@@ -0,0 +1,31 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.9 (GNU/Linux)
+
+mQILBERqCJkBEACdqhZWdAbUHLIumXMEgv+GFjr1ZzVHgynnFOzztU/8sxZNa9cm
+YV4HZpVfjMr7fos3ArzyiPPt/336cf7w9p79/ZS4rHSNPDMlPCtXYvFxUbvU0/GY
+q4jwcBsrJ0xaJ9CP5bWyAgVKOb7Y6k0ktaLjRR+tDfMsHA4H0ClMoRr6ATw8NL0e
+VCfAHuzqCKvX1If8ng+wTivtAhKvz/WwQiELNELmPfc5tZHOw8NgP/r0Pze18Hn2
+dlAHu0WpC7uoR00vscsMIJiJJPcsxbL1F1eADKnk+wEy8Go+EJeJ5i0WoFbqD52q
+Lv/C/oY6NVtVY0MBwtn+oQNSnQ4JBsB/Akdt53LAi0ZtNQxMyUW+76R8FCOmVCV8
+WGiF5CPRP0yvG80AMBjBjKjHb/v8ov5MnIyFimzAHS1gQcUNxTEYA/5eFwoYcGcK
+weGq9FUjPTzLQAgvp7XmOzHpSAfJ7qysxFTepNsSZZhgizJyInrdQldr+GYcUNqB
+krD9MWmFop975OxhCTEnNv/HcE79r8WD26HzDFYxTiTJbr0pU/ivBzo+rjq+YG2V
+stJk+udVYmZTnC4LmXus8JiNuqBXbxNscwCBpcJ8YcfCV6uh+7E0XfXZsgVUFLp1
+NF+ylYRGTycOlWoZODrnJevZW7N9O3bWRx/G2P4bJD07LsDLe4i5hymf5QAGKbRQ
+Tm92ZWxsIFByb3ZvIEJ1aWxkIChDb250YWN0IHNlY3VyaXR5QG5vdmVsbC5jb20p
+IDxub3ZlbGwtcHJvdm8tYnVpbGRAbm92ZWxsLmNvbT6JAjMEEwECAB0FAkRqCJkG
+CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBHijLooZEiCKSFD/93vZHCAMLEfksU
+KnvXl08bv1rfuamuyJnE3ANRE5RDyypriHMCnkVxazvQ2WI4W4UEjluL9+SzZwtV
+ZvKVoAr31614nSyWwv2YnJTHfjMG+xRlkolZMnuIiB9PcCBo9+GPU0ABuzo4pEJW
+NIRoSS1NFbAZBhtUnY0cN+trM5QObLl7xXTavLyGk//blkk57fov7GXsQJlZUig0
+l2yt5XNyGpLUnTMDumHh8b389quF+0+ZfdwOy7A768xjipAZiTvIujBrEv51wrxh
+0HBT0VGA0MhD9t0B+Ce4BM9P/iVMO00naaOp6PqMfPPKxQQqer8qy1i6UWBx95SY
+mKZBIvOm2d9PezDxkckCu61r6krx1iKnT1wdprCAkIYwALK118SpbxuyGW0bhRHc
+wsc/akzWH72fS0Xu49mvL4k4A2U9asdeQid3dMgbtm5mSWof0yiU/G4YNn0yeXoY
+oG1VbCAqQbFX1Rvd6GITJVqI+ekW/uMA9BP78dF8wBeG0+QmpQnSf+eOsxB/RT8o
+Kb4hHY+29MUlg+i9ceVt7hoKr03J/uIG5TXFXRYLaI0iAFVlKfWxpqDfS2XA4+dD
+VYt+5RDgBcnxDaTB4FE9GqcYScNfe7+NFtL0p0wOPftbmgZzGjucTmrD8mDUNdqA
+xGK7vlk4GATSfOQlq7G6LXW6RYnInohGBBMRAgAGBQJEazMlAAoJEKhO2uicgArK
+2vMAn0TbVDESEVKVuFZStrfIzOvJQrR9AJsH733Ju1kE99GFrdfCeGqpckmNhg==
+=E+qN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/pubring.gpg b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/pubring.gpg
new file mode 100644
index 00000000..5bd5a78e
--- /dev/null
+++ b/lib/distro-info/suse-11.2_x86_64/trusted-package-keys/pubring.gpg
Binary files differ
diff --git a/lib/distro-info/ubuntu-10.04/mirrors/base b/lib/distro-info/ubuntu-10.04/mirrors/base
new file mode 100644
index 00000000..cddbef70
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/mirrors/base
@@ -0,0 +1,162 @@
+http://archive.ubuntu.com.ba/ubuntu
+http://archive.ubuntu.com/ubuntu
+ftp://br.archive.ubuntu.com/ubuntu
+ftp://bw.archive.ubuntu.com/ubuntu
+http://cl.archive.ubuntu.com/ubuntu
+http://cudlug.cudenver.edu/ubuntu
+http://cz.archive.ubuntu.com/ubuntu
+ftp://darkstar.ist.utl.pt/pub/ubuntu/archive
+http://darkstar.ist.utl.pt/ubuntu/archive
+http://de.archive.ubuntu.com/ubuntu
+http://debian.charite.de/ubuntu
+http://debian.linux.org.tw/ubuntu
+http://dk.archive.ubuntu.com/ubuntu
+http://es.archive.ubuntu.com/ubuntu
+http://espelhos.edugraf.ufsc.br/ubuntu
+ftp://free.nchc.org.tw/ubuntu
+http://ftp-stud.fht-esslingen.de/Mirrors/ubuntu
+http://ftp-stud.hs-esslingen.de/ubuntu
+http://ftp.belnet.be/linux/ubuntu/ubuntu
+http://ftp.belnet.be/pub/mirror/ubuntu.com/ubuntu
+http://ftp.caliu.info/pub/distribucions/ubuntu/ubuntu
+http://ftp.chg.ru/pub/Linux/ubuntu/archive
+ftp://ftp.ciril.fr/pub/linux/ubuntu/archives
+http://ftp.citylink.co.nz/ubuntu
+http://ftp.crihan.fr/ubuntu
+ftp://ftp.cw.net/pub/linux/ftp.ubuntu.com/ubuntu
+http://ftp.cw.net/ubuntu
+http://ftp.dateleco.es/ubuntu
+http://ftp.dei.uc.pt/pub/linux/ubuntu/archive
+http://ftp.duth.gr/pub/ubuntu
+http://ftp.ecc.u-tokyo.ac.jp/ubuntu
+http://ftp.estpak.ee/ubuntu
+ftp://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.freepark.org/ubuntu
+ftp://ftp.fu-berlin.de/linux/ubuntu
+ftp://ftp.funet.fi/pub/mirrors/archive.ubuntu.com
+http://ftp.gil.di.uminho.pt/ubuntu
+ftp://ftp.gtlib.gatech.edu/pub/ubuntu
+http://ftp.gui.uva.es/sites/ubuntu.com/ubuntu
+http://ftp.heanet.ie/pub/ubuntu
+http://ftp.hosteurope.de/mirror/archive.ubuntu.com
+ftp://ftp.iinet.net.au/pub/ubuntu
+ftp://ftp.iitm.ac.in/ubuntu
+http://ftp.kaist.ac.kr/pub/ubuntu
+http://ftp.kfki.hu/linux/ubuntu
+ftp://ftp.kfki.hu/pub/linux/ubuntu
+http://ftp.leg.uct.ac.za/pub/linux/ubuntu
+http://ftp.linux.edu.lv/ubuntu
+ftp://ftp.linux.org.tr/pub/ubuntu
+http://ftp.lug.ro/ubuntu
+ftp://ftp.man.szczecin.pl/pub/Linux/ubuntu
+ftp://ftp.mipt.ru/mirror/ubuntu
+ftp://ftp.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://ftp.netspace.net.au/pub/ubuntu
+http://ftp.ntua.gr/pub/linux/ubuntu
+ftp://ftp.oleane.net/ubuntu
+ftp://ftp.otenet.gr/ubuntu
+http://ftp.port80.se/ubuntu
+http://ftp.pwr.wroc.pl/ubuntu
+ftp://ftp.rrzn.uni-hannover.de/pub/mirror/linux/ubuntu
+ftp://ftp.science.nus.edu.sg/pub/ubuntu
+http://ftp.science.nus.edu.sg/ubuntu
+http://ftp.stw-bonn.de/ubuntu
+http://ftp.ticklers.org/archive.ubuntu.org/ubuntu
+ftp://ftp.tiscali.nl/pub/mirror/ubuntu
+http://ftp.tiscali.nl/ubuntu
+http://ftp.tu-chemnitz.de/pub/linux/ubuntu
+ftp://ftp.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://ftp.tuke.sk/ubuntu
+http://ftp.twaren.net/Linux/Ubuntu/ubuntu
+http://ftp.u-picardie.fr/mirror/ubuntu/ubuntu
+ftp://ftp.uasw.edu/linux/ubuntu/archive
+http://ftp.ucr.ac.cr/ubuntu
+http://ftp.udc.es/ubuntu
+http://ftp.uni-kl.de/pub/linux/ubuntu
+http://ftp.uni-muenster.de/pub/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.unina.it/pub/linux/distributions/ubuntu
+http://ftp.uninett.no/ubuntu
+http://ftp.usf.edu/pub/ubuntu
+http://ftp.ussg.iu.edu/linux/ubuntu
+ftp://ftp.vectranet.pl/ubuntu
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/ubuntu/archives
+ftp://ftpserv.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://gd.tuwien.ac.at/opsys/linux/ubuntu/archive
+http://godel.cs.bilgi.edu.tr/ubuntu
+http://gulus.USherbrooke.ca/ubuntu
+http://hr.archive.ubuntu.com/ubuntu
+http://ie.archive.ubuntu.com/ubuntu
+http://klid.dk/ftp/ubuntu
+ftp://klid.dk/ubuntu
+http://kr.archive.ubuntu.com/ubuntu
+http://lug.mtu.edu/ubuntu
+http://mir1.ovh.net/ubuntu
+http://mirror.anl.gov/pub/ubuntu
+http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive
+http://mirror.cs.umn.edu/ubuntu
+http://mirror.hgkz.ch/ubuntu
+http://mirror.imbrandon.com/ubuntu
+http://mirror.lcsee.wvu.edu/ubuntu
+http://mirror.letsopen.com/os/ubuntu
+http://mirror.lupaworld.com/ubuntu/archive
+http://mirror.nttu.edu.tw/ubuntu
+http://mirror.optus.net/ubuntu
+http://mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu
+http://mirror.pacific.net.au/linux/ubuntu
+http://mirror.rootguide.org/ubuntu
+http://mirror.switch.ch/ftp/mirror/ubuntu
+ftp://mirror.switch.ch/mirror/ubuntu
+http://mirror.uni-c.dk/ubuntu
+http://mirror.utdlug.org/linux/distributions/ubuntu/packages
+http://mirrors.cat.pdx.edu/ubuntu
+http://mirrors.ccs.neu.edu/archive.ubuntu.com
+ftp://mirrors.ccs.neu.edu/net/mirrors/archive.ubuntu.com
+http://mirrors.cs.wmich.edu/ubuntu
+ftp://mirrors.easynews.com/linux/ubuntu
+http://mirrors.kernel.org/ubuntu
+http://mirrors.nic.funet.fi/ubuntu
+http://mirrors.shlug.org/ubuntu
+ftp://mirrors.virginmedia.com/mirrors/ubuntu/archive
+http://mirrors.xmission.com/ubuntu
+http://mt.archive.ubuntu.com/ubuntu
+http://na.mirror.garr.it/mirrors/ubuntu-archive
+ftp://neacm.fe.up.pt/pub/ubuntu
+http://neacm.fe.up.pt/ubuntu
+http://nl.archive.ubuntu.com/ubuntu
+http://nl2.archive.ubuntu.com/ubuntu
+http://nz2.archive.ubuntu.com/ubuntu
+http://packages.midian.hu//pub/linux/distributions/ubuntu
+http://se.archive.ubuntu.com/ubuntu
+http://sft.if.usp.br/ubuntu
+http://snert.mi.hs-heilbronn.de/pub/ubuntu/ubuntu
+http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/ubuntu/ubuntu
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/ubuntu/ubuntu
+http://tezcatl.fciencias.unam.mx/ubuntu
+http://th.archive.ubuntu.com/ubuntu
+ftp://tw.archive.ubuntu.com/ubuntu
+http://ubuntu-archive.datahop.it/ubuntu
+http://ubuntu.c3sl.ufpr.br/ubuntu
+http://ubuntu.cn99.com/ubuntu
+http://ubuntu.cs.utah.edu/ubuntu
+http://ubuntu.csie.nctu.edu.tw/ubuntu
+http://ubuntu.eriders.ge/ubuntu
+http://ubuntu.fastbull.org/ubuntu
+http://ubuntu.indika.net.id/ubuntu
+http://ubuntu.inode.at/ubuntu
+http://ubuntu.intergenia.de/ubuntu
+http://ubuntu.ipacct.com/ubuntu
+http://ubuntu.lhi.is/ubuntu
+http://ubuntu.linux-bg.org/ubuntu
+http://ubuntu.mirror.frontiernet.net/ubuntu
+http://ubuntu.mirror.rafal.ca/ubuntu
+http://ubuntu.mirrors.skynet.be/pub/ubuntu.com/ubuntu
+http://ubuntu.snet.uz/ubuntu
+http://ubuntu.supp.name/ubuntu
+http://ubuntu.task.gda.pl/ubuntu
+http://ubuntu.univ-nantes.fr/ubuntu
+http://ubuntu.uz/ubuntu
+http://ubuntu.ynet.sk/ubuntu
+http://www.gtlib.gatech.edu/pub/ubuntu
+http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://www.nic.funet.fi/pub/mirrors/archive.ubuntu.com
+ftp://yu.archive.ubuntu.com/ubuntu
diff --git a/lib/distro-info/ubuntu-10.04/mirrors/base_security b/lib/distro-info/ubuntu-10.04/mirrors/base_security
new file mode 100644
index 00000000..3617b3dd
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/mirrors/base_security
@@ -0,0 +1,162 @@
+http://archive.ubuntu.com.ba/ubuntu
+http://archive.ubuntu.com/ubuntu
+http://br.archive.ubuntu.com/ubuntu
+http://bw.archive.ubuntu.com/ubuntu
+http://cl.archive.ubuntu.com/ubuntu
+http://cudlug.cudenver.edu/ubuntu
+ftp://cz.archive.ubuntu.com/MIRRORS/archive.ubuntu.com/mirror/ubuntu
+http://cz.archive.ubuntu.com/ubuntu
+ftp://darkstar.ist.utl.pt/pub/ubuntu/archive
+http://darkstar.ist.utl.pt/ubuntu/archive
+http://de.archive.ubuntu.com/ubuntu
+http://debian.charite.de/ubuntu
+http://debian.linux.org.tw/ubuntu
+http://dk.archive.ubuntu.com/ubuntu
+http://es.archive.ubuntu.com/ubuntu
+http://espelhos.edugraf.ufsc.br/ubuntu
+http://free.nchc.org.tw/ubuntu
+http://ftp-stud.fht-esslingen.de/Mirrors/ubuntu
+http://ftp-stud.hs-esslingen.de/ubuntu
+http://ftp.belnet.be/linux/ubuntu/ubuntu
+http://ftp.belnet.be/pub/mirror/ubuntu.com/ubuntu
+http://ftp.caliu.info/pub/distribucions/ubuntu/ubuntu
+http://ftp.chg.ru/pub/Linux/ubuntu/archive
+ftp://ftp.ciril.fr/pub/linux/ubuntu/archives
+http://ftp.citylink.co.nz/ubuntu
+http://ftp.crihan.fr/ubuntu
+ftp://ftp.cw.net/pub/linux/ftp.ubuntu.com/ubuntu
+http://ftp.cw.net/ubuntu
+http://ftp.dateleco.es/ubuntu
+http://ftp.dei.uc.pt/pub/linux/ubuntu/archive
+http://ftp.duth.gr/pub/ubuntu
+http://ftp.ecc.u-tokyo.ac.jp/ubuntu
+http://ftp.estpak.ee/ubuntu
+ftp://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.freepark.org/ubuntu
+ftp://ftp.fu-berlin.de/linux/ubuntu
+ftp://ftp.funet.fi/pub/mirrors/archive.ubuntu.com
+http://ftp.gil.di.uminho.pt/ubuntu
+http://ftp.gui.uva.es/sites/ubuntu.com/ubuntu
+http://ftp.halifax.rwth-aachen.de/ubuntu
+http://ftp.heanet.ie/pub/ubuntu
+http://ftp.hosteurope.de/mirror/archive.ubuntu.com
+http://ftp.iinet.net.au/pub/ubuntu
+http://ftp.iitm.ac.in/ubuntu
+http://ftp.kaist.ac.kr/pub/ubuntu
+http://ftp.kfki.hu/linux/ubuntu
+ftp://ftp.kfki.hu/pub/linux/ubuntu
+http://ftp.leg.uct.ac.za/pub/linux/ubuntu
+http://ftp.linux.edu.lv/ubuntu
+http://ftp.lug.ro/ubuntu
+ftp://ftp.man.szczecin.pl/pub/Linux/ubuntu
+ftp://ftp.mipt.ru/mirror/ubuntu
+ftp://ftp.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://ftp.netspace.net.au/pub/ubuntu
+http://ftp.ntua.gr/pub/linux/ubuntu
+ftp://ftp.oleane.net/ubuntu
+ftp://ftp.otenet.gr/ubuntu
+http://ftp.pwr.wroc.pl/ubuntu
+ftp://ftp.rrzn.uni-hannover.de/pub/mirror/linux/ubuntu
+http://ftp.science.nus.edu.sg/ubuntu
+http://ftp.stw-bonn.de/ubuntu
+http://ftp.ticklers.org/archive.ubuntu.org/ubuntu
+ftp://ftp.tiscali.nl/pub/mirror/ubuntu
+http://ftp.tiscali.nl/ubuntu
+http://ftp.tu-chemnitz.de/pub/linux/ubuntu
+ftp://ftp.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://ftp.tuke.sk/ubuntu
+http://ftp.twaren.net/Linux/Ubuntu/ubuntu
+http://ftp.u-picardie.fr/mirror/ubuntu/ubuntu
+ftp://ftp.uasw.edu/linux/ubuntu/archive
+http://ftp.ucr.ac.cr/ubuntu
+http://ftp.udc.es/ubuntu
+http://ftp.uni-kl.de/pub/linux/ubuntu
+http://ftp.uni-muenster.de/pub/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.unina.it/pub/linux/distributions/ubuntu
+http://ftp.uninett.no/ubuntu
+http://ftp.usf.edu/pub/ubuntu
+http://ftp.ussg.iu.edu/linux/ubuntu
+ftp://ftp.vectranet.pl/ubuntu
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/ubuntu/archives
+ftp://ftpserv.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://gd.tuwien.ac.at/opsys/linux/ubuntu/archive
+http://godel.cs.bilgi.edu.tr/ubuntu
+http://gulus.USherbrooke.ca/ubuntu
+http://hr.archive.ubuntu.com/ubuntu
+http://ie.archive.ubuntu.com/ubuntu
+http://kr.archive.ubuntu.com/ubuntu
+http://lug.mtu.edu/ubuntu
+http://mir1.ovh.net/ubuntu
+http://mirror.anl.gov/pub/ubuntu
+http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive
+http://mirror.cs.umn.edu/ubuntu
+http://mirror.hgkz.ch/ubuntu
+http://mirror.imbrandon.com/ubuntu
+http://mirror.lcsee.wvu.edu/ubuntu
+http://mirror.letsopen.com/os/ubuntu
+http://mirror.lupaworld.com/ubuntu/archive
+http://mirror.nttu.edu.tw/ubuntu
+http://mirror.optus.net/ubuntu
+http://mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu
+http://mirror.pacific.net.au/linux/ubuntu
+http://mirror.rootguide.org/ubuntu
+http://mirror.switch.ch/ftp/mirror/ubuntu
+ftp://mirror.switch.ch/mirror/ubuntu
+http://mirror.uni-c.dk/ubuntu
+http://mirror.utdlug.org/linux/distributions/ubuntu/packages
+http://mirror2.etf.bg.ac.yu/distributions/ubuntu/ubuntu-archive
+http://mirrors.cat.pdx.edu/ubuntu
+http://mirrors.ccs.neu.edu/archive.ubuntu.com
+http://mirrors.cs.wmich.edu/ubuntu
+http://mirrors.easynews.com/linux/ubuntu
+http://mirrors.kernel.org/ubuntu
+http://mirrors.nic.funet.fi/ubuntu
+http://mirrors.shlug.org/ubuntu
+ftp://mirrors.virginmedia.com/mirrors/ubuntu/archive
+http://mirrors.xmission.com/ubuntu
+http://mt.archive.ubuntu.com/ubuntu
+http://na.mirror.garr.it/mirrors/ubuntu-archive
+ftp://neacm.fe.up.pt/pub/ubuntu
+http://neacm.fe.up.pt/ubuntu
+http://nl.archive.ubuntu.com/ubuntu
+http://nl2.archive.ubuntu.com/ubuntu
+http://nz2.archive.ubuntu.com/ubuntu
+http://packages.midian.hu//pub/linux/distributions/ubuntu
+http://se.archive.ubuntu.com/ubuntu
+http://sft.if.usp.br/ubuntu
+http://snert.mi.hs-heilbronn.de/pub/ubuntu/ubuntu
+http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/ubuntu/ubuntu
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/ubuntu/ubuntu
+http://tezcatl.fciencias.unam.mx/ubuntu
+http://th.archive.ubuntu.com/ubuntu
+http://tw.archive.ubuntu.com/ubuntu
+http://ubuntu-archive.datahop.it/ubuntu
+http://ubuntu.c3sl.ufpr.br/ubuntu
+http://ubuntu.cn99.com/ubuntu
+http://ubuntu.cs.uaf.edu/ubuntu
+http://ubuntu.cs.utah.edu/ubuntu
+http://ubuntu.csie.nctu.edu.tw/ubuntu
+http://ubuntu.eriders.ge/ubuntu
+http://ubuntu.fastbull.org/ubuntu
+http://ubuntu.indika.net.id/ubuntu
+http://ubuntu.inode.at/ubuntu
+http://ubuntu.intergenia.de/ubuntu
+http://ubuntu.ipacct.com/ubuntu
+http://ubuntu.lhi.is/ubuntu
+http://ubuntu.linux-bg.org/ubuntu
+http://ubuntu.mirror.ac.za/ubuntu-archive
+http://ubuntu.mirror.frontiernet.net/ubuntu
+http://ubuntu.mirror.rafal.ca/ubuntu
+http://ubuntu.mirrors.skynet.be/pub/ubuntu.com/ubuntu
+http://ubuntu.org.ua/ubuntu
+http://ubuntu.snet.uz/ubuntu
+http://ubuntu.supp.name/ubuntu
+http://ubuntu.task.gda.pl/ubuntu
+http://ubuntu.univ-nantes.fr/ubuntu
+http://ubuntu.uz/ubuntu
+http://ubuntu.ynet.sk/ubuntu
+http://www.gtlib.gatech.edu/pub/ubuntu
+http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://www.nic.funet.fi/pub/mirrors/archive.ubuntu.com
+http://wwwftp.ciril.fr/pub/linux/ubuntu/archives
+ftp://yu.archive.ubuntu.com/ubuntu
diff --git a/lib/distro-info/ubuntu-10.04/mirrors/base_updates b/lib/distro-info/ubuntu-10.04/mirrors/base_updates
new file mode 100644
index 00000000..3b936ecf
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/mirrors/base_updates
@@ -0,0 +1,171 @@
+http://archive.ubuntu.com.ba/ubuntu
+http://archive.ubuntu.com/ubuntu
+ftp://br.archive.ubuntu.com/ubuntu
+ftp://bw.archive.ubuntu.com/ubuntu
+http://cl.archive.ubuntu.com/ubuntu
+http://cudlug.cudenver.edu/ubuntu
+ftp://cz.archive.ubuntu.com/MIRRORS/archive.ubuntu.com/mirror/ubuntu
+http://cz.archive.ubuntu.com/ubuntu
+ftp://darkstar.ist.utl.pt/pub/ubuntu/archive
+http://darkstar.ist.utl.pt/ubuntu/archive
+http://de.archive.ubuntu.com/ubuntu
+http://debian.charite.de/ubuntu
+http://debian.linux.org.tw/ubuntu
+http://dk.archive.ubuntu.com/ubuntu
+http://es.archive.ubuntu.com/ubuntu
+http://espelhos.edugraf.ufsc.br/ubuntu
+ftp://free.nchc.org.tw/ubuntu
+http://ftp-stud.fht-esslingen.de/Mirrors/ubuntu
+http://ftp-stud.hs-esslingen.de/ubuntu
+http://ftp.belnet.be/linux/ubuntu/ubuntu
+http://ftp.belnet.be/pub/mirror/ubuntu.com/ubuntu
+http://ftp.caliu.info/pub/distribucions/ubuntu/ubuntu
+http://ftp.chg.ru/pub/Linux/ubuntu/archive
+ftp://ftp.ciril.fr/pub/linux/ubuntu/archives
+http://ftp.citylink.co.nz/ubuntu
+http://ftp.crihan.fr/ubuntu
+ftp://ftp.cw.net/pub/linux/ftp.ubuntu.com/ubuntu
+http://ftp.cw.net/ubuntu
+http://ftp.dateleco.es/ubuntu
+http://ftp.dei.uc.pt/pub/linux/ubuntu/archive
+http://ftp.duth.gr/pub/ubuntu
+http://ftp.ecc.u-tokyo.ac.jp/ubuntu
+http://ftp.estpak.ee/ubuntu
+ftp://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.freepark.org/ubuntu
+ftp://ftp.fu-berlin.de/linux/ubuntu
+ftp://ftp.funet.fi/pub/mirrors/archive.ubuntu.com
+http://ftp.gil.di.uminho.pt/ubuntu
+ftp://ftp.gtlib.gatech.edu/pub/ubuntu
+http://ftp.gui.uva.es/sites/ubuntu.com/ubuntu
+http://ftp.halifax.rwth-aachen.de/ubuntu
+http://ftp.heanet.ie/pub/ubuntu
+http://ftp.hosteurope.de/mirror/archive.ubuntu.com
+ftp://ftp.iinet.net.au/pub/ubuntu
+ftp://ftp.iitm.ac.in/ubuntu
+http://ftp.kaist.ac.kr/pub/ubuntu
+http://ftp.kfki.hu/linux/ubuntu
+ftp://ftp.kfki.hu/pub/linux/ubuntu
+http://ftp.leg.uct.ac.za/pub/linux/ubuntu
+http://ftp.linux.edu.lv/ubuntu
+ftp://ftp.linux.org.tr/pub/ubuntu
+http://ftp.lug.ro/ubuntu
+ftp://ftp.man.szczecin.pl/pub/Linux/ubuntu
+ftp://ftp.mipt.ru/mirror/ubuntu
+ftp://ftp.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://ftp.netspace.net.au/pub/ubuntu
+http://ftp.ntua.gr/pub/linux/ubuntu
+ftp://ftp.oleane.net/ubuntu
+ftp://ftp.otenet.gr/ubuntu
+ftp://ftp.polytechnic.edu.na/pub/ubuntu
+http://ftp.port80.se/ubuntu
+http://ftp.pwr.wroc.pl/ubuntu
+ftp://ftp.rrzn.uni-hannover.de/pub/mirror/linux/ubuntu
+ftp://ftp.science.nus.edu.sg/pub/ubuntu
+http://ftp.science.nus.edu.sg/ubuntu
+http://ftp.stw-bonn.de/ubuntu
+http://ftp.ticklers.org/archive.ubuntu.org/ubuntu
+ftp://ftp.tiscali.nl/pub/mirror/ubuntu
+http://ftp.tiscali.nl/ubuntu
+http://ftp.tu-chemnitz.de/pub/linux/ubuntu
+ftp://ftp.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://ftp.tuke.sk/ubuntu
+http://ftp.twaren.net/Linux/Ubuntu/ubuntu
+http://ftp.u-picardie.fr/mirror/ubuntu/ubuntu
+ftp://ftp.uasw.edu/linux/ubuntu/archive
+http://ftp.ucr.ac.cr/ubuntu
+http://ftp.udc.es/ubuntu
+http://ftp.uni-kl.de/pub/linux/ubuntu
+http://ftp.uni-muenster.de/pub/mirrors/ftp.ubuntu.com/ubuntu
+http://ftp.unina.it/pub/linux/distributions/ubuntu
+http://ftp.uninett.no/ubuntu
+http://ftp.usf.edu/pub/ubuntu
+http://ftp.ussg.iu.edu/linux/ubuntu
+ftp://ftp.vectranet.pl/ubuntu
+http://ftp.yz.yamagata-u.ac.jp/pub/linux/ubuntu/archives
+ftp://ftpserv.tudelft.nl/pub/Linux/archive.ubuntu.com
+http://gd.tuwien.ac.at/opsys/linux/ubuntu/archive
+http://godel.cs.bilgi.edu.tr/ubuntu
+http://gulus.USherbrooke.ca/ubuntu
+http://hr.archive.ubuntu.com/ubuntu
+http://ie.archive.ubuntu.com/ubuntu
+http://klid.dk/ftp/ubuntu
+ftp://klid.dk/ubuntu
+http://kr.archive.ubuntu.com/ubuntu
+http://lug.mtu.edu/ubuntu
+http://mir1.ovh.net/ubuntu
+http://mirror.anl.gov/pub/ubuntu
+http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive
+http://mirror.cs.umn.edu/ubuntu
+http://mirror.etf.bg.ac.yu/distributions/ubuntu/ubuntu-archive
+http://mirror.hgkz.ch/ubuntu
+http://mirror.imbrandon.com/ubuntu
+http://mirror.lcsee.wvu.edu/ubuntu
+http://mirror.letsopen.com/os/ubuntu
+http://mirror.lupaworld.com/ubuntu/archive
+http://mirror.nttu.edu.tw/ubuntu
+http://mirror.optus.net/ubuntu
+http://mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu
+http://mirror.pacific.net.au/linux/ubuntu
+http://mirror.rootguide.org/ubuntu
+http://mirror.switch.ch/ftp/mirror/ubuntu
+ftp://mirror.switch.ch/mirror/ubuntu
+http://mirror.uni-c.dk/ubuntu
+http://mirror.utdlug.org/linux/distributions/ubuntu/packages
+http://mirror2.etf.bg.ac.yu/distributions/ubuntu/ubuntu-archive
+http://mirrors.cat.pdx.edu/ubuntu
+http://mirrors.ccs.neu.edu/archive.ubuntu.com
+ftp://mirrors.ccs.neu.edu/net/mirrors/archive.ubuntu.com
+http://mirrors.cs.wmich.edu/ubuntu
+ftp://mirrors.easynews.com/linux/ubuntu
+http://mirrors.kernel.org/ubuntu
+http://mirrors.nic.funet.fi/ubuntu
+http://mirrors.shlug.org/ubuntu
+ftp://mirrors.virginmedia.com/mirrors/ubuntu/archive
+http://mirrors.xmission.com/ubuntu
+http://mt.archive.ubuntu.com/ubuntu
+http://na.mirror.garr.it/mirrors/ubuntu-archive
+ftp://neacm.fe.up.pt/pub/ubuntu
+http://neacm.fe.up.pt/ubuntu
+http://nl.archive.ubuntu.com/ubuntu
+http://nl2.archive.ubuntu.com/ubuntu
+http://nz2.archive.ubuntu.com/ubuntu
+http://packages.midian.hu//pub/linux/distributions/ubuntu
+http://se.archive.ubuntu.com/ubuntu
+http://sft.if.usp.br/ubuntu
+http://snert.mi.hs-heilbronn.de/pub/ubuntu/ubuntu
+http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/ubuntu/ubuntu
+ftp://sunsite.informatik.rwth-aachen.de/pub/linux/ubuntu/ubuntu
+http://tezcatl.fciencias.unam.mx/ubuntu
+http://th.archive.ubuntu.com/ubuntu
+ftp://tw.archive.ubuntu.com/ubuntu
+http://ubuntu-archive.datahop.it/ubuntu
+http://ubuntu.c3sl.ufpr.br/ubuntu
+http://ubuntu.cn99.com/ubuntu
+http://ubuntu.cs.uaf.edu/ubuntu
+http://ubuntu.cs.utah.edu/ubuntu
+http://ubuntu.csie.nctu.edu.tw/ubuntu
+http://ubuntu.eriders.ge/ubuntu
+http://ubuntu.fastbull.org/ubuntu
+http://ubuntu.indika.net.id/ubuntu
+http://ubuntu.inode.at/ubuntu
+http://ubuntu.intergenia.de/ubuntu
+http://ubuntu.ipacct.com/ubuntu
+http://ubuntu.lhi.is/ubuntu
+http://ubuntu.linux-bg.org/ubuntu
+ftp://ubuntu.mirror.ac.za/ubuntu-archive
+http://ubuntu.mirror.frontiernet.net/ubuntu
+http://ubuntu.mirror.rafal.ca/ubuntu
+http://ubuntu.mirrors.skynet.be/pub/ubuntu.com/ubuntu
+http://ubuntu.org.ua/ubuntu
+http://ubuntu.snet.uz/ubuntu
+http://ubuntu.supp.name/ubuntu
+http://ubuntu.task.gda.pl/ubuntu
+http://ubuntu.univ-nantes.fr/ubuntu
+http://ubuntu.uz/ubuntu
+http://ubuntu.ynet.sk/ubuntu
+http://www.gtlib.gatech.edu/pub/ubuntu
+http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu
+http://www.nic.funet.fi/pub/mirrors/archive.ubuntu.com
+http://wwwftp.ciril.fr/pub/linux/ubuntu/archives
+ftp://yu.archive.ubuntu.com/ubuntu
diff --git a/lib/distro-info/ubuntu-10.04/prereqfiles/etc/hosts b/lib/distro-info/ubuntu-10.04/prereqfiles/etc/hosts
new file mode 100644
index 00000000..75721cd5
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/prereqfiles/etc/hosts
@@ -0,0 +1 @@
+127.0.0.1 localhost
diff --git a/lib/distro-info/ubuntu-10.04/settings.default b/lib/distro-info/ubuntu-10.04/settings.default
new file mode 100644
index 00000000..acf37c4e
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/settings.default
@@ -0,0 +1,76 @@
+arch = i386
+package-subdir = pool
+prereq-packages = main/d/debootstrap/debootstrap_1.0.20_all.deb
+release-name = lucid
+<repository base>
+ components = main restricted
+ distribution = lucid
+ name = Ubuntu 10.04
+ repo-subdir = dists
+ file-for-speedtest = dists/lucid/main/binary-i386/Packages.bz2
+</repository>
+<repository base_security>
+ components = main restricted
+ distribution = lucid-security
+ name = Ubuntu 10.04 Security
+ repo-subdir = dists
+ file-for-speedtest = dists/lucid-security/main/binary-i386/Packages.bz2
+</repository>
+<repository base_updates>
+ components = main restricted
+ distribution = lucid-updates
+ name = Ubuntu 10.04 Updates
+ repo-subdir = dists
+ file-for-speedtest = dists/lucid-updates/main/binary-i386/Packages.bz2
+</repository>
+<selection minimal>
+ packages = <<END
+ language-pack-de
+ linux-image-generic
+ END
+</selection>
+<selection standard>
+ base = minimal
+ packages = <<END
+ ubuntu-standard
+ END
+</selection>
+<selection gnome>
+ base = minimal
+ packages = <<END
+ ubuntu-desktop
+ END
+</selection>
+<selection kde>
+ base = minimal
+ packages = <<END
+ kubuntu-desktop
+ END
+</selection>
+<selection xfce>
+ base = minimal
+ packages = <<END
+ xubuntu-desktop
+ END
+</selection>
+<selection edubuntu-server>
+ base = minimal
+ packages = <<END
+ edubuntu-server
+ END
+</selection>
+<selection edubuntu-gnome>
+ base = minimal
+ packages = <<END
+ edubuntu-desktop-gnome
+ END
+</selection>
+<selection edubuntu-kde>
+ base = minimal
+ packages = <<END
+ edubuntu-desktop-kde
+ END
+</selection>
+<selection default>
+ base = minimal
+</selection>
diff --git a/lib/distro-info/ubuntu-10.04/settings.example b/lib/distro-info/ubuntu-10.04/settings.example
new file mode 100644
index 00000000..31881c4c
--- /dev/null
+++ b/lib/distro-info/ubuntu-10.04/settings.example
@@ -0,0 +1,23 @@
+# rename this file to 'settings' and edit it as you please
+#
+# for a list of all options, have a look at the corresponding
+# settings.default in /opt/openslx/share/distro-info
+
+# use local installation source
+#<repository base>
+# local-url = /srv/ftp/pub/ubuntu
+#</repository>
+#<repository base_updates>
+# local-url = /srv/ftp/pub/ubuntu
+#</repository>
+#<repository base_security>
+# local-url = /srv/ftp/pub/ubuntu
+#</repository>
+
+# add a new selection:
+#<selection my_kde>
+# base = kde
+# packages = <<END
+# kinternet
+# END
+#</selection>
diff --git a/os-plugins/plugins/bootsplash/init-hooks/10-have-nw-modules/bootsplash.sh b/os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh
index 7f3d563e..7f3d563e 100644
--- a/os-plugins/plugins/bootsplash/init-hooks/10-have-nw-modules/bootsplash.sh
+++ b/os-plugins/plugins/bootsplash/init-hooks/10-nw-if-config/bootsplash.sh
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm
index dfeb1d0a..1dc0482c 100644
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Scilin.pm
@@ -69,7 +69,7 @@ sub GDMConfigHashForWorkstation
my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
$configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/sessions/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions';
+ '/etc/X11/session/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions';
$configHash->{'daemon'}->{Greeter} =
'/usr/libexec/gdmgreeter';
@@ -119,10 +119,10 @@ sub _setupCommonDmScript
( 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," \
+ 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
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm
index 3d451e9e..86ae59f9 100644
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -75,7 +75,7 @@ sub GDMConfigHashForWorkstation
my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
$configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/sessions/:/usr/share/xsessions/';
+ '/etc/X11/session/:/usr/share/xsessions/';
$configHash->{'daemon'}->{DefaultSession} = 'default.desktop';
$configHash->{'daemon'}->{Greeter} =
'/usr/lib/gdm/gdmgreeter';
@@ -124,9 +124,11 @@ sub setupKDMScript
sed -i "s/DISPLAYMANAGER=.*/DISPLAYMANAGER=\"kdm$kdmver\"/" \
/mnt/etc/sysconfig/displaymanager
[ $(grep -q DISPLAYMANAGER /mnt/etc/sysconfig/displaymanager) ] && \
- echo "DISPLAYMANAGER=\"kdm$kdmver\"" >> /mnt/et/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;
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm
index c7f27d65..ac14b2a5 100644
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Suse_10_2.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -44,7 +44,7 @@ sub GDMConfigHashForWorkstation
my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
$configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/sessions/:/usr/share/xsessions/';
+ '/etc/X11/session/:/usr/share/xsessions/';
$configHash->{'daemon'}->{Greeter} =
'/opt/gnome/lib/gdm/gdmgreeter';
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm
index 6e69ee14..14f56b48 100644
--- a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006..2009 - OpenSLX GmbH
+# Copyright (c) 2006..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -33,7 +33,7 @@ sub GDMPathInfo
my $pathInfo = $self->SUPER::GDMPathInfo();
# link gdm.conf-custom instead of gdm.conf
- $pathInfo->{config} = '/etc/gdm/gdm.conf-custom';
+ $pathInfo->{config} = '/etc/gdm/custom.conf';
return $pathInfo;
}
@@ -57,9 +57,10 @@ sub setupGDMScript
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
+ # 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
@@ -67,39 +68,21 @@ sub setupGDMScript
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
+ #sed '/^\\[daemon\\]/ a\\BaseXsession=/etc/gdm/Xsession' \
+ # -i /mnt$configFile
End-of-Here
return $script;
}
-sub KDMVersion
-{
- my $self = shift;
- my $vendorOSName = $self->{'engine'}->{'vendor-os-name'};
-
- my $kdmVer;
- if ( $vendorOSName =~ /ubuntu-8.04.*/ ) {
- $kdmVer = "3";
- }
- else {
- $kdmVer = "4";
- }
-
- return $kdmVer;
-
-}
-
sub KDMPathInfo
{
my $self = shift;
my $pathInfo = $self->SUPER::KDMPathInfo();
- my $kdmVer = $self->KDMVersion();
$pathInfo = {
- config => "/etc/kde$kdmVer/kdm/kdmrc",
+ config => "/etc/kde4/kdm/kdmrc",
paths => [
'/var/lib/kdm',
'/var/run/kdm',
@@ -113,18 +96,30 @@ sub GDMConfigHashForWorkstation
{
my $self = shift;
- my $configHash = $self->SUPER::GDMConfigHashForWorkstation();
- $configHash->{'daemon'}->{SessionDesktopDir} =
- '/etc/X11/sessions/:/usr/share/xsessions/:/usr/share/gdm/BuiltInSessions/';
-
- return $configHash;
+ 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 = $self->KDMVersion();
+ 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";
@@ -132,7 +127,7 @@ sub KDMConfigHashForWorkstation
$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/sessions,/usr/share/xsessions,/usr/share/apps/kdm/sessions';
+ '/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions';
$configHash->{'X-:0-Core'}->{ServerAttempts} = "2";
return $configHash;
@@ -143,14 +138,9 @@ sub setupKDMScript
my $self = shift;
my $repoPath = shift;
- my $kdmVer = $self->KDMVersion();
+ 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');
@@ -165,7 +155,7 @@ sub setupKDMScript
. /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
+ 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 \
diff --git a/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm
new file mode 100644
index 00000000..6f00f181
--- /dev/null
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_8.pm
@@ -0,0 +1,161 @@
+# 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
new file mode 100644
index 00000000..1022d6e8
--- /dev/null
+++ b/os-plugins/plugins/desktop/OpenSLX/Distro/Ubuntu_9_04.pm
@@ -0,0 +1,161 @@
+# 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/pvs/OpenSLX/OSPlugin/pvs.pm b/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm
index 6a6c7a8e..d0a629e4 100644
--- a/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm
+++ b/os-plugins/plugins/pvs/OpenSLX/OSPlugin/pvs.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2009 - OpenSLX GmbH
+# Copyright (c) 2009..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
diff --git a/os-plugins/plugins/pvs/XX_pvs.sh b/os-plugins/plugins/pvs/XX_pvs.sh
index e96f5a63..9a86574f 100644
--- a/os-plugins/plugins/pvs/XX_pvs.sh
+++ b/os-plugins/plugins/pvs/XX_pvs.sh
@@ -1,5 +1,5 @@
-# Copyright (c) 2009 - RZ Uni Freiburg
-# Copyright (c) 2009 - OpenSLX GmbH
+# 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
@@ -21,20 +21,20 @@ 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 ...";
- # configure central pvs client configuration file
- testmkdi /mnt/etc/pvs
+ # 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
+ #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
+ #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 ...";
diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
index 9b6fffd2..e4ef657f 100644
--- a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
+++ b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
@@ -103,7 +103,7 @@ 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'};
@@ -111,8 +111,9 @@ sub installationPhase
$self->{attrs} = $info->{'plugin-attrs'};
my $engine = $self->{'os-plugin-engine'};
- my $pluginRepoPath = "$self->{pluginRepositoryPath}";
-
+ 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(
@@ -123,55 +124,92 @@ sub installationPhase
if (!isInPath('sudo')) {
$engine->installPackages($self->{distro}->getPackageName('sudo'));
}
- # Copy run-virt.include to the appropriate place for inclusion in stage4
- copyFile("$self->{openslxBasePath}/lib/plugins/qemukvm/files/run-virt.include",
- "$self->{pluginRepositoryPath}/");
- # Copy the later /etc/qemu-ifup,down
- copyFile("$self->{openslxBasePath}/lib/plugins/qemukvm/files/qemu-if*",
- "$self->{pluginRepositoryPath}/");
- chmod 0755, "$self->{pluginRepositoryPath}/qemu-ifup";
- chmod 0755, "$self->{pluginRepositoryPath}/qemu-ifdown";
+
+ # 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");
- $initFile->addToBlock('head','. /etc/opt/openslx/network.qemukvm');
+ # 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');
- # Adding 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
+ # 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');
- /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
+ 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 nothing here");
-
+ $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",
diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
index 49dc165b..36ff4f59 100644
--- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh
+++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
@@ -1,4 +1,4 @@
-# Copyright (c) 2008, 2009 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -11,86 +11,56 @@
# Script is included from init via the "." load function - thus it has all
# variables and functions available
-write_networking_conf ()
-{
-local natnetwork="192.168.101"
-local honetwork="192.168.102"
-echo "
-# udhcpd configuration file written by $0 during OpenSLX stage3 configuration
+# include default directories
+. /etc/openslx.conf
-# The start and end of the IP lease block
-start CNETWORK.20
-end CNETWORK.100
-
-# The interface that udhcpd will use
-interface NWIF
-
-# How long an offered address is reserved (leased) in seconds
-offer_time 6000
-
-# The location of the leases file
-lease_file /tmp/qemu-USER/udhcpd.leases
-
-# The location of the pid file
-pidfile /tmp/qemu-USER/udhcpd.pid
-
-opt dns ${domain_name_servers}
-option subnet 255.255.255.0
-opt router CNETWORK.254
-opt 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
-" >/mnt/etc/opt/openslx/udhcpd.qemukvm
-echo -e "nataddress=${natnetwork}.254/24\nhoaddress=${honetwork}.254/24" \
- >/mnt/etc/opt/openslx/network.qemukvm
-}
+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 /initramfs/plugin-conf/qemukvm.conf ]; then
+if [ -e ${CONFFILE} ]; then
- # check for the virtualization CPU features
- if grep -q "svm" /proc/cpuinfo && modprobe ${MODPRV} kvm_amd ; then
- [ $DEBUGLEVEL -gt 0 ] && echo " * Loaded kvm_amd module"
- elif grep -q "vmx" /proc/cpuinfo && modprobe ${MODPRV} kvm_intel ; then
- [ $DEBUGLEVEL -gt 0 ] && echo " * Loaded kvm_intel module"
- 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."
- exit 1
- fi
- # load the tunnel device module
- modprobe tun 2>/dev/null
-
# load needed variables
- . /initramfs/plugin-conf/qemukvm.conf
+ . ${CONFFILE}
# Test if this plugin is activated... more or less useless with the
# new plugin system
- if [ $qemukvm_active -ne 0 ]; then
-
+ 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)
@@ -106,37 +76,36 @@ qemu(-kvm)\n makes not much sense."
[ $DEBUGLEVEL -gt 1 ] && error " * Incomplete information in variable \
${qemukvm_imagesrc}." nonfatal
fi
- # copy version depending files - the vmchooser expects for every virtua-
- # lization plugin a file named after it (here run-qemukvm.include)
- testmkd /mnt/etc/opt/openslx
- cp /mnt/opt/openslx/plugin-repo/qemukvm/run-virt.include \
- /mnt/etc/opt/openslx/run-qemukvm.include
- # create a template udhcpd configuration file
- write_networking_conf
+
+ # 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/opt/openslx/plugin-repo/qemukvm/qemukvm /mnt/etc/init.d
+ 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 /opt/openslx/plugin-repo/qemukvm/qemu-ifup /mnt/etc/qemu-ifup
- ln -sf /opt/openslx/plugin-repo/qemukvm/qemu-ifdown /mnt/etc/qemu-ifdown
- ln -sf /opt/openslx/plugin-repo/qemukvm/qemu-ifup /mnt/etc/kvm-ifup
- ln -sf /opt/openslx/plugin-repo/qemukvm/qemu-ifdown /mnt/etc/kvm-ifdown
-
- for qemubin in qemu kvm ; do
- qemu="$(binfinder ${qemubin})"
- [ -n "${qemu}" ] && \
- echo "ALL ALL=NOPASSWD: ${qemu}" >>/mnt/etc/sudoers
- done
- echo -e "#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/tunctl -t tap*\n\
-#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/ip addr add * dev tap*\n\
-#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tap*\n\
-ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemu*\n\
-ALL ALL=NOPASSWD: killall udhcpd" >>/mnt/etc/sudoers
+ 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"
+ [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of 'qemukvm' plugin failed"
fi
diff --git a/os-plugins/plugins/qemukvm/files/qemu-ifdown b/os-plugins/plugins/qemukvm/files/ifdown
index 8c52d76f..e741d9ca 100644
--- a/os-plugins/plugins/qemukvm/files/qemu-ifdown
+++ b/os-plugins/plugins/qemukvm/files/ifdown
@@ -9,21 +9,24 @@
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
-# qemu-ifup
+# ifdown
# - Script used for network cleanup of qemukvm in stage4
# -----------------------------------------------------------------------------
-# Clean up script
+# 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
- tap1)
- # Bringing down the dhcp server
- killall udhcpd 2>/dev/null
- #iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE 2>/dev/null
+ tapnat0*)
+ # kill udhcpd
+ cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid
;;
- tap2)
- # Bringing down the dhcp server
- killall udhcpd 2>/dev/null
+ taphost0*)
+ # kill udhcpd
+ cat ${QKTMPDIR}/udhcpd.pid >> /tmp/qemukvm/udhcpd-unused.pid
;;
esac
diff --git a/os-plugins/plugins/qemukvm/files/ifup b/os-plugins/plugins/qemukvm/files/ifup
new file mode 100644
index 00000000..b3218798
--- /dev/null
+++ b/os-plugins/plugins/qemukvm/files/ifup
@@ -0,0 +1,75 @@
+#!/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/qemu-ifup b/os-plugins/plugins/qemukvm/files/qemu-ifup
deleted file mode 100644
index 9cd2dd0b..00000000
--- a/os-plugins/plugins/qemukvm/files/qemu-ifup
+++ /dev/null
@@ -1,55 +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/
-# -----------------------------------------------------------------------------
-# qemu-ifup
-# - Script used for network setup of qemukvm in stage4
-# -----------------------------------------------------------------------------
-
-# Use the udhcpcd as DHCP server and brctl as provided by default in OpenSLX
-# environments via uclibc-wrapper.
-
-. /etc/opt/openslx/network.qemukvm
-
-# 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
- tap0)
- # Adding the tap0 interface to the existing bridge configured in stage3
- # brctl addif br0 tap0
- ;;
- tap1)
- # Configuring DHCP on host tap1 interface and enable IP masquerading
- [ -d /tmp/qemu-$USER ] || mkdir -p /tmp/qemu-$USER
- sed "s,NWIF,tap1,;s,/misc/,/qemu/,;s,USER,$USER,;s,CNETWORK,$nataddress," \
- /etc/opt/openslx/udhcpd.qemukvm >/tmp/qemu-$USER/udhcpd.conf
- touch /tmp/qemu-$USER/udhcpd.leases
- # ip link set tap1 up
- # ip addr add 192.168.101.254/24 dev tap1
- sudo /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \
- -S /tmp/qemu-$USER/udhcpd.conf
- # iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
- ;;
- tap2)
- # Configuring DHCP on host tap2 interface
- [ -d /tmp/qemu-$USER ] || mkdir -p /tmp/qemu-$USER
- sed "s,NWIF,tap2,;s,/misc/,/qemu/,;s,USER,$USER,;s,CNETWORK,$hoaddress," \
- /etc/opt/openslx/udhcpd.qemukvm >/tmp/qemu-$USER/udhcpd.conf
- touch /tmp/qemu-$USER/udhcpd.leases
- # ip link set tap2 up
- # ip addr add 192.168.101.254/24 dev tap2
- sudo /opt/openslx/uclib-rootfs/usr/sbin/udhcpd \
- -S /tmp/qemu-$USER/udhcpd.conf
- ;;
-esac
-
-# Produce a clean exit status
-exit 0
-
diff --git a/os-plugins/plugins/qemukvm/files/run-virt.include b/os-plugins/plugins/qemukvm/files/run-virt.include
index b1f76535..02c70469 100644
--- a/os-plugins/plugins/qemukvm/files/run-virt.include
+++ b/os-plugins/plugins/qemukvm/files/run-virt.include
@@ -1,6 +1,7 @@
-# qemukvm.include
-#
-# Copyright (c) 2009 - OpenSLX GmbH
+# 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
@@ -9,36 +10,167 @@
# send your feedback to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org
-#
-# Include script for running the QEMU/Linux KVM virtual machine on an OpenSLX
-# client via the run-virt.sh. The stuff is copied to /etc/opt/openslx/run-
-# qemukvm.include during stage3.
+# -----------------------------------------------------------------------------
+# 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
-# include general configuration from vmchooser
-. /etc/opt/openslx/run-virt.include
+# 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
-permem=50
-mem=$(expr ${totalmem} / 100 \* ${permem})
VIRTCMDOPTS="${VIRTCMDOPTS} -m ${mem}"
# network adaptor alternatives: rtl8139, pcnet, e1000
-VIRTCMDOPTS="${VIRTCMDOPTS} -net nic,model=pcnet"
+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=tap0"
+ 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}"
;;
- nat|NAT)
- VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap1"
+ 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}"
;;
- hostonly)
- VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap2"
+ *)
+ 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
-#VIRTCMDOPTS="${VIRTCMDOPTS} -fda /dev/fd0"
-VIRTCMDOPTS="${VIRTCMDOPTS} -fdb /var/lib/virt/vmchooser/loopimg/fd.img"
# if $floppy_0 from run-virt.include set then fdtest="TRUE"
fdtest=
fdtest=${floppy_0:+"TRUE"}
@@ -61,17 +193,114 @@ cdrom1=${cdtest:-"FALSE"}
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"
-# set the variables appropriately
-for tool in kvm qemu-kvm qemu; do
- VIRTCMD=$(which ${tool} 2>/dev/null)
- [ "x$VIRTCMD" != "x" ] && break
-done
-[ -z $VIRTCMD ] && { writelog "No qemu/kvm tool found."; exit 1; }
-VIRTCMD="sudo $VIRTCMD"
-VIRTCMDOPTS="${VIRTCMDOPTS} -boot c -alt-grab ${diskfile}"
+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
index 6aabe8ad..c4c548fb 100644
--- 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
@@ -10,7 +10,7 @@
# 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)
+# (should be kept identical to the files of virtualbox and vmware plugins)
#############################################################################
local bridge=br0
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
new file mode 100755
index 00000000..396631c1
--- /dev/null
+++ b/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh
@@ -0,0 +1,60 @@
+#!/bin/ash
+# 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 vmware 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.254
+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
index 25be964c..654d755e 100644
--- a/os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm
+++ b/os-plugins/plugins/syslog/OpenSLX/Distro/Base.pm
@@ -53,6 +53,7 @@ sub runlevelInfo
my %nameMap = (
'syslogd' => 'sysklogd',
'syslog-ng' => 'syslog-ng',
+ 'rsyslog' => 'rsyslog',
);
my $rlInfo = {
scriptName => $nameMap{$kind},
@@ -71,6 +72,20 @@ sub getPackageName
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};
}
diff --git a/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm b/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm
index 6645f9ef..2952f2e7 100644
--- a/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm
+++ b/os-plugins/plugins/syslog/OpenSLX/OSPlugin/syslog.pm
@@ -68,9 +68,9 @@ sub getAttrInfo
description => unshiftHereDoc(<<' End-of-Here'),
kind of syslog to use \(syslogd-ng or old-style syslog\)
End-of-Here
- content_regex => qr{^(syslog-ng|syslog)$},
- content_descr => 'allowed: syslogd-ng, syslog',
- default => 'syslog-ng',
+ content_regex => qr{^(syslog-ng|syslogd|rsyslog)$},
+ content_descr => 'allowed: syslog-ng, syslogd, rsyslog',
+ default => 'rsyslog',
},
'syslog::host' => {
applies_to_systems => 1,
@@ -126,19 +126,27 @@ sub installationPhase
my $engine = $self->{'os-plugin-engine'};
- if ($self->{kind} eq 'syslog-ng' && !isInPath('syslog-ng')) {
+ if ($self->{kind} eq 'rsyslog' && !isInPath($self->{distro}->getBinaryName('rsyslog'))) {
$engine->installPackages($self->{distro}->getPackageName('syslog-ng'));
}
+
+ 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('syslog')) {
+ if ($self->{kind} eq 'syslogd' && !isInPath($self->{distro}->getBinaryName('syslogd'))) {
$engine->installPackages($self->{distro}->getPackageName('syslogd'));
}
if (!$self->{kind}) {
- if (qx{which syslog-ng}) {
+ 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 syslogd}) {
+ elsif (qx{which $self->{distro}->getBinaryName('syslogd')}) {
$self->{kind} = 'syslogd';
}
else {
@@ -150,7 +158,10 @@ sub installationPhase
}
# start to actually do something - according to current stage1 attributes
- if ($self->{kind} eq 'syslog-ng') {
+ if ($self->{kind} eq 'rsyslog') {
+ $self->_setupRsyslog($self->{attrs});
+ }
+ elsif ($self->{kind} eq 'syslog-ng') {
$self->_setupSyslogNG($self->{attrs});
}
elsif ($self->{kind} eq 'syslogd') {
@@ -158,7 +169,7 @@ sub installationPhase
}
else {
die _tr(
- 'unknown kind "%s" given, only "syslog-ng" and "syslogd" are supported!',
+ 'unknown kind "%s" given, only "rsyslog", "syslog-ng" and "syslogd" are supported!',
$self->{kind}
);
}
@@ -174,6 +185,14 @@ sub removalPhase
return;
}
+sub _setupRsyslog
+{
+ my $self = shift;
+ my $attrs = shift;
+
+ return;
+}
+
sub _setupSyslogNG
{
my $self = shift;
@@ -229,6 +248,7 @@ sub _setupSyslogNG
END
fi
+ testmkd /mnt/var/run/rsyslog
rllinker $rlInfo->{scriptName} $rlInfo->{startAt} $rlInfo->{stopAt}
End-of-Here
diff --git a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm
index fad96ea1..9af3191e 100644
--- a/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/virtualbox/OpenSLX/Distro/Suse.pm
@@ -31,6 +31,7 @@ sub installVbox
my $self = shift;
my $engine = $self->{'engine'};
+ # should be replaced by proper function
my $release = `lsb_release -rs`;
chomp($release);
diff --git a/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm b/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm
index e936590e..fd1424f1 100644
--- a/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm
+++ b/os-plugins/plugins/virtualbox/OpenSLX/OSPlugin/virtualbox.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2009 - OpenSLX GmbH
+# Copyright (c) 2009..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -9,7 +9,7 @@
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
# virtualbox.pm
-# - Declares necessary information for the virtualbox plugin
+# - declares necessary information for the virtualbox plugin
# -----------------------------------------------------------------------------
package OpenSLX::OSPlugin::virtualbox;
@@ -168,7 +168,7 @@ sub _writeRunlevelScript
);
$initfile->addFunction(
'vmstatus',
- ' if running vboxdrv; then
+ 'if running vboxdrv; then
if running vboxnetflt; then
echo "VirtualBox kernel modules (vboxdrv and vboxnetflt) are loaded."
else
@@ -188,7 +188,7 @@ sub _writeRunlevelScript
' modprobe vboxdrv && modprobe vboxnetflt',
);
$initfile->addFunction(
- 'stop',
+ 'stop',
' rmmod vboxnetflt && rmmod vboxdrv',
);
$initfile->addToCase(
@@ -208,12 +208,9 @@ sub _writeRunlevelScript
'stop && start'
);
- # get distro version (does not work and makes no sense to call an external
- # function which is not available in all distros)
- # my $workaround_distro = qx(lsb_release -si);
- # alternative from bootsplash.pm
- my $workaround_distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0];
- my $runlevelscript = getInitFileForDistro($initfile, $workaround_distro);
+ # get distro version
+ 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...
diff --git a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm
index ba8a32b0..43e4ea1f 100644
--- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm
+++ b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm
@@ -54,11 +54,11 @@ sub copyDefaultSession
# Take the default path of SuSE
# (as we have the most experience with it)
- if( -f "/etc/X11/sessions/default.desktop") {
- rename("/etc/X11/sessions/default.desktop",
- "/etc/X11/sessions/default.desktop.back")
+ 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/sessions");
+ copyFile("$pluginroot/default.desktop","/etc/X11/session");
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
index 9e0bf551..c93a066b 100644
--- a/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -33,17 +33,15 @@ use OpenSLX::Utils;
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/sessions/default.desktop") {
- rename("/etc/X11/sessions/default.desktop",
- "/etc/X11/sessions/default.desktop.back")
+ 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/sessions");
-
- return 1;
+ copyFile("$pluginroot/default.desktop","/etc/X11/session");
+ return 1;
} \ No newline at end of file
diff --git a/os-plugins/plugins/vmchooser/XX_vmchooser.sh b/os-plugins/plugins/vmchooser/XX_vmchooser.sh
index d3ade116..168bcda1 100644
--- a/os-plugins/plugins/vmchooser/XX_vmchooser.sh
+++ b/os-plugins/plugins/vmchooser/XX_vmchooser.sh
@@ -1,5 +1,5 @@
# Copyright (c) 2008, 2009 - RZ Uni Freiburg
-# Copyright (c) 2008, 2009 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -51,32 +51,6 @@ if [ -e $CONFFILE ]; then
mount -n -t msdos -o loop,umask=000 ${PLUGINCONFDIR}/loopimg/fd.img \
${PLUGINCONFDIR}/fd-loop
- # create run-virt.include header (and fill in information on removable
- # devices if present
- echo -e "# run-virt.include created by $0 during stage3 plugin setup" \
- >${PLUGINCONFDIR}/run-virt.include
-
- waitfor /etc/hwinfo.cdrom
- j=0
- for i in $(cat /etc/hwinfo.cdrom); do
- echo "cdrom_$j=$i" >>${PLUGINCONFDIR}/run-virt.include
- j=$(expr $j + 1)
- done
-
- waitfor /etc/hwinfo.floppy
- j=0
- for i in $(cat /etc/hwinfo.floppy); do
- echo "floppy_$j=$i" >>${PLUGINCONFDIR}/run-virt.include
- j=$(expr $j + 1)
- done
-
- CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l)
- if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then
- echo "cpu_cores=\"${CPU_CORES}\"" >>${PLUGINCONFDIR}/run-virt.include
- else
- echo 'cpu_cores="1"' >>${PLUGINCONFDIR}/run-virt.include
- fi
-
# finished ...
[ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmchooser' os-plugin ..."
fi
diff --git a/os-plugins/plugins/vmchooser/files/run-virt.sh b/os-plugins/plugins/vmchooser/files/run-virt.sh
index 5aefc47e..771ebef4 100644
--- a/os-plugins/plugins/vmchooser/files/run-virt.sh
+++ b/os-plugins/plugins/vmchooser/files/run-virt.sh
@@ -22,8 +22,9 @@
. /etc/opt/openslx/openslx.conf
PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser
-# include general configuration from vmchooser
-. ${PLUGINCONFDIR}/run-virt.include
+# load general virtualization information
+[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \
+ . ${PLUGINCONFROOT}/virtualization/virtualization.conf
# Sanity checks
################################################################################
@@ -40,13 +41,14 @@ xml=$1
################################################################################
# File name of the image
-imagename=$(grep -io "<image_name param=.*\"" ${xml} | \
+imgname=$(grep -io "<image_name param=.*\"" ${xml} | \
awk -F "\"" '{ print $2 }')
case ${xml} in
/tmp/*)
# we do not need folder name as it is already included by vmchooser
- diskfile=$imagename
+ diskfile=$imgname
+ imgname=$(basename ${imgname})
;;
*)
# Path to the image
@@ -54,18 +56,25 @@ case ${xml} in
[ -z $imgpath ] && \
{ imgpath=$(readlink -f $xml); imgpath=${imgpath%/*.xml}; }
# Diskfile is file including absolute path to it
- diskfile=$imgpath/$imagename
+ diskfile=$imgpath/$imgname
;;
esac
+# TODO: change to new var vmpath, remove diskfile afterwards
+vmpath=$diskfile
[ -e $diskfile ] || { echo -e "\n\tImage file $diskfile not found!"; exit 1; }
# Short description of the image (as present in the vmchooser menu line)
-short_description=$(grep -o "short_description param=.*\"" ${xml} | \
+vm_name=$(grep -o "short_description param=.*\"" ${xml} | \
sed -e "s/&.*;/; /g" | awk -F "\"" '{print $2}')
# If ${short_description} not defined use ${image_name}
-short_description=${short_description:-"${image_name}"}
-displayname=${short_description}
+# if ${vm_name} not defined use ${imgname}
+vm_name=${vm_name:-"${imgname%.*}"}
+# define vm_shortname since vm_name can be very long
+vm_shortname=$(echo ${imgname%.*} | sed -e "s, ,-,g")
+displayname=${vm_name}
+# remove blanks
+vm_name=$(echo ${vm_name} | sed -e "s, ,-,g")
# Type of virtual machine to run
virt_mach=$(grep -o "virtualmachine param=.*\"" ${xml} | \
@@ -74,7 +83,7 @@ virt_mach=$(grep -o "virtualmachine param=.*\"" ${xml} | \
# Make a guess from the filename extension if ${virt_mach} is empty (not set
# within the xml file)
if [ -z ${virt_mach} ] ; then
- case "$(echo ${imagename##*.}|tr [A-Z] [a-z])" in
+ case "$(echo ${imgname##*.}|tr [A-Z] [a-z])" in
vmdk)
virt_mach="vmware"
;;
@@ -104,19 +113,29 @@ parallel=$(grep -io '<parport param=.*"' ${xml} | awk -F '"' '{ print $2 }')
# Declaration of default variables
###############################################################################
+# VM-ID static (0D)
+VM_ID="00"
+
# cpu cores
cpu_cores="${cpu_cores}"
-# Get total amount of memory installed in your machine
-totalmem=$(expr $(grep -i "memtotal" /proc/meminfo | awk '{print $2}') / 1024)
+# check for CPU virtualization flags
+
+# 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)
-
-# Configuring ethernet mac address: first four bytes are fixed (00:50:56:0D)
-# the last two bytes are taken from the first local network adaptor of the host
-# system
-mac=$(/sbin/ifconfig eth0 | grep eth0 | sed -e "s/ //g" \
- | awk -F ":" '{print $(NF-1)":"$NF}')
+[ -n "${mainvirtmem}" ] && forcemem=$(expr ${mainvirtmem} / 4 \* 4)
+
+# 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 ${machostaddr} | awk -F ":" '{print $(NF-1)":"$NF}')
+macaddr=$(echo "${macguestpart}:${machostpart}" | tr [a-z] [A-Z])
+#TODO: remove when vmware modified
+mac=${machostpart}
# virtual fd/cd/dvd and drive devices, floppy b: for configuration
# if $floppy_0 from run-virt.include set then fdtest="TRUE"
@@ -142,6 +161,10 @@ ide="TRUE"
scsi="FALSE"
hddrv="ide"
+# add rw share
+sharepath="${HOME}"
+sharename="home"
+
# Display resolution within the host system
hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$")
xres=$(echo "${hostres}" | awk '{print $3}')
@@ -220,11 +243,11 @@ writelog ()
# Logo for console
cat <<EOL
-
- .----.--.--.-----.--.--.--.----.-----.
- | _| | | | | | | _|_ _|
- |__| |_____|__|__|\___/|__|__| |_|
-OpenSLX script for preparing virtual machine environment ...
+ __ __
+ .----.--.--.-----.___.--.--.|__|.----.| |_
+ | _| | | |___| | || || _|| _|
+ |__| |_____|__|__| \___/ |__||__| |____|
+ OpenSLX virtual machine environment preparation script ...
EOL
@@ -241,15 +264,17 @@ 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!?)
-echo "Please fix the config.xml generation"
+#TODO: wozu echo?
+#echo "Please fix the config.xml generation"
cp ${xml} ${PLUGINCONFDIR}/fd-loop/config.xml
# Check if virtual machine container file exists
-filecheck
+#filecheck
# Get all virtual machine specific stuff from the respective include file
-if [ -e ${PLUGINCONFROOT}/${virt_mach}/run-${virt_mach}.include ] ; then
- . ${PLUGINCONFROOT}/${virt_mach}/run-${virt_mach}.include
+if [ -e ${PLUGINCONFROOT}/${virt_mach}/run-virt.include ] ; then
+ self=${virt_mach}
+ . ${PLUGINCONFROOT}/${virt_mach}/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
@@ -264,7 +289,7 @@ if [ -e ${PLUGINCONFROOT}/${virt_mach}/run-${virt_mach}.include ] ; then
fi
done
${VIRTCMD} ${VIRTCMDOPTS}
- writelog "Bye.\n"
+ writelog "Bye."
exit 0
else
writelog "Failed because of missing ${virt_mach} plugin."
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
new file mode 100644
index 00000000..400075cd
--- /dev/null
+++ b/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh
@@ -0,0 +1,135 @@
+# Copyright (c) 2008..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
+
+# 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}
+[ ${vmchooser_active} -ne 0 ] && active=1
+[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
+[ ${vmgrid_active} -ne 0 ] && active=1
+
+[ $DEBUGLEVEL -gt 0 ] \
+ && echo -e "Executing the virtual '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 [ ${vmgrid_active} -ne 0 ]; 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 [ ${vmchooser_active} -ne 0 ]; 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 "machostaddr=${macaddr}" >> ${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
+
+ # 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
new file mode 100644
index 00000000..d73e0720
--- /dev/null
+++ b/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm
@@ -0,0 +1,322 @@
+# 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/
+# -----------------------------------------------------------------------------
+# 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{^(vmware|virtualbox|qemukvm|xen)$},
+ #openvz|vserver
+ content_descr => 'vmware, 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 /wo full 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 /wo full 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::hvm' => {
+ 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
+ will be used only if applicable
+ (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
+ will be used only if applicable
+ (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 don't 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::maxram' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ maximum of RAM used for ALL vms
+ will be used only if applicable
+ (only if supported by plugin)
+ End-of-Here
+ content_regex => qr{^(1|2|3|4|5|6|7|8|9)},
+ content_descr => 'absolute or relative e.g. 512 or 50%',
+ default => undef,
+ },
+ 'vmgrid::minram' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ minimum of RAM used for ALL vms
+ will be used only if applicable
+ (only if supported by plugin)
+ End-of-Here
+ content_regex => qr{^(1|2|3|4|5|6|7|8|9)},
+ content_descr => 'absolute or relative e.g. 512 or 50%',
+ 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-slx");
+ $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
new file mode 100644
index 00000000..f75c895d
--- /dev/null
+++ b/os-plugins/plugins/vmgrid/XX_vmgrid.sh
@@ -0,0 +1,104 @@
+# Copyright (c) 2008..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/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
new file mode 100644
index 00000000..1501749e
--- /dev/null
+++ b/os-plugins/plugins/vmgrid/files/run-vmgrid.sh
@@ -0,0 +1,395 @@
+#!/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/
+# -----------------------------------------------------------------------------
+# 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
+}
+
+################################################################################
+### Get XML file and dir
+################################################################################
+
+# check if mem or graphical mode set
+headless=1
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -h|--help)
+ echo -e "Usage: run-vmgrid.sh [-g] [--mem <memorysize in MB>] \c"
+ echo -e "[/path/]filename[.xml]"
+ exit
+ ;;
+ -g)
+ headless=0
+ ;;
+ --mem)
+ # get a result which can be divided through 4
+ forcemem=$2
+ echo $2 | grep -q '[1-9][0-9]\{2,3\}$' && forcemem=$(expr $2 / 4 \* 4)
+ 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})"
+
+if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then
+ writelog \
+ "Submitted configuration file ${xmlfile} seems to have wrong XML format"
+ exit 1
+fi
+
+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)
+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])
+
+writelog "\tVirtualization:\t\t$xmlvirt"
+writelog "\tVM name:\t\t$vm_name"
+writelog "\tVM short name:\t\t$vm_shortname"
+
+###############################################################################
+### Declaration of default variables
+###############################################################################
+
+# TODO: cpu cores
+#vmgrid::maxvcpus
+#vmgrid::minvcpus
+#cpu_cores="${cpu_cores}"
+
+# check for CPU virtualization flags
+#vmgrid::hvm
+
+# 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::maxram
+#vmgrid::minram
+
+# 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 ${machostaddr} | 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"
+
+# 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
+# TODO: rename to run-vuirt.include
+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!"
+ exit 1
+ fi
+ writelog "Starting ${vmgrid_virt} in graphical mode..."
+ ${VIRTCMD} ${VIRTCMDOPTS} 2>/dev/null
+# start headless
+elif [ -n "${VIRTCMDHL}" ]; then
+ writelog "Starting ${vmgrid_virt} in headless mode..."
+ ${VIRTCMDHL} ${VIRTCMDOPTSHL} 2>/dev/null
+else
+ writelog "${vmgrid_virt}: No headless mode defined, exiting!"
+ exit 1
+fi
+
+# postrun for scripts after virtualization finishes
+if [ -n "${POSTRUN}" ]; then
+ eval ${POSTRUN} >/dev/null 2>&1
+fi
+
+# remove config dirs when finished
+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
+
+echo -e "Bye."
+exit 0
diff --git a/os-plugins/plugins/vmgrid/files/vmgrid b/os-plugins/plugins/vmgrid/files/vmgrid
new file mode 100644
index 00000000..d8ccd938
--- /dev/null
+++ b/os-plugins/plugins/vmgrid/files/vmgrid
@@ -0,0 +1,143 @@
+#!/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/
+# -----------------------------------------------------------------------------
+# 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 <memorysize in MB>] \c"
+ echo -e "[/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}/run-vmgrid.${USER}.$$.log
+ # log into share dir, so that log is available in vm as well
+ echo -e "$1" >> ${vmgrid_rwmnt}/logs/run-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/run-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
+
+# 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 [ ${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 5 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
new file mode 100644
index 00000000..400075cd
--- /dev/null
+++ b/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh
@@ -0,0 +1,135 @@
+# Copyright (c) 2008..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
+
+# 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}
+[ ${vmchooser_active} -ne 0 ] && active=1
+[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
+[ ${vmgrid_active} -ne 0 ] && active=1
+
+[ $DEBUGLEVEL -gt 0 ] \
+ && echo -e "Executing the virtual '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 [ ${vmgrid_active} -ne 0 ]; 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 [ ${vmchooser_active} -ne 0 ]; 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 "machostaddr=${macaddr}" >> ${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
+
+ # 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
index 51361f31..d59227ad 100644
--- a/os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/Distro/Base.pm
@@ -44,190 +44,4 @@ sub initialize
return 1;
}
-sub fillRunlevelScript
-{
- my $self = shift;
- my $location = shift;
- my $kind = shift;
-
-# my $initfile = newInitFile();
-# $initfile->addFunction(
-# 'load_modules',
-# '
-# # 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.ko 2>/dev/null || return 0
-# '
-# {param => "value"}
-# );
-#
-# $initfile->addFunctionCall(
-# 'functionName',
-# 'start', # name of block
-# {priority => 5, }
-# );
-#
-# $initfile->addDaemon("/bin/mydaemon");
-#
-# my $runlevelscript = getInitFileForDistro($initfile, "ubuntu");
-
- my $script = unshiftHereDoc(<<" End-of-Here");
- #!/bin/sh
- # completely generic 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') {
- $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.ko 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
- }
-
- # 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 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 'local25') {
- $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
- #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
- }
- case \$1 in
- start)
- echo "Starting vmware background services ..."
- # include default directories
- . /etc/opt/openslx/openslx.conf
- # load the configuration file
- . \${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf
- load_modules
- setup_vmnet0
- setup_vmnet1
- setup_vmnet8
- ;;
- stop)
- # message output should match the given vendor-os
- echo "Stopping vmware background services ..."
- 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
- ;;
- #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/vmware/OpenSLX/Distro/Fedora.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm
index 1c03540f..912bdfa0 100644
--- a/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/Distro/Fedora.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2007 - OpenSLX GmbH
+# Copyright (c) 2007..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -25,6 +25,5 @@ use OpenSLX::Basics;
### interface methods
################################################################################
-# TODO: implement!
1;
diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm
index a57e5c8e..2e1197d8 100644
--- a/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/Distro/Gentoo.pm
@@ -25,178 +25,4 @@ use OpenSLX::Basics;
### interface methods
################################################################################
-sub fillRunlevelScript
-{
- my $self = shift;
- my $location = shift;
- my $kind = shift;
-
- my $script = unshiftHereDoc(<<" End-of-Here");
- #!/sbin/runscript
- # Gentoo compatible (hopefully) start/stop script, generated via stage1 'vmware'
- # plugin installation
- #
- # inspiration taken from vmware start script:
- # Copyright 1998-2007 VMware, Inc. All rights reserved.
- #
- # This script manages the services needed to run VMware software
-
- # dependency definitions
- depend() {
- # use syslog
- # need ...
- }
-
- # helper functions
- 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.ko 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
- #test -c /dev/vmnet1 || mknod c 119 1 /dev/vmnet1
- # 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-vmnet8.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
- $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
- }
-
- # start/stop functions
- start() {
- ebegin "Starting vmware background services ..."
- # include default directories
- . /etc/opt/openslx/openslx.conf
- # load the configuration file
- . \${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf
- load_modules || eerror "The loading of vmware modules failed"
- setup_vmnet0 || eerror "Problems setting up vmnet0 interface"
- setup_vmnet1 || eerror "Problems setting up vmnet1 interface"
- setup_vmnet8 || eerror "Problems setting up vmnet8 interface"
- eend $?
- }
-
- stop() {
- # message output should match the given vendor-os
- ebegin "Stopping vmware background services ..."
- 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
- eend $?
- }
- End-of-Here
- return $script;
-}
-
1;
diff --git a/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm
index 7d22c70d..c1b2ecf4 100644
--- a/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/Distro/Suse.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -25,209 +25,4 @@ use OpenSLX::Utils;
### interface methods
################################################################################
-sub fillRunlevelScript
-{
- my $self = shift;
- my $location = shift;
- my $kind = shift;
-
- my $script = unshiftHereDoc(<<" End-of-Here");
- #!/bin/sh
- # SuSE compatible start/stop script, generated via stage1 'vmware' plugin
- # installation
- #
- # 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
-
- # helper functions
- 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.ko 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. A complete rewrite would be
- # needed (generation of proper runlevel scripts depending on distro
- # and VMware version, see tickets #211, 290)
- $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
- # available from \$nwif
- 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
- }
- # load the helper stuff
- . /etc/rc.status
- # reset the script status
- rc_reset
-
- case \$1 in
- start)
- echo -n "Starting vmware background services ..."
- # 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
- setup_vmnet0
- setup_vmnet1
- setup_vmnet8
- rc_status -v
- ;;
- stop)
- # message output should match the given vendor-os
- echo -n "Stopping vmware background services ..."
- 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
- # workaround, because we can kill and unload more as we have
- # started
- rc_reset
- rc_status -v
- ;;
- # 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)
- # 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/vmware/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm
index d7ffc2e5..922fb34f 100644
--- a/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/Distro/Ubuntu.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2007 - OpenSLX GmbH
+# Copyright (c) 2007..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
diff --git a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
index 1a4540f0..4ebaa2b6 100644
--- a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008, 2009 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -23,6 +23,7 @@ use File::Path;
use OpenSLX::Basics;
use OpenSLX::Utils;
+use OpenSLX::DistroUtils;
sub new
{
@@ -131,12 +132,12 @@ sub getAttrInfo
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)?
+ plugin itself (vmpl1.0, vmpl2.0, vmpl2.5, vmpl3.0)?
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|vmpl2\.0|vmpl1\.0|vmpl2\.5)$},
+ 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
@@ -255,7 +256,6 @@ sub preInstallationPhase()
}
}
-
sub installationPhase
{
my $self = shift;
@@ -300,6 +300,7 @@ sub installationPhase
if (-e "/usr/bin/vmware" && ! -e "/usr/bin/vmware.slx-bak") {
rename("/usr/bin/vmware", "/usr/bin/vmware.slx-bak");
}
+
}
sub removalPhase
@@ -325,9 +326,7 @@ sub checkStage3AttrValues
my $vendorOSAttrs = shift;
my @problems;
- my $vm_kind = $stage3Attrs->{'vmware::kind'} || '';
-
-
+ my $vm_kind = $stage3Attrs->{'vmware::kind'} || '';
my $vmimg = $stage3Attrs->{'vmware::imagesrc'} || '';
if ($vm_kind eq 'local' && ! -x "/usr/lib/vmware/bin/vmplayer") {
@@ -343,6 +342,13 @@ sub checkStage3AttrValues
);
}
+ 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(
@@ -357,10 +363,10 @@ sub checkStage3AttrValues
);
}
- if ($vm_kind eq 'vmpl1.0' &&
- ! -d "/opt/openslx/plugin-repo/vmware/vmpl1.0/vmroot") {
+ if ($vm_kind eq 'vmpl3.0' &&
+ ! -d "/opt/openslx/plugin-repo/vmware/vmpl3.0/vmroot") {
push @problems, _tr(
- "No OpenSLX installation of VMware Player 1 found or installation failed. Using it as virtual machine wouldn't work!"
+ "No OpenSLX installation of VMware Player 3 found or installation failed. Using it as virtual machine wouldn't work!"
);
}
@@ -374,21 +380,143 @@ sub checkStage3AttrValues
## local, non-general OpenSLX functions
#######################################
-# write the runlevelscript depending on the version
+# Write the runlevelscript
+# usage: _writeRunlevelScript("$vmpath", "$kind")
sub _writeRunlevelScript
{
my $self = shift;
- my $location = shift;
- my $file = shift;
+ my $vmpath = shift;
my $kind = shift;
-
- # $location points to the path where vmware helpers are installed
- # call the distrospecific fillup
- # should use the abstract write runlevel script way, see
- # http://lab.openslx.org/repositories/revision/openslx/2405 ff.
- my $runlevelScript = $self->{distro}->fillRunlevelScript($location, $kind);
+ 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";
+ }
- spitFile($file, $runlevelScript);
+ $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 'local30' || $kind eq 'vmpl3.0') {
+ $script .= unshiftHereDoc(<<" End-of-Here");
+ # VMplayer 3.0 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"
+ );
+ $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
+ $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);
}
@@ -523,12 +651,6 @@ sub _localInstallation
my $vmversion = "";
my $vmbuildversion = "";
- my $pluginFilesPath
- = "$self->{'openslxBasePath'}/lib/plugins/$self->{'name'}/files";
- my $installationPath = "$self->{'pluginRepositoryPath'}/$kind";
-
- mkpath($installationPath);
-
# if vmware ws is installed, vmplayer is installed, too.
# we will only use vmplayer
if (-e "/usr/lib/vmware/bin/vmplayer") {
@@ -538,37 +660,43 @@ sub _localInstallation
$vmversion = $versionhash{vmversion};
$vmbuildversion = $versionhash{vmbuildversion};
- ## Copy needed files
- my @files = qw(nvram);
- foreach my $file (@files) {
- copyFile("$pluginFilesPath/$file", "$installationPath");
+ # 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, Workstation 7.0
+ } elsif ($vmversion eq "3.0" || $vmversion eq "7.0") {
+ $kind="local30";
}
+ # Create runlevel script depending on detected version
+ $self->_writeRunlevelScript("$vmpath", "$kind");
- # Create runlevel script -> to be fixed!!
- my $runlevelScript = "$self->{'pluginRepositoryPath'}/$kind/vmware.init";
- if ($vmversion eq "2.5") {
- $self->_writeRunlevelScript($vmbin, $runlevelScript, "local25");
- } elsif ($vmversion eq "3.0") {
- $self->_writeRunlevelScript($vmbin, $runlevelScript, "local30");
- } else {
- $self->_writeRunlevelScript($vmbin, $runlevelScript, $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");
}
- # Create wrapper scripts
- if (-e "/usr/bin/vmware") {
- $self->_writeWrapperScript("$vmpath", "$kind", "ws")
- } else {
- $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 }
-
- ## Creating needed config /etc/vmware/config
+ } # 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;
@@ -595,8 +723,7 @@ sub _vmpl2Installation {
system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind");
# Create runlevel script
- my $runlevelScript = "$self->{'pluginRepositoryPath'}/$kind/vmware.init";
- $self->_writeRunlevelScript($vmbin, $runlevelScript, $kind);
+ $self->_writeRunlevelScript($vmpath, $kind);
# Create wrapperscripts
$self->_writeWrapperScript("$vmpath", "$kind", "player");
@@ -631,8 +758,7 @@ sub _vmpl25Installation {
system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind");
# Create runlevel script
- my $runlevelScript = "$self->{'pluginRepositoryPath'}/$kind/vmware.init";
- $self->_writeRunlevelScript($vmbin, $runlevelScript, $kind);
+ $self->_writeRunlevelScript($vmpath, $kind);
# Create wrapperscripts
$self->_writeWrapperScript("$vmpath", "$kind", "player");
@@ -667,8 +793,7 @@ sub _vmpl1Installation {
system("/bin/sh /opt/openslx/plugin-repo/$self->{'name'}/$kind/install-vmpl.sh $kind");
# Create runlevel script
- my $runlevelScript = "$self->{'pluginRepositoryPath'}/$kind/vmware.init";
- $self->_writeRunlevelScript($vmbin, $runlevelScript, $kind);
+ $self->_writeRunlevelScript($vmpath, $kind);
# create wrapper scripts
$self->_writeWrapperScript("$vmpath", "$kind", "player");
diff --git a/os-plugins/plugins/vmware/XX_vmware.sh b/os-plugins/plugins/vmware/XX_vmware.sh
index b31df648..116561f6 100644
--- a/os-plugins/plugins/vmware/XX_vmware.sh
+++ b/os-plugins/plugins/vmware/XX_vmware.sh
@@ -12,6 +12,10 @@
# 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
@@ -43,6 +47,7 @@ if [ -e /initramfs/plugin-conf/vmware.conf ]; then
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:
@@ -55,27 +60,9 @@ stage3 setup" > ${PLUGINCONFDIR}/vmware.conf
if [ "$vmware_bridge" = 1 ] ; then
echo "vmnet0=true" >> ${PLUGINCONFDIR}/vmware.conf
fi
- # write the common dhcpd.conf header for vmnet1,8
- if [ -n "$vmware_vmnet1" -o -n "$vmware_vmnet8" ] ; then
- # use the dns servers known to the vmware host
- local dnslist=$(echo "$domain_name_servers"|sed "s/ /,/g")
- echo "# Common dhcpd.conf header written in stage3 ..." \
- > /mnt/etc/vmware/dhcpd-head.conf
- echo "allow unknown-clients;" \
- >> /mnt/etc/vmware/dhcpd-head.conf
- echo "default-lease-time 1800;" \
- >> /mnt/etc/vmware/dhcpd-head.conf
- echo "max-lease-time 7200;" \
- >> /mnt/etc/vmware/dhcpd-head.conf
- echo "option domain-name-servers $dnslist;" \
- >> /mnt/etc/vmware/dhcpd-head.conf
- echo "option domain-name \"vm.local\";" \
- >> /mnt/etc/vmware/dhcpd-head.conf
- fi
# variable might contain ",NAT" which is to be taken off
if [ -n "$vmware_vmnet1" ] ; then
- cp /mnt/etc/vmware/dhcpd-head.conf /mnt/etc/vmware/dhcpd-vmnet1.conf
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'">
@@ -83,26 +70,15 @@ stage3 setup" > ${PLUGINCONFDIR}/vmware.conf
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
- echo -e "\n# definition for virtual vmnet1 interface" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- echo -e "subnet $(ipcalc -n $vmnet1|sed s/.*=//) netmask \
-$(ipcalc -m $vmnet1|sed s/.*=//) {" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- echo -e "\trange ${vmsub}.10 ${vmsub}.20;" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- echo -e "\toption broadcast-address $(ipcalc -b $vmnet1|sed s/.*=//);" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- # Maybe a different ip is needed s. nat: vmnet="${vmsub}.2"
- echo -e "\toption routers $vmip;" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- echo -e "}" \
- >> /mnt/etc/vmware/dhcpd-vmnet1.conf
- mknod /dev/vmnet1 c 119 1
+ # 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
- cp /mnt/etc/vmware/dhcpd-head.conf /mnt/etc/vmware/dhcpd-vmnet8.conf
local vmnet8ip=${vmware_vmnet8%/*}
local vmpx=${vmware_vmnet8#*/}
local vmsub=$(echo $vmnet8ip |sed 's,\(.*\)\..*,\1,') # x.x.x.x => x.x.x">
@@ -111,19 +87,12 @@ $(ipcalc -m $vmnet1|sed s/.*=//) {" \
local vmip="${vmsub}.1"
local vmnet="${vmsub}.2"
echo -e "vmnet8=$vmip/$vmpx" >>${PLUGINCONFDIR}/vmware.conf
- echo -e "\n# definition for virtual vmnet8 interface" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.conf
- echo -e "subnet $(ipcalc -n $vmip/$vmpx|sed s/.*=//) netmask \
-$(ipcalc -m $vmip/$vmpx|sed s/.*=//) {" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.conf
- echo -e "\trange ${vmsub}.10 ${vmsub}.20;" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.conf
- echo -e "\toption broadcast-address $(ipcalc -b $vmip/$vmpx|sed s/.*=//);" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.conf
- echo -e "\toption routers $vmnet;" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.conf
- echo -e "}" \
- >> /mnt/etc/vmware/dhcpd-vmnet8.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]" \
@@ -143,11 +112,9 @@ $(ipcalc -m $vmip/$vmpx|sed s/.*=//) {" \
echo -e "[incomingudp]" \
>> /mnt/etc/vmware/nat.conf
echo "00:50:56:F1:30:50" > /mnt/etc/vmware/vmnet-natd-8.mac
- mknod /dev/vmnet8 c 119 8
fi
# copy the runlevel script to the proper place and activate it
- sed "s/eth0/$nwif/g" ${PLUGINDIR}/${vmware_kind}/vmware.init \
- > /mnt/etc/init.d/vmware-env \
+ 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
@@ -174,16 +141,16 @@ ${vmware_imagesrc}." nonfatal
############################################################################
# vmware stuff second part: setting up the environment
- # make vmware dhcpd more silent
- touch /mnt/var/run/vmware/dhcpd-vmnet1.leases \
- /mnt/var/run/vmware/dhcpd-vmnet8.leases
+ # 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/vmmon c 10 165"; do
+ 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
@@ -196,9 +163,8 @@ ${vmware_imagesrc}." nonfatal
prefvmx.useRecommendedLockedMemSize = "TRUE"' | sed -e "s/^ *//" \
>/mnt/etc/vmware/config
- # copy version depending files - the vmchooser expects for every virtua-
- # lization plugin a file named after it (here run-vmware.include)
- cp ${PLUGINDIR}/run-virt.include ${PLUGINCONFDIR}/run-vmware.include
+ # 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
diff --git a/os-plugins/plugins/vmware/files/run-virt.include b/os-plugins/plugins/vmware/files/run-virt.include
index 6641d491..8b91275a 100644
--- a/os-plugins/plugins/vmware/files/run-virt.include
+++ b/os-plugins/plugins/vmware/files/run-virt.include
@@ -1,7 +1,7 @@
# run-virt.include
# -----------------------------------------------------------------------------
-# Copyright (c) 2009 - RZ Uni Freiburg
-# Copyright (c) 2009 - OpenSLX GmbH
+# 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
@@ -13,7 +13,7 @@
# -----------------------------------------------------------------------------
# run-virt.include
# - component for vmware/player of the vmchooser plugin run-virt.sh
-# -----------------------------------------------------------------------------
+################################################################################
# configuration writer functions
################################################################################
@@ -42,7 +42,7 @@ sharedFolder.option = \"alwaysEnabled\"" >>${conffile}
esac
case "$vmversion" in
2.5|3.*|6.5|7.*)
- if [ "${cpu_cores}" -ge "2" 2>/dev/null]; then
+ if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then
numvcpus="2"
fi
cap3d="TRUE" # helper var for loging output
@@ -140,8 +140,8 @@ usb.generic.autoconnect = \"TRUE\"
sharedFolder0.present = \"TRUE\"
sharedFolder0.enabled = \"${shared_folder}\"
sharedFolder0.expiration = \"never\"
-sharedFolder0.guestName = \"Home\"
-sharedFolder0.hostPath = \"${HOME}\"
+sharedFolder0.guestName = \"${sharename}\"
+sharedFolder0.hostPath = \"${sharepath}\"
sharedFolder0.readAccess = \"TRUE\"
sharedFolder0.writeAccess = \"TRUE\"
sharedFolder.maxNum = \"1\"
@@ -300,30 +300,41 @@ case "$parallel" in
;;
esac
-# percentage of memory to use for vmwares in standard case
-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
+# adjust memory available for vmware guests
+if [ -n "${forcemem}" ]; then
+ mem="${forcemem}"
+else
+ case "$vmversion" in
+ 2.*)
+ permem=30
+ ;;
+ 3.*)
+ permem=25
+ ;;
+ esac
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
- memhost=$(expr ${totalmem} - ${mem})
-else
- memhost=$(expr ${totalmem} - ${mem} - ${mem})
+ # 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
@@ -390,8 +401,8 @@ 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" ] || [ "${memhost}" -lt "256" ]; then
- writelog "\tMemory out of range: ${mem} MB (guest) / ${memhost} MB (host)!"
+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
@@ -413,7 +424,8 @@ if [ -n "${network_card}" ]; then
writelog "\tNet Adaptor:\t${network_card}"
fi
writelog "\tMem:\t\t${mem} MB"
-writelog "\tHostmem:\t${memhost} 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}"
@@ -443,6 +455,6 @@ writelog ""
# finally set env for run-virt.sh
################################################################################
-VIRTCMD=vmplayer
+# 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
index 6aabe8ad..07113867 100755
--- 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
@@ -1,5 +1,5 @@
#!/bin/ash
-# Copyright (c) 2009 - OpenSLX GmbH
+# Copyright (c) 2009..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
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
new file mode 100755
index 00000000..6bdfb8f1
--- /dev/null
+++ b/os-plugins/plugins/vmware/init-hooks/60-have-servconfig/vm-dhcpd.sh
@@ -0,0 +1,56 @@
+#!/bin/ash
+# 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)
+#############################################################################
+
+# configuring dhcpd stub for virtual networks
+testmkd /mnt/etc/opt/openslx
+echo "
+# 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
+
+opt dns ${domain_name_servers}
+option subnet 255.255.255.0
+opt router CNETWORK.254
+opt 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
+" >/mnt/etc/opt/openslx/udhcpd.conf
diff --git a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
index 5e500b49..8af752b4 100644
--- a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
+++ b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
@@ -59,24 +59,126 @@ sub getAttrInfo
End-of-Here
content_regex => qr{^(0|1)$},
content_descr => '1 means active - 0 means inactive',
- default => '1',
+ # 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 and for SUSE 10.2 netloop other OS: to be checked
- if ($makeInitRamFSEngine->{'distro-name'} =~ m{^suse}i) {
- push @suggestedModules, qw( bridge netloop )
- }
-
+
+ # 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
index ba2c4f00..af3f6cc4 100644
--- a/os-plugins/plugins/xen/XX_xen.sh
+++ b/os-plugins/plugins/xen/XX_xen.sh
@@ -14,16 +14,60 @@
# script is included from init via the "." load function - thus it has all
# variables and functions available
-if [ -e /initramfs/plugin-conf/xen.conf ]; then
- . /initramfs/plugin-conf/xen.conf
- if [ $xen_active -ne 0 ]; then
+# 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
-
- modprobe loop max_loop=64
fi
fi
diff --git a/os-plugins/plugins/xen/files/hvm.include b/os-plugins/plugins/xen/files/hvm.include
new file mode 100644
index 00000000..beb9315a
--- /dev/null
+++ b/os-plugins/plugins/xen/files/hvm.include
@@ -0,0 +1,209 @@
+# 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
new file mode 100644
index 00000000..06848949
--- /dev/null
+++ b/os-plugins/plugins/xen/files/machine.include
@@ -0,0 +1,167 @@
+# 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
new file mode 100644
index 00000000..43213e34
--- /dev/null
+++ b/os-plugins/plugins/xen/files/run-virt.include
@@ -0,0 +1,157 @@
+# 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 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-have-nw-modules/xen.sh b/os-plugins/plugins/xen/init-hooks/10-have-nw-modules/xen.sh
deleted file mode 100644
index 321b6a06..00000000
--- a/os-plugins/plugins/xen/init-hooks/10-have-nw-modules/xen.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-# configure Xen bridge xenbr0
-modprobe ${MODPRV} netloop
-local ipls
-local vifnum="0"
-local bridge="xenbr${vifnum}"
-local netdev="eth${vifnum}"
-local pdev="p${netdev}"
-local vdev="veth${vifnum}"
-local vif0="vif0.${vifnum}"
-# fixme: that is the mac address of main ethernet device
-local mac=`ip link show ${netdev} | grep 'link\/ether' | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/'`
-
-brctl addbr ${bridge}
-brctl stp ${bridge} off
-brctl setfd ${bridge} 0
-brctl addif ${bridge} ${vif0}
-for ipls in "${netdev} name ${pdev}" "${vdev} name ${netdev}" \
- "${pdev} down arp off" "${pdev} addr fe:ff:ff:ff:ff:ff" \
- "${netdev} addr ${mac} arp on" "${bridge} up" "${vif0} up" \
- "${pdev} up" "${netdev} up"; do
- ip link set ${ipls}
-done
-brctl addif ${bridge} ${pdev}
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
new file mode 100644
index 00000000..d514b68d
--- /dev/null
+++ b/os-plugins/plugins/xen/init-hooks/10-nw-if-config/xennet.sh
@@ -0,0 +1,4 @@
+# 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
new file mode 100755
index 00000000..6aabe8ad
--- /dev/null
+++ b/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/bridge.sh
@@ -0,0 +1,30 @@
+#!/bin/ash
+# 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/xen/init-hooks/20-nw-bridge-config/xen-bridge.sh b/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/xen-bridge.sh
deleted file mode 100755
index 7267969c..00000000
--- a/os-plugins/plugins/xen/init-hooks/20-nw-bridge-config/xen-bridge.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/ash
-# 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
-#
-# XEN specific init hook to create a bridge on the active network interface
-#############################################################################
-
-# configure Xen bridge xenbr0 (would it be possible to make it just br0?)
-
-modprobe ${MODPRV} netloop
-local ipls
-local vifnum="0"
-local bridge="xenbr${vifnum}"
-local netdev="eth${vifnum}" # should be ${nwif}
-local pdev="p${netdev}"
-local vdev="veth${vifnum}"
-local vif0="vif0.${vifnum}"
-# fixme: that is the mac address of main ethernet device
-local mac=${macaddr}
-
-brctl addbr ${bridge}
-brctl stp ${bridge} off
-brctl setfd ${bridge} 0.000000000001
-brctl addif ${bridge} ${vif0}
-for ipls in "${netdev} name ${pdev}" "${vdev} name ${netdev}" \
- "${pdev} down arp off" "${pdev} addr fe:ff:ff:ff:ff:ff" \
- "${netdev} addr ${mac} arp on" "${netdev} addr ${mac} arp on" \
- "${bridge} up" "${vif0} up" "${pdev} up" ; do
- ip link set ${ipls}
-done
-brctl addif ${bridge} ${pdev}
-
-# 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/Suse.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
index 4cb7804b..61372d54 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
@@ -356,7 +356,6 @@ sub installAtiOldStyle
}
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
new file mode 100644
index 00000000..5cddcef0
--- /dev/null
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm
@@ -0,0 +1,53 @@
+# 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
index 537ef54c..728e6a03 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -26,6 +26,21 @@ 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;
@@ -37,6 +52,12 @@ sub setupXserverScript
# Ubuntu specific extension to stage3 xserver.sh
testmkd /mnt/var/run/xauth
testmkd /mnt/var/lib/xkb
+ ln -sf /usr/bin/Xorg /mnt/etc/X11/X
+ # newer Xorgs do not need predefined configuration file, not needed if
+ # XserverPathInfo gets implemented ...
+ sed -e "1i# xorg.conf not needed in most cases for Xorg 1.7+" \
+ /mnt/etc/X11/xorg.conf >/etc/X11/xorg.openslx 2>/dev/null
+ rm /mnt/etc/X11/xorg.conf 2>/dev/null
End-of-Here
return $script;
diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm
new file mode 100644
index 00000000..0c152dba
--- /dev/null
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm
@@ -0,0 +1,71 @@
+# 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
+ 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
new file mode 100644
index 00000000..80dccbc9
--- /dev/null
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm
@@ -0,0 +1,30 @@
+# 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/init-hooks/00-started/xserver.sh b/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh
index 71d185e0..f9c3e7a7 100644
--- a/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh
+++ b/os-plugins/plugins/xserver/init-hooks/00-started/xserver.sh
@@ -19,6 +19,11 @@
# automatic Xorg configation fails in this field. If no useable info was
# detected just delete the file.
+# not really needed for ubuntu 10.04
+# ToDo: fix so it is not installed by default
+#echo ${slx_distro_name}${slx_distro_ver}>/tmp/utest
+#[ ${slx_distro_name} = "ubuntu" ] && [ ${slx_distro_ver} = "10.04" ] && exit 0
+
# tablet detection function
tabletdetect () {
sleep 1; waitfor /etc/hwinfo.bios 20000
@@ -39,4 +44,3 @@ tabletdetect () {
( hwinfo --monitor >/etc/hwinfo.display; grep "Generic Monitor" \
/etc/hwinfo.display >/dev/null 2>&1 && rm /etc/hwinfo.display ) &
( tabletdetect ) &
-