ALT Linux repos
Group :: Emulators
RPM: qemu
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
#!/bin/sh
#
# qemu-kvm Load/unload the KVM accelerator kernel modules.
#
# chkconfig: - 90 10
# description: KVM accelerator kernel modules.
# processname: kvm
# config: /etc/sysconfig/qemu-kvm
# pidfile: /var/run/qemu-kvm.pid
# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1
# Source function library.
. /etc/init.d/functions
SourceIfNotEmpty /etc/sysconfig/qemu-kvm
LOCKFILE=/var/lock/subsys/qemu-kvm
RETVAL=0
VirtType()
{
local f
for f in $(sed -n '/^flags[[:blank:]]*:/s/^.*:[[:blank:]]*//p' /proc/cpuinfo | head -1); do
case $f in
svm)
KVM_OPTS="$KVM_OPTS $KVM_AMD_OPTS"
echo "amd"
return 0
;;
vmx)
KVM_OPTS="$KVM_OPTS $KVM_INTEL_OPTS"
echo "intel"
return 0
;;
esac
done
return 1
}
start()
{
local m
if m=$(VirtType); then
action "Loading KVM accelerator module (kvm, kvm_$m):" modprobe kvm_$m $KVM_OPTS
RETVAL=$?
[ $RETVAL = 0 ] && touch "$LOCKFILE" ||:
else
echo "CPU can't support hardware virtualization"'!' >&2
RETVAL=1
fi
return $RETVAL
}
stop()
{
local m
if m=$(grep '^kvm_' /proc/modules); then
m=${m%% *}
action "Unloading KVM accelerator modules (kvm, $m):" modprobe -r $m
fi
RETVAL=$?
[ $RETVAL = 0 ] && rm -f "$LOCKFILE" ||:
return $RETVAL
}
restart()
{
stop
start
}
status()
{
if grep -qs '^kvm_' /proc/modules; then
echo "kvm module is loaded"
return 0
elif [ -f "$LOCKFILE" ]; then
echo "kvm module is not loaded, but subsystem is locked"
return 2
else
echo "kvm service is stopped"
return 3
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
restart
;;
condstop)
if [ -e "$LOCKFILE" ]; then
stop
fi
;;
condrestart)
# Do nothing on package upgrade
;;
condreload)
if [ -e "$LOCKFILE" ]; then
reload
fi
;;
status)
status
RETVAL=$?
;;
check)
VirtType
RETVEL=$?
;;
*)
msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status|check}"
RETVAL=1
esac
exit $RETVAL