summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/qemukvm
diff options
context:
space:
mode:
authorMichael Janczyk2010-03-24 20:01:46 +0100
committerMichael Janczyk2010-03-24 20:01:46 +0100
commit1f031fbafab207fe0879217ae9215caea783ed00 (patch)
treea1e1f8dcadba4602738cb404f9279b9482bbc790 /os-plugins/plugins/qemukvm
parentqemukvm further modifications, first xen runscripts (diff)
downloadcore-1f031fbafab207fe0879217ae9215caea783ed00.tar.gz
core-1f031fbafab207fe0879217ae9215caea783ed00.tar.xz
core-1f031fbafab207fe0879217ae9215caea783ed00.zip
new run-virt.include for xen plugin. qemukvm modules now loaded via runlevelscript qemukvm, script added to sudoers as well. better ideas?
Diffstat (limited to 'os-plugins/plugins/qemukvm')
-rw-r--r--os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm27
-rw-r--r--os-plugins/plugins/qemukvm/XX_qemukvm.sh42
2 files changed, 44 insertions, 25 deletions
diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
index 8029102c..203a7ed3 100644
--- a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
+++ b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
@@ -133,11 +133,6 @@ sub installationPhase
copyFile("$pluginBasePath/$file", "$pluginRepoPath/");
}
chmod 0755, "$pluginRepoPath/ifup", "$pluginRepoPath/ifdown";
-# # Create kvm link
-# my $kvmPath = pathOf('qemu-kvm') || pathOf('kvm') || pathOf('qemu');
-# if (defined $kvmPath) {
-# linkFile($kvmPath, "$pluginRepoPath/qemukvm")
-# }
my $initFile = newInitFile();
$initFile->setName("qemukvm");
@@ -146,7 +141,24 @@ sub installationPhase
# TODO: default dirs als globale funktion anbieten
$initFile->
addToBlock('head','. /etc/opt/openslx/plugins/qemukvm/network.conf');
+
+ # TODO: remove all runlevel links for qemu-kvm or kvm
+ my $kvm_module = unshiftHereDoc(<<' End-of-Here');
+ # Figure out which module we need.
+ if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
+ module=kvm_intel
+ elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
+ module=kvm_amd
+ else
+ unset module
+ fi
+ End-of-Here
+
my $do_start = unshiftHereDoc(<<' End-of-Here');
+ # loading kvm module
+ [ -n "${module}" ] && modprobe -q ${module}
+ # load the tunnel device module
+ modprobe -q tun
# configuring 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
@@ -157,10 +169,14 @@ sub installationPhase
ip addr add ${hoaddress} dev tap2
echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding
echo "1" >/proc/sys/net/ipv4/conf/tap0/forwarding
+ # make /dev/fb0 writable for all
# TODO: maybe solve via group or udev, etc...
chmod 766 /dev/fb*
End-of-Here
+
my $do_stop = unshiftHereDoc(<<' End-of-Here');
+ [ -n "${module}" ] && modprobe -q -r ${module}
+ modprobe -q -r tun
/opt/openslx/uclib-rootfs/usr/sbin/brctl delif br0 tap0
ip addr del ${nataddress} dev tap1
ip addr del ${hoaddress} dev tap2
@@ -168,6 +184,7 @@ sub installationPhase
echo "0" >/proc/sys/net/ipv4/conf/tap0/forwarding
chmod 760 /dev/fb*
End-of-Here
+
my $do_restart = unshiftHereDoc(<<' End-of-Here');
do_stop && do_start
End-of-Here
diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
index b3c4ccf0..2a907861 100644
--- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh
+++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
@@ -39,27 +39,27 @@ if [ -e ${CONFFILE} ]; then
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
+# # 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
+# # 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
@@ -100,6 +100,8 @@ ${qemukvm_imagesrc}." nonfatal
done
#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
# TODO: check if kvm / qemu sufficient
#ALL ALL=NOPASSWD: ${killall} udhcpd
#ALL ALL=NOPASSWD: ${PLUGINDIR}/ifup