possibilité de simplement tester si les modules sont chargés
This commit is contained in:
Jephté Clain 2013-10-30 14:20:39 +04:00
parent ad264851aa
commit 8cfba1fb39
2 changed files with 64 additions and 38 deletions

View File

@ -19,19 +19,21 @@ function ensure_kvm() {
# sont chargés, et que le service libvirt-bin est démarré
local module modified
# Vérifier que les modules vbox* sont déchargés
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
if lsmod | quietgrep "$module"; then
eecho "-$module"
rmmod "$module" || return 1
modified=1
fi
done
if [ -z "$check_only" ]; then
# Vérifier que les modules vbox* sont déchargés
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
if lsmod | quietgrep "$module"; then
eecho "-$module"
rmmod "$module" || return 1
modified=1
fi
done
fi
# Vérifier que kvm{,_intel,_amd} sont chargés
if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
if grep -q '^flags.*\<vmx\>' /proc/cpuinfo; then
module=kvm_intel
elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
elif grep -q '^flags.*\<svm\>' /proc/cpuinfo; then
module=kvm_amd
else
module=
@ -39,13 +41,18 @@ function ensure_kvm() {
if [ -n "$module" ]; then
for module in kvm $module; do
if ! lsmod | quietgrep "$module"; then
eecho "+$module"
modprobe "$module" || return 1
modified=1
if [ -n "$check_only" ]; then
return 1 # le module n'est pas chargé
else
eecho "+$module"
modprobe "$module" || return 1
modified=1
fi
fi
done
fi
[ -n "$check_only" ] && return 0
[ -n "$modified" ] && sleep 1
service=
@ -72,14 +79,16 @@ function ensure_virtualbox() {
# sont chargés, et que le service vboxdrv est démarré
local module modified
# Vérifier que kvm{,_intel,_amd} ne sont pas chargés
for module in kvm_intel kvm_amd kvm; do
if lsmod | quietgrep "$module"; then
eecho "-$module"
rmmod "$module" || return 1
modified=1
fi
done
if [ -z "$check_only" ]; then
# Vérifier que kvm{,_intel,_amd} ne sont pas chargés
for module in kvm_intel kvm_amd kvm; do
if lsmod | quietgrep "$module"; then
eecho "-$module"
rmmod "$module" || return 1
modified=1
fi
done
fi
# Vérifier que les modules vbox* sont chargés
[ -f /lib/modules/`uname -r`/updates/dkms/vboxpci.ko ] &&
@ -87,20 +96,27 @@ function ensure_virtualbox() {
vboxmodules=(vboxnetflt vboxnetadp vboxdrv)
for module in "${vboxmodules[@]}"; do
if ! lsmod | quietgrep "$module"; then
eecho "+$module"
modprobe "$module" || return 1
modified=1
if [ -n "$check_only" ]; then
return 1 # le module n'est pas chargé
else
eecho "+$module"
modprobe "$module" || return 1
modified=1
fi
fi
done
[ -n "$check_only" ] && return 0
[ -n "$modified" ] && sleep 1
# s'assurer que le service tourne
service vboxdrv startm
}
check_only=
parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-c,--check-only,--check check_only=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
run_as_root "$@"

38
SKvm
View File

@ -9,19 +9,29 @@ USAGE
$scriptname {-l|-A|-g}
OPTIONS
-n Ne rien faire excepté s'assurer que les modules kvm sont chargés
-u Lancer l'opération avec les droits de l'utilisateur courant. Par défaut,
-n, --check
Ne rien faire excepté s'assurer que les modules kvm sont chargés
-u, --user
Lancer l'opération avec les droits de l'utilisateur courant. Par défaut,
ce script tente d'acquérir les droits de root.
-l Lister les machines virtuelles
-s Démarrer la machine virtuelle (par défaut)
-l, --list
Lister les machines virtuelles
-s, --start
Démarrer la machine virtuelle (par défaut)
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché
-k Arrêter la machine virtuelle
-H Arrêter sauvagement la machine virtuelle
-r Redémarrer la machine virtuelle
-S Enregistrer l'état de la machine virtuelle
-A Arrêter toutes les machines virtuelles qui tournent actuellement
-g Afficher le gestionnaire de machines virtuelle"
-k, --stop
Arrêter la machine virtuelle
-H, --destroy
Arrêter sauvagement la machine virtuelle
-r, --restart
Redémarrer la machine virtuelle
-S, --managed-save
Enregistrer l'état de la machine virtuelle
-A, --stop-all
Arrêter toutes les machines virtuelles qui tournent actuellement
-g, --gui
Afficher le gestionnaire de machines virtuelle"
}
source "$(dirname "$0")/ulib/ulib" &&
@ -70,15 +80,15 @@ stopaction=shutdown
parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-u,--user sudo= \
-n action=nop \
-n,--check action=nop \
-l,--list action=list \
-s,--start action=start \
-k,-t,--stop '$action=stop; stopaction=shutdown' \
-H '$action=stop; stopaction=destroy' \
-H,--destroy '$action=stop; stopaction=destroy' \
-r,--restart '$action=stop; stopaction=reboot' \
-S '$action=stop; stopaction=managedsave' \
-S,--managedsave,--managed-save '$action=stop; stopaction=managedsave' \
-A,--stopall,--stop-all action=stopall \
-g action=gui \
-g,--gui action=gui \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
if ! is_root && [ -n "$sudo" ]; then