summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm10
-rw-r--r--os-plugins/plugins/qemukvm/XX_qemukvm.sh31
-rw-r--r--os-plugins/plugins/qemukvm/files/qemu-ifup14
-rw-r--r--os-plugins/plugins/qemukvm/files/run-virt.include1
4 files changed, 37 insertions, 19 deletions
diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
index 23a14924..dbab8728 100644
--- a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
+++ b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
@@ -129,21 +129,29 @@ sub installationPhase
# 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";
my $initFile = newInitFile();
- $initfile->setDesc("Setup environment for QEMU/KVM");
+ $initFile->setDesc("Setup environment for QEMU/KVM");
my $do_start = unshiftHereDoc(<<' End-of-Here');
+ . /etc/opt/openslx/network.qemukvm
# 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
End-of-Here
my $do_stop = unshiftHereDoc(<<' End-of-Here');
+ . /etc/opt/openslx/network.qemukvm
/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
End-of-Here
diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
index be82be2c..49dc165b 100644
--- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh
+++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
@@ -11,15 +11,16 @@
# Script is included from init via the "." load function - thus it has all
# variables and functions available
-write_udhcpd_conf ()
+write_networking_conf ()
{
-local cfgfile=$1
+local natnetwork="192.168.101"
+local honetwork="192.168.102"
echo "
# udhcpd configuration file written by $0 during OpenSLX stage3 configuration
# The start and end of the IP lease block
-start 192.168.101.20
-end 192.168.101.100
+start CNETWORK.20
+end CNETWORK.100
# The interface that udhcpd will use
interface NWIF
@@ -35,8 +36,8 @@ pidfile /tmp/qemu-USER/udhcpd.pid
opt dns ${domain_name_servers}
option subnet 255.255.255.0
-opt router 192.168.101.254
-opt wins 192.168.101.10
+opt router CNETWORK.254
+opt wins CNETWORK.10
option domain virtual.site ${domain_name}
# Additional options known to udhcpd
@@ -51,7 +52,9 @@ option domain virtual.site ${domain_name}
#wins #lease
#ntpsrv #tftp
#bootfile
-" >${cfgfile}
+" >/mnt/etc/opt/openslx/udhcpd.qemukvm
+echo -e "nataddress=${natnetwork}.254/24\nhoaddress=${honetwork}.254/24" \
+ >/mnt/etc/opt/openslx/network.qemukvm
}
# check if the configuration file is available
@@ -109,16 +112,20 @@ ${qemukvm_imagesrc}." nonfatal
cp /mnt/opt/openslx/plugin-repo/qemukvm/run-virt.include \
/mnt/etc/opt/openslx/run-qemukvm.include
# create a template udhcpd configuration file
- write_udhcpd_conf /mnt/etc/opt/openslx/udhcpd.qemukvm
+ write_networking_conf
# copy the runlevel script (proper place for all distros??)
cp /mnt/opt/openslx/plugin-repo/qemukvm/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
- cp /mnt/opt/openslx/plugin-repo/qemukvm/qemu-if* /mnt/etc
- chmod 0755 /mnt/etc/qemu-if* /mnt/etc/init.d/qemukvm
+ 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}" ] && \
@@ -127,8 +134,8 @@ ${qemukvm_imagesrc}." nonfatal
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*" \
- >>/mnt/etc/sudoers
+ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemu*\n\
+ALL ALL=NOPASSWD: killall udhcpd" >>/mnt/etc/sudoers
fi
else
[ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of qemukvm plugin failed"
diff --git a/os-plugins/plugins/qemukvm/files/qemu-ifup b/os-plugins/plugins/qemukvm/files/qemu-ifup
index 75ef3e4b..9cd2dd0b 100644
--- a/os-plugins/plugins/qemukvm/files/qemu-ifup
+++ b/os-plugins/plugins/qemukvm/files/qemu-ifup
@@ -16,6 +16,8 @@
# 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
@@ -26,25 +28,25 @@ case "$1" in
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," \
+ 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/qemu/udhcpd.leases
+ 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/qemu/udhcpd.conf
+ -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," \
+ 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/qemu/udhcpd.leases
+ 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/qemu/udhcpd.conf
+ -S /tmp/qemu-$USER/udhcpd.conf
;;
esac
diff --git a/os-plugins/plugins/qemukvm/files/run-virt.include b/os-plugins/plugins/qemukvm/files/run-virt.include
index df28c217..b1f76535 100644
--- a/os-plugins/plugins/qemukvm/files/run-virt.include
+++ b/os-plugins/plugins/qemukvm/files/run-virt.include
@@ -21,6 +21,7 @@ permem=50
mem=$(expr ${totalmem} / 100 \* ${permem})
VIRTCMDOPTS="${VIRTCMDOPTS} -m ${mem}"
+# network adaptor alternatives: rtl8139, pcnet, e1000
VIRTCMDOPTS="${VIRTCMDOPTS} -net nic,model=pcnet"
case "${network_kind}" in