summaryrefslogtreecommitdiffstats
path: root/initramfs
diff options
context:
space:
mode:
authorMichael Janczyk2006-09-27 17:43:17 +0200
committerMichael Janczyk2006-09-27 17:43:17 +0200
commited033ffcf7846ee50ba2786fde43d2dbb70b6ffd (patch)
tree172fbc8cea44a44900e8dcb57eca20d1e1d5cafb /initramfs
parentRenaming of management-framework to ldap-site-mngmt, minor addition to (diff)
downloadcore-ed033ffcf7846ee50ba2786fde43d2dbb70b6ffd.tar.gz
core-ed033ffcf7846ee50ba2786fde43d2dbb70b6ffd.tar.xz
core-ed033ffcf7846ee50ba2786fde43d2dbb70b6ffd.zip
added xen network bridge configuration ./mkdxs... -m "netloop"
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@396 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initramfs')
-rw-r--r--initramfs/initrd-stuff/etc/functions33
-rwxr-xr-xinitramfs/initrd-stuff/init7
-rwxr-xr-xinitramfs/mkdxsinitrd25
3 files changed, 58 insertions, 7 deletions
diff --git a/initramfs/initrd-stuff/etc/functions b/initramfs/initrd-stuff/etc/functions
index f52a9f41..4a441550 100644
--- a/initramfs/initrd-stuff/etc/functions
+++ b/initramfs/initrd-stuff/etc/functions
@@ -2,8 +2,9 @@
# (included by init, hwautocfg, servconfig, ... within OpenSLX initial
# ramfs)
#
-# Dirk von Suchodoletz <dvs@OpenSLX.com>, 03-09-2006
+# Dirk von Suchodoletz <dvs@OpenSLX.com>, 26-09-2006
# Felix Endres, 30-04-2006
+# <mj0@uni-freiburg.de> (xenbr), 27-09-2006
# Tobias Maier
#
# (c) 2006 - RZ Universitaet Freiburg
@@ -194,6 +195,33 @@ local n=0
echo $n
}
#######################################################################
+# configure Xen bridge xenbr0
+xenbr_config () {
+modprobe netloop
+local vifnum="0"
+local bridge="xenbr${vifnum}"
+local netdev="eth${vifnum}"
+local pdev="p${netdev}"
+local vdev="veth${vifnum}"
+local vif0="vif0.${vifnum}"
+local mac=$(ip link show ${netdev} | sed -n '/^.*link\/ether/p' \
+ | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/')
+
+brctl addbr ${bridge}
+brctl stp ${bridge} off
+brctl setfd ${bridge} 0
+brctl addif ${bridge} ${vif0}
+ip link set ${netdev} name ${pdev}
+ip link set ${vdev} name ${netdev}
+ip link set ${pdev} down arp off
+ip link set ${pdev} addr fe:ff:ff:ff:ff:ff
+ip link set ${netdev} addr ${mac} arp on
+ip link set ${bridge} up
+ip link set ${vif0} up
+ip link set ${pdev} up
+brctl addif ${bridge} ${pdev}
+}
+#######################################################################
# configure IP address statically - first argument the ip address,
# second the netmask, then gateway and broadcast address and last
# interface. All arguments have to be given.
@@ -403,7 +431,8 @@ if [ -n "$FILESRC" ] ; then
tftpserver=$(uri_token $FILESRC server)
tftpgetunpack $tftp $cfgfile $tftpserver
else
- cfgdir="client-conf"
+ # fixme: We need to know the prefix somehow
+ cfgdir="/tftpboot/client-conf"
local tftpserver=$serverip
# try to get configuration files successively; start with distro client
# and try last distro default ...
diff --git a/initramfs/initrd-stuff/init b/initramfs/initrd-stuff/init
index 3aea9784..022b45f4 100755
--- a/initramfs/initrd-stuff/init
+++ b/initramfs/initrd-stuff/init
@@ -3,6 +3,7 @@
# clients version 4
#
# Dirk von Suchodoletz <dirk@goe.net>, 07-09-2006
+# <mj0@uni-freiburg.de> (xenbr), 27-09-2006
#
# (c) 2006 - RZ Universitaet Freiburg
# (c) 2006 - OpenSLX.ORG project
@@ -177,6 +178,8 @@ nfsroot=\"${NFSROOT}\"\n" >> /etc/machine-setup
# be distinguished from other (dhcp) clients
vci=*)
VCI=${opts#vci=};;
+ xenbr)
+ XENBR=1;;
esac
done
# check if at least one type of IP configuration is availabe
@@ -224,6 +227,10 @@ for mod in ${NWMODULES}; do
done
# set up loopback networking (ipsetup - function defined in /etc/functions)
ipsetup 127.0.0.1 255.0.0.0 0.0.0.0 127.255.255.255 lo
+
+# 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/initramfs/mkdxsinitrd b/initramfs/mkdxsinitrd
index ba890cc8..01305cf7 100755
--- a/initramfs/mkdxsinitrd
+++ b/initramfs/mkdxsinitrd
@@ -7,7 +7,7 @@
# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 18-09-2006
# Nico Dietrich
# Felix Endres
-# mj0, 13-09-2006 theming added
+# <mj0@uni-freiburg.de> (xenbr), 27-09-2006
#
# Copyright: (c) 2003 - 2006 - RZ Universitaet Freiburg
# (c) 2006 - openslx.org project
@@ -62,7 +62,7 @@ D_DEFAULTCOUNTRY="<set in ~/distro-config/distro file>"
usage()
{
echo -e "mkdxsinitrd [-bgh] [-k kernel version] [-i path/file] \
-[-f module(s)] [-n module(s)] [-r path] [-s theme]\n"
+[-f module(s)] [-n module(s)] [-m module(s)] [-r path] [-s theme]\n"
echo "OPTIONEN"
echo " -g Benutze glibc als Basisbibliothek in der ramdisk."
echo " -b Use busybox instead of separate binaries."
@@ -82,6 +82,9 @@ usage()
echo " -n Modulliste"
echo " Kernelmodule zum Betrieb der Clientnetzwerkkarten (z.B. e100 tg3"
echo " via-rhine)."
+ echo " -m Modulliste"
+ echo " Kernelmodule (misc) die nicht von -n bzw. -f abgedeckt werden"
+ echo " (z.B. xenbr for xen network bridge)."
echo " -r path"
echo " Pfad zum Wurzelverzeichnis des zu exportierenden Betriebsystems"
echo " (z.B. /export/10.1)."
@@ -287,7 +290,7 @@ cp -a ${themes}* ${INSTDIR}/usr/share/themes
#########################################################################
# End of function declaration
-while getopts :bhgk:i:r:o:s:f:n:Sut:d:v:I:V:a: a ; do
+while getopts :bhgk:i:r:o:s:f:n:m:Sut:d:v:I:V:a: a ; do
case $a in
\:|\?)
case $OPTARG in
@@ -295,6 +298,7 @@ while getopts :bhgk:i:r:o:s:f:n:Sut:d:v:I:V:a: a ; do
i) echo "-i requires initrd path parameter";;
f) echo "-f requires file system module list parameter";;
n) echo "-n requires network module list parameter";;
+ m) echo "-m requires misc module list parameter";;
r) echo "-r requires root dir parameter";;
s) echo "-s may require theme name";;
t) echo "-t requires tmp dir parameter";;
@@ -314,6 +318,7 @@ while getopts :bhgk:i:r:o:s:f:n:Sut:d:v:I:V:a: a ; do
i) INITRD_PATH=$OPTARG ;;
f) FSMODULES=$OPTARG;;
n) NWMODULES=$OPTARG ;;
+ m) MISCMODULES=$OPTARG ;;
r) ROOTDIR=$OPTARG;;
s) theme=$OPTARG;;
t) INSTDIR=$OPTARG;;
@@ -551,7 +556,6 @@ cobi unionctl bin &>/dev/null || \
cobi cowdev bin &>/dev/null || \
echo "Program cowdev not found; could be ignored ..."
-
# distro specific additional stuff
case "${DISTRO}" in
debian*)
@@ -610,7 +614,8 @@ fi
# put all needed modules into initial ramdisk
mkdir -p ${INSTDIR}/lib/modules/${KERNVER}
-for module in af_packet unix ${NWMODULES} ${FSMODULES} ${DEBUGMODULES}; do
+for module in af_packet unix ${NWMODULES} ${FSMODULES} ${MISCMODULES} \
+ ${DEBUGMODULES}; do
mod=`cd /${ROOTDIR}; find "lib/modules/${KERNVER}" -name ${module}.ko \
2>/dev/null`
@@ -644,6 +649,16 @@ for module in af_packet unix ${NWMODULES} ${FSMODULES} ${DEBUGMODULES}; do
cp ${rdirprefix}/fs/jbd/jbd.ko \
${ddirprefix}/fs/jbd
;;
+ netloop)
+ cobi brctl bin &>/dev/null || \
+ echo "Program brctl not found; could be ignored ..."
+ mkdir -p ${ddirprefix}/drivers/xen/netback
+ mkdir -p ${ddirprefix}/net/bridge
+ cp ${rdirprefix}/drivers/xen/netback/netloop.ko \
+ ${ddirprefix}/drivers/xen/netback &>/dev/null
+ cp ${rdirprefix}/net/bridge/bridge.ko \
+ ${ddirprefix}/net/bridge &>/dev/null
+ ;;
esac
fi
done