summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/qemukvm/XX_qemukvm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'os-plugins/plugins/qemukvm/XX_qemukvm.sh')
-rw-r--r--os-plugins/plugins/qemukvm/XX_qemukvm.sh107
1 files changed, 62 insertions, 45 deletions
diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
index a63af161..13c2b91e 100644
--- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh
+++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
@@ -11,40 +11,56 @@
# 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/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." nonfatal
- 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)
@@ -60,41 +76,42 @@ qemu(-kvm)\n makes not much sense." nonfatal
[ $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/plugins/qemukvm
- cp /mnt/opt/openslx/plugin-repo/qemukvm/run-virt.include \
- /mnt/etc/opt/openslx/plugins/qemukvm/run-qemukvm.include
+
# 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" \
- >/mnt/etc/opt/openslx/plugins/qemukvm/network.qemukvm
+ >${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
+ ln -sf ${PLUGINDIR}/ifup ${PLUGINCONFDIR}/ifup
+ ln -sf ${PLUGINDIR}/ifdown ${PLUGINCONFDIR}/ifdown
- for qemubin in qemu kvm ; do
- qemu="$(binfinder ${qemubin})"
- [ -n "${qemu}" ] && \
- echo "ALL ALL=NOPASSWD: ${qemu}" >>/mnt/etc/sudoers
+ for qemubin in qemu-kvm kvm qemu ; 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
+ #killall=$(binfinder killall)
+ 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*
+# TODO: check if kvm / qemu sufficient
+#ALL ALL=NOPASSWD: ${killall} udhcpd
+#ALL ALL=NOPASSWD: ${PLUGINDIR}/ifup
+#ALL ALL=NOPASSWD: ${PLUGINDIR}/ifdown
+#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemukvm/if*
+#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/ip addr add * dev tap*
+EOF
fi
else
- [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of qemukvm plugin failed"
+ [ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of 'qemukvm' plugin failed"
fi