diff options
Diffstat (limited to 'kvm-init-script')
-rw-r--r-- | kvm-init-script | 120 |
1 files changed, 60 insertions, 60 deletions
diff --git a/kvm-init-script b/kvm-init-script index 155e7c6..87d5a48 100644 --- a/kvm-init-script +++ b/kvm-init-script @@ -8,9 +8,9 @@ MONITOR=/var/run/vm/${VMNAME}.monitor QTAP_FILE=/var/run/vm/${VMNAME}.qtap # modify this -VMSOFTWARE=${VMSOFTWARE:-kvm} +VMSOFTWARE=${VMSOFTWARE:-qemu-kvm} DROP_USER=${DROP_USER:-nobody} -MEMORY=${MEMORY:-500M} +MEMORY=${MEMORY:-512M} TIMEOUT=${TIMEOUT:-300} SMP=${SMP:-1} @@ -21,93 +21,93 @@ depend() { } send_command() { - local command="socat -u - UNIX-CONNECT:${MONITOR}" - which nc6 &> /dev/null && command="nc6 -U ${MONITOR} --send-only" - echo "$@" | ${command} >/dev/null 2>&1 + local command="socat -u - UNIX-CONNECT:${MONITOR}" + which nc6 2>&1 > /dev/null && command="nc6 -U ${MONITOR} --send-only" + echo "$@" | ${command} >/dev/null 2>&1 } sanity_check() { - if [ ${VMNAME} = ${SVCNAME} ]; then - eerror "You have to create an init script for each vm:" - eerror " ln -s vm /etc/init.d/vm.vmname" - return 1 - elif [ ! -f "${DISKIMAGE}" ]; then - eerror "couldn't find \$DISKIMAGE '$DISKIMAGE'" - return 1; + if [ "${VMNAME}" = "${SVCNAME}" ]; then + eerror "You have to create an init script for each vm:" + eerror " ln -s vm /etc/init.d/vm.vmname" + return 1 + elif [ ! -f "${DISKIMAGE}" ]; then + eerror "couldn't find \$DISKIMAGE '$DISKIMAGE'" + return 1; fi } start() { - sanity_check + sanity_check - img=$(readlink -f "${DISKIMAGE}") - [ -z "$img" ] && { - eerror "couldn't find ${DISKIMAGE}" - return 1; - } - - mkdir -p $(dirname ${PIDFILE}) $(dirname ${MONITOR}) - ebegin "creating qtap ${QTAP:-(auto allocating one)}" - QTAP_RET=$(qtap-manipulate create ${QTAP}); - if [ 0 != $? ]; then - eerror "failed to create qtap interface" - return 1 + img=$(readlink -f "${DISKIMAGE}") + [ -z "$img" ] && { + eerror "couldn't find ${DISKIMAGE}" + return 1; + } + + mkdir -p $(dirname ${PIDFILE}) $(dirname ${MONITOR}) + ebegin "creating qtap ${QTAP:-(auto allocating one)}" + QTAP_RET=$(qtap-manipulate create ${QTAP}); + if [ 0 != $? ]; then + eerror "failed to create qtap interface" + return 1 fi - QTAP=${QTAP:-${QTAP_RET}} - echo "${QTAP}" > ${QTAP_FILE} - eend $? + QTAP=${QTAP:-${QTAP_RET}} + echo "${QTAP}" > ${QTAP_FILE} + eend $? - ebegin "Starting ${VMSOFTWARE-qemu} for ${VMNAME} at VNC port${VNC}" - start-stop-daemon --start /usr/bin/${VMSOFTWARE-qemu} \ + ebegin "Starting ${VMSOFTWARE-qemu} for ${VMNAME} at VNC port${VNC}" + start-stop-daemon --start /usr/bin/${VMSOFTWARE-qemu} \ --pidfile ${PIDFILE} \ -- -daemonize -pidfile ${PIDFILE} -monitor unix:${MONITOR},server,nowait \ -runas ${DROP_USER} -name ${VMNAME} \ - -drive file="$img",if=${DRIVE_MODEL:-virtio},boot=on \ + -drive file="$img",if=${DRIVE_MODEL:-virtio},cache=${DRIVE_CACHE:-none} \ -net nic,model=${NIC_MODEL:-virtio},macaddr=${MACADDR} -net tap,ifname=${QTAP},script=no \ ${DISABLE_KVM:---enable-kvm} \ ${MEMORY:+-m ${MEMORY}} ${SMP:+-smp ${SMP}} ${VNC:+-vnc ${VNC}} ${OTHER_ARGS} - ret=$? - if [ "0" != "${ret}" ]; then - qtap-manipulate destroy ${QTAP} - fi - eend ${ret} + ret=$? + if [ "0" != "${ret}" ]; then + qtap-manipulate destroy ${QTAP} + fi + eend ${ret} } reboot() { - if [ ${VMNAME} = ${SVCNAME} ]; then + if [ ${VMNAME} = ${SVCNAME} ]; then eerror "You have to create an init script for each vm:" eerror " ln -s vm /etc/init.d/vm.vmname" return 1 - fi - - ebegin "Rebooting ${VMNAME}" - send_command system_reset - eend $? + fi + + ebegin "Rebooting ${VMNAME}" + send_command system_reset + eend $? } stop() { - sanity_check + sanity_check - ebegin "Powering off ${VMNAME}" - send_command system_powerdown - eend $? + ebegin "Powering off ${VMNAME}" + send_command system_powerdown + eend $? - ebegin "waiting up to ${TIMEOUT:-60} seconds for it to die" - ret=1 - for x in $(seq 0 ${TIMEOUT:-60}); do - kill -0 $(<$PIDFILE) &> /dev/null || { ret=0; break; } - sleep 1s - done - eend ${ret} + ebegin "waiting up to ${TIMEOUT:-60} seconds for it to die" + ret=1 + for x in $(seq 0 ${TIMEOUT:-60}); do + kill -0 $(cat $PIDFILE) 2>&1 > /dev/null || { ret=0; break; } + sleep 1s + done + eend ${ret} - ebegin "Stopping ${VMSOFTWARE-qemu} for ${VMNAME}" - start-stop-daemon --stop /usr/bin/${VMSOFTWARE-qemu} \ + ebegin "Stopping ${VMSOFTWARE-qemu} for ${VMNAME}" + start-stop-daemon --stop /usr/bin/${VMSOFTWARE-qemu} \ --user ${DROP_USER} \ --pidfile ${PIDFILE} \ --quiet - eend $? - QTAP=$(<${QTAP_FILE}) - ebegin "destroying qtap ${QTAP}" - qtap-manipulate destroy ${QTAP} - eend $? + eend $? + QTAP=$(cat ${QTAP_FILE}) + ebegin "destroying qtap ${QTAP}" + qtap-manipulate destroy ${QTAP} + eend $? } |