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

38
SKvm
View File

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