diff options
| -rw-r--r-- | os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm | 10 | ||||
| -rw-r--r-- | os-plugins/plugins/qemukvm/XX_qemukvm.sh | 31 | ||||
| -rw-r--r-- | os-plugins/plugins/qemukvm/files/qemu-ifup | 14 | ||||
| -rw-r--r-- | os-plugins/plugins/qemukvm/files/run-virt.include | 1 |
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 |
