web-dev-qa-db-fra.com

Action du lanceur virt-manager pour démarrer et ouvrir directement un VM spécifique

J'utilise virt-manager pour mes machines virtuelles Qemu/KVM. Amorcer une VM signifie actuellement lancer virt-manager, sélectionner un VM pour l’ouvrir dans le visualiseur VM, puis allumer le VM.

J'aimerais ajouter une option de menu contextuel du programme de lancement qui ouvre directement la fenêtre de visualisation VM et lance la machine virtuelle.

Copier et éditer le fichier virt-manager.desktop pour ajouter l'action du menu contextuel n'est pas un problème, mais je ne connais pas de commande appropriée pour que virt-manager se comporte comme je le souhaite. Comment puis-je atteindre cet objectif?

4
Byte Commander

Utilisez virt-manager pour trouver le "Libvirt URI" (sélectionnez la VM, Edit -> Connection Details), puis le nom de la VM (sélectionnez la VM, Edit -> Virtual Machine Details - si vous avez Lorsque la machine est ouverte, vous devrez vous assurer que ce n’est pas maximisé, puis View -> Details, et revenez à la console lorsque vous avez terminé.)

Puis utilisez (ne tapez pas le premier $)

$ virt-manager --connect <<URI>> --show-domain-console <<NAME>>

Où URI et nom sont où vous les avez obtenus d'en haut. Par exemple, le mien ressemble à:

$ virt-manager --connect qemu:///system --show-domain-console win7

Exécutez cela depuis la ligne de commande. Si cela fonctionne, vous devriez pouvoir le mettre dans un script simple

$ cat > ~/bin/run-vm
#!/bin/bash
virt-manager --connect qemu:///system --show-domain-console win7
^D

(Où ^ D est control + D).

$ chmod u+x ~/bin/run-vm

Et puis, vous devriez pouvoir ajouter cette commande à votre menu - voir par exemple Answer sur les sites Unix et Linux Stackoverflow .

Vous pouvez également ajouter la commande directement au menu avec les paramètres, mais il est souvent plus facile pour les problèmes de débogage que la commande s'exécute dans la ligne de commande en tant que script.

3
Peter

J'ai écrit un petit script "~/scripts/StartVirtDomain.sh"

#!/bin/sh
# call this script with domainname as parameter 
# to start domain and open viewer

/usr/bin/virsh start $1         # domain must be known to virsh
/usr/bin/virt-viewer -w $1      # -w to wait until domain is running. 

virt-viewer doit être installé avec virt-manager; sinon, Sudo apt-get install virt-viewer.

Vous pouvez l'appeler avec le nom du domaine en paramètre. Il démarrera le domaine (s'il n'a pas déjà été démarré), puis démarrera virt-viewer pour se connecter à ce domaine.

Un exemple de fichier de bureau (W7Pro.desktop)

[Desktop Entry]
Version=1.0
Type=Application
Name=W7Pro
Comment=Start Windows VM 
Exec=~/scripts/StartVirtDomain.sh Win7Pro
Icon=
Path=~/scripts
Terminal=false
StartupNotify=false

a fait le travail (le nom de domaine est Win7Pro). Il n'y a pas de gestion d'erreur dans le script; vous pouvez en ajouter si nécessaire. En particulier, si le domaine n’est pas connu par virsh ou ne démarre pas, virt-viewer attendra probablement pour toujours.

Modifier:

Si vous avez vraiment besoin de la fenêtre de console de virt-manager, appelez-la comme suit:

virt-manager --connect=<URI> --show-domain-console <domain>

par exemple. dans mon script ce serait

/usr/bin/virt-manager --connect=qemu:///system --show-domain-console $1

L’URI de la connexion peut être trouvé dans la fenêtre principale de virt-manager en sélectionnant la connexion correspondante (par exemple, QEMU/KVM), puis en utilisant "Détails" dans le menu contextuel.

Vous pouvez même supprimer la ligne appelant virsh, car le domaine peut être démarré à partir de la console virt-manager.

1
ridgy