diff options
author | Michael Janczyk | 2008-06-11 15:13:58 +0200 |
---|---|---|
committer | Michael Janczyk | 2008-06-11 15:13:58 +0200 |
commit | 0b0f0ae38ed5fe07a8182ddbc54856af315a0b4e (patch) | |
tree | 0f9cb109efa9a7e8187ccee981fd719612772aff | |
parent | fixed damaged patch (diff) | |
download | core-0b0f0ae38ed5fe07a8182ddbc54856af315a0b4e.tar.gz core-0b0f0ae38ed5fe07a8182ddbc54856af315a0b4e.tar.xz core-0b0f0ae38ed5fe07a8182ddbc54856af315a0b4e.zip |
First release of a xen plugin. Only a few diskless corrections inside. Works only with clone and an already installed xen. Karnel has to be chosen manually yet... a solution for runlevellinks in plugins has to be found.
git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1873 95ad53e4-c205-0410-b2fa-d234c58c8868
-rw-r--r-- | initramfs/initrd-stuff/etc/functions | 34 | ||||
-rwxr-xr-x | initramfs/initrd-stuff/init | 5 | ||||
-rw-r--r-- | os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm | 82 | ||||
-rw-r--r-- | os-plugins/plugins/xen/XX_xen.sh | 13 | ||||
-rw-r--r-- | os-plugins/plugins/xen/init-hooks/10-have-nw-modules/xen.sh | 28 |
5 files changed, 129 insertions, 33 deletions
diff --git a/initramfs/initrd-stuff/etc/functions b/initramfs/initrd-stuff/etc/functions index 22e313f8..83992869 100644 --- a/initramfs/initrd-stuff/etc/functions +++ b/initramfs/initrd-stuff/etc/functions @@ -143,32 +143,6 @@ local i echo $n } ############################################################################# -# configure Xen bridge xenbr0 -xenbr_config () { -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=$macaddr - -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" "${netdev} addr ${mac} arp on" \ - "${bridge} up" "${vif0} up" "${pdev} up" ; do - ip link set ${ipls} -done -brctl addif ${bridge} ${pdev} -} -############################################################################# # replace @@@serverip@@@ with real serverip. Allows the usage of a variable # for the server ip address (e.g. in machine-setup or kernel commandline) checkip () @@ -358,7 +332,7 @@ fileget () { local cfgfile [ "x$fileprot" = "x" ] && fileprot=tftp if [ "x$filepath" != "x" ] ; then - cfgfile=${filepath} + cfgfile="${filepath}" [ "x$fileserv" = "x" ] && fileserv=$(checkip ${serverip}) case "$fileprot" in ftp|http) @@ -372,12 +346,12 @@ if [ "x$filepath" != "x" ] ; then mkdir /tmp/$ldev echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems mount -o ro /dev/$ldev /tmp/$ldev || error "$init_errlfg" - unpack /tmp/$ldev/$cfgfile + unpack /tmp/$ldev/"$cfgfile" umount /dev/$ldev ;; *) - tftp -g -r $cfgfile -l /tmp/$(basename $cfgfile) $fileserv \ - && unpack /tmp/$(basename $cfgfile) + tftp -g -r '$cfgfile' -l /tmp/$(basename "$cfgfile") "$fileserv" \ + && unpack /tmp/$(basename "$cfgfile") ;; esac else diff --git a/initramfs/initrd-stuff/init b/initramfs/initrd-stuff/init index d016124b..123abc86 100755 --- a/initramfs/initrd-stuff/init +++ b/initramfs/initrd-stuff/init @@ -346,6 +346,8 @@ else ip link show dev eth1 >/dev/null 2>&1 && error "$init_2eif" nonfatal fi +runinithook '10-have-nw-modules' + # set up loopback networking [ $DEBUGLEVEL -eq 20 ] && echo "** starting ip config at $(sysup)" ip link set dev lo up @@ -354,9 +356,6 @@ ip link set dev $nwif up || error "$init_noeth" macaddr=$(ip link show dev $nwif|sed -n "/ether [0-9e-f]\{2\}:.*/p" \ |sed -e "s/.*ether //;s/ .*//") -# XEN bridge config -[ -n "$xenbr" ] && xenbr_config - # analyze ip information from the kernel command line and put parts # of it into several variables if [ -n "$ipinfo" ] ; then diff --git a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm new file mode 100644 index 00000000..4a8288c8 --- /dev/null +++ b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm @@ -0,0 +1,82 @@ +# Copyright (c) 2007 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# xen.pm +# - implementation of the 'xen' plugin +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::xen; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use File::Path; + +use OpenSLX::Basics; +use OpenSLX::Utils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'bootsplash', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Configures Xen diskless boot, no installation yet. + End-of-Here + precedence => 10, + }; +} + +sub getAttrInfo +{ + my $self = shift; + + return { + 'xen::active' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + should the 'xen'-plugin be executed during boot? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + }; +} + +sub suggestAdditionalKernelModules +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedModules; + + # Ubuntu needs vesafb and fbcon (which drags along some others) + if ($makeInitRamFSEngine->{'distro-name'} =~ m{^suse}i) { + push @suggestedModules, qw( bridge netloop ) + } + + return @suggestedModules; +} + +1; diff --git a/os-plugins/plugins/xen/XX_xen.sh b/os-plugins/plugins/xen/XX_xen.sh new file mode 100644 index 00000000..4f545bbd --- /dev/null +++ b/os-plugins/plugins/xen/XX_xen.sh @@ -0,0 +1,13 @@ +#! /bin/sh +# +# stage3 part of 'xen' plugin - the runlevel script +# +mkdir -p /mnt/var/log/xen & +mkdir -p /mnt/var/run/xend & +mkdir -p /mnt/var/run/xenstored & +cd /mnt/etc/init.d/rc5.d +ln -s ../xendomains K08xendomains +ln -s ../xend K09xend +ln -s ../xend S13xend +ln -s ../xendomains S14xendomains +modprobe loop max_loop=64 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 new file mode 100644 index 00000000..3886c00d --- /dev/null +++ b/os-plugins/plugins/xen/init-hooks/10-have-nw-modules/xen.sh @@ -0,0 +1,28 @@ +# configure Xen bridge xenbr0 +xenbr_config () { + echo -e "Configuring Xen...\c" + 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} + echo " OK" + exit 0 +} |