Après avoir virtualisé ma machine de développement, j’ai décidé de la configurer selon mes besoins. Et bien sûr, le besoin de partage entre machines devient vite indispensable.
Support du copier / coller
Là c’est plutôt simple, il suffit d’installer le package spice-vdagent sur la machine virtuelle pour profiter du copier/coller.
1sudo apt-get install spice-vdagent
Bonus: pour copier un fichier texte dans le bloc-note, la commande xsel est fortement pratique. Exemple:
1xsel -ib < monfichier.txt
Partage de fichiers
Evidemment, copier une image ou un binaire est pénible avec la méthode précédente. Il va donc falloir trouver mieux. La solution de base consiste à mounter un share. C’est simple à faire, on contrôle les droits d’accès aux fichiers et le partage fonctionne dans les deux sens.
Sur la machine physique (ou hôte)
Pour réaliser le share, il faut préparer un dossier sur la machine physique:
1mkdir ~/sharevm ## un dossier de base pour les shares des VM
2mkdir ~/sharevm/debian10 ## le dossier pour la VM nommee debian10
3sudo chown -R libvirt-qemu:monGroupe ~/sharevm ## donner aussi des droits a "monGroupe" pour se faciliter la vie
4sudo chmod -R 775 ~/sharevm ## donner les droits en R/W a qemu ET le groupe
5
6## Pour tester
7cp /usr/share/images/desktop-base/fondEcran.jpg ~/sharevm/debian10/
Ensuite, il faut aller dans la VM et cliquer sur l’ampoule pour modifier les propriétés de la VM:
Modifier les propriétés de la VM
Dans la fenêtre qui apparaît, cliquer sur le bouton “Add hardware”
Modifier les propriétés de la VM: ajouter du matériel
Ensuite, cliquer sur “filesystem”:
Modifier les propriétés de la VM: ajout du share
Configurer avec les informations suivantes:
- Type: mount
- Driver: default
- Write policy: Immediate
- source path: /home/gobo/sharevm/debian10
- Target path: /vmshare
- Ne pas cocher “Export filesystem as readonly mount (à moins de vouloir faire de la lecture uniquement)
A noter que si votre VM n’est pas arrêtée, il faudra choisir entre perdre vos modifications (cliquer sur “No”) ou les appliquer au prochain arrêt de la VM (cliquer sur “Yes”). Ici, j’ai choisi “Yes”.
Modifier les propriétés de la VM: uniquement si elle est stoppée
Sur la machine virtuelle (ou invitée)
Ici, il va falloir ajouter un dossier et réaliser le mount (après restart de la VM sinon le mount va échouer):
Youpi, ça fonctionne. Seul hic: lors du prochain démarrage de la VM, il faudra effectuer à nouveau le mount. On peut changer le comportement grâce à trois petits scripts. On trouve pas mal d’articles qui proposent de modifier le fichier rc.local et c’est incorrect. En effet Debian a déprécié le rc.local depuis la v8. Maintenant il faut passer par SystemD pour réaliser notre opération. On commence par ajouter un service nommé “sharekvm”:
1sudo nano /etc/systemd/system/sharekvm.service
Dans ce fichier, on définit comment démarrer et arrêter notre service à l’aide du code suivant:
1[Unit]
2Description=Mounting KVM share to host
3After=network-online.target
4
5[Service]
6Type=simple
7RemainAfterExit=yes
8
9ExecStart=/usr/local/bin/kvmShareMountd -d
10ExecStop=/usr/local/bin/kvmShareUmountd -d
11ExecReload=/usr/local/bin/kvmShareRestartd -d
12
13Restart=on-failure
14
15TimeoutStopSec=300
16
17[Install]
18WantedBy=multi-user.target
Ensuite, on créé les trois scripts dans /usr/local/bin: kvmShareMountd, kvmShareUmountd et kvmShareRestartd.
Reste maintenant à vérifier que le service fonctionne, en lui demandant de démarrer grâce à la commande “systemctl”, comme ceci:
1sudo systemctl start sharekvm
On vérifie que le share est présent grâce à la commande “mount”:
Maintent on arrête le service pour vérifier que le umount est bien réalisé:
1sudo systemctl stop sharekvm
On vérifie que le share est absent grâce à la commande “mount”:
Dernière étape: activer le service au démarrage de la VM. Pour cela, il suffit de passer la commande:
1sudo systemctl enable sharekvm
Pour finir on reboote la VM et normalement le share est actif.
Conclusion
Les outils standards sont suffisants pour faciliter le partage d’informations entre machine hôte et machine virtuelle. La configuration est facile d’accès.
(petit conseil: conservez dans un coin les fichiers de service afin de pouvoir facilement équiper vos prochaines VM)