summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
diff options
context:
space:
mode:
Diffstat (limited to 'os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm')
-rw-r--r--os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm27
1 files changed, 22 insertions, 5 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