summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/qemukvm/files
diff options
context:
space:
mode:
Diffstat (limited to 'os-plugins/plugins/qemukvm/files')
-rw-r--r--os-plugins/plugins/qemukvm/files/ifdown (renamed from os-plugins/plugins/qemukvm/files/qemu-ifdown)0
-rw-r--r--os-plugins/plugins/qemukvm/files/ifup (renamed from os-plugins/plugins/qemukvm/files/qemu-ifup)27
-rw-r--r--os-plugins/plugins/qemukvm/files/run-virt.include50
3 files changed, 41 insertions, 36 deletions
diff --git a/os-plugins/plugins/qemukvm/files/qemu-ifdown b/os-plugins/plugins/qemukvm/files/ifdown
index 8c52d76f..8c52d76f 100644
--- a/os-plugins/plugins/qemukvm/files/qemu-ifdown
+++ b/os-plugins/plugins/qemukvm/files/ifdown
diff --git a/os-plugins/plugins/qemukvm/files/qemu-ifup b/os-plugins/plugins/qemukvm/files/ifup
index 1f1e0cc6..ed4a277d 100644
--- a/os-plugins/plugins/qemukvm/files/qemu-ifup
+++ b/os-plugins/plugins/qemukvm/files/ifup
@@ -9,14 +9,14 @@
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
-# qemu-ifup
+# ifup
# - Script used for network setup of qemukvm in stage4
# -----------------------------------------------------------------------------
. /etc/opt/openslx/openslx.conf
PLUGINCONFDIR=${OPENSLX_DEFAULT_CONFDIR}/plugins/qemukvm
-PLUGINDIR=${OPENSLX_DEFAULT_PLUGINDIRDIR}/qemukvm
+QKTMPDIR=/tmp/qemukvm/$USER/$$
# Use the udhcpcd as DHCP server and brctl as provided by default in OpenSLX
# environments via uclibc-wrapper.
@@ -31,33 +31,32 @@ case "$1" in
;;
tap1)
# Configuring DHCP on host tap1 interface and enable IP masquerading
- [ -d /tmp/qemu-$USER ] || mkdir -p /tmp/qemu-$USER
+ [ -d ${QKTMPDIR} ] || mkdir -p ${QKTMPDIR}
# cut the last .NNN/MM from nataddress
sed -e "s,NWIF,tap1,;s,/misc/,/qemu/," \
- -e "s,CNETWORK,${nataddress%.*},;s,PIDFILE,/tmp/qemu-$USER/udhcpd.pid," \
- -e "s,LEASEFILE,/tmp/qemu-$USER/udhcpd.leases," \
- ${PLUGINDIR}/udhcpd.conf \
- >/tmp/qemu-$USER/udhcpd.conf
- touch /tmp/qemu-$USER/udhcpd.leases
+ -e "s,CNETWORK,${nataddress%.*},;s,PIDFILE,${QKTMPDIR}/udhcpd.pid," \
+ -e "s,LEASEFILE,${QKTMPDIR}/udhcpd.leases," \
+ ${OPENSLX_DEFAULT_CONFDIR}/udhcpd.conf \
+ >${QKTMPDIR}/udhcpd.conf
+ touch ${QKTMPDIR}/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
+ -S ${QKTMPDIR}/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
+ [ -d ${QKTMPDIR} ] || mkdir -p /tmp/qemu-$USER
sed "s,NWIF,tap2,;s,/misc/,/qemu/,;s,USER,$USER,;s,CNETWORK,$hoaddress," \
- /etc/opt/openslx/udhcpd.conf >/tmp/qemu-$USER/udhcpd.conf
- touch /tmp/qemu-$USER/udhcpd.leases
+ ${OPENSLX_DEFAULT_CONFDIR}/udhcpd.conf >${QKTMPDIR}/udhcpd.conf
+ touch ${QKTMPDIR}/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
+ -S ${QKTMPDIR}/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 0cec83da..bdf9666f 100644
--- a/os-plugins/plugins/qemukvm/files/run-virt.include
+++ b/os-plugins/plugins/qemukvm/files/run-virt.include
@@ -31,7 +31,8 @@ fi
### Declaration of default variables
################################################################################
-PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}"
+PLUGINCONFQK="${PLUGINCONFROOT}/${self}"
+PLUGINDIRQK=${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}
# create TMPDIR for all users
mkdir -m 1777 /tmp/${self} 2>/dev/null
# TMPDIR
@@ -51,11 +52,12 @@ else
exit 1
fi
-# display name
+# 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$QKTMPDIR"
+writelog "\tTMPDIR:\t\t\t$QKTMPDIR"
writelog "Diskimage:"
writelog "\tDisk type:\t\t$imgtype"
writelog "\tDisk file:\t\t$diskfile"
@@ -112,16 +114,21 @@ VIRTCMDOPTS="${VIRTCMDOPTS} -m ${mem}"
network_card=${network_card:=pcnet}
VIRTCMDOPTS="${VIRTCMDOPTS} -net nic,model=${network_card}"
+# define net kind and apply script
+qemu_ifscripts="script=${PLUGINDIRQK}/ifup,downscript=${PLUGINDIRQK}/ifdown"
case "${network_kind}" in
bridge*)
- VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap0"
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap0,${qemu_ifscripts}"
+ ;;
+ NAT|nat)
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap1,${qemu_ifscripts}"
;;
hostonly|host-only)
- VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap2"
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap2,${qemu_ifscripts}"
;;
*)
- network_kind="NAT"
- VIRTCMDOPTS="${VIRTCMDOPTS} -net tap,ifname=tap1"
+ network_kind="user"
+ VIRTCMDOPTS="${VIRTCMDOPTS} -net user"
;;
esac
@@ -226,40 +233,39 @@ writelog "\tNetwork kind:\t\t${network_kind}"
#-show-cursor show cursor
# check for kvm modules
-# TODO: check for /dev/kvm
if [ -n "${kvm}" ]; then
- if lsmod |Ęgrep ${kvm}; then
+ if [ -e /dev/kvm ]; then
for tool in kvm qemu-kvm; do
VIRTCMD=$(which ${tool} 2>/dev/null)
[ -n "$VIRTCMD" ] && break
done
else
- writelog "KVM available but no modules loaded, maybe compiled into kernel?"
VIRTCMD=$(which qemu 2>/dev/null)
+ writelog "KVM available but /dev/kvm not found!"
+ writelog "Trying fallback to QEMU emulation."
fi
fi
-# set the variables appropriately
-#for tool in kvm qemu-kvm qemu; do
-# VIRTCMD=$(which ${tool} 2>/dev/null)
-# [ -n "$VIRTCMD" ] && break
-#done
-
if [ -z "${VIRTCMD}" ]; then
- writelog "No QEMU/KVM found."
+ writelog "No QEMU/KVM found, exiting!"
rm -rf ${RMDIRS}
exit 1
-elif [ "${VIRTCMD}" = "qemu" ]; then
- writelog "No KVM fouund. Starting slow QEMU emulation"
- VIRTCMD="qemu"
+elif [ "${VIRTCMD##*/}" = "qemu" ]; then
+ writelog "No user space KVM found. Using slow QEMU emulation"
+ writelog "User space emulation:\t\t${VIRTCMD}"
else
+ writelog "User space virtualization:\t${VIRTCMD}"
VIRTCMD="sudo $VIRTCMD"
fi
+# 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} -boot c -alt-grab -nographic"
+VIRTCMDOPTSHL="${VIRTCMDOPTS} -alt-grab -nographic -snapshot ${diskfile}"
# graphical start
VIRTCMD="$VIRTCMD"
-VIRTCMDOPTS="${VIRTCMDOPTS} -boot c -alt-grab -full-screen ${diskfile}"
+VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab -full-screen -snapshot ${diskfile}"