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.
|
|
Bonus: pour copier un fichier texte dans le bloc-note, la commande xsel est fortement pratique. Exemple:
|
|
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:
|
|
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”:
|
|
Dans ce fichier, on définit comment démarrer et arrêter notre service à l’aide du code suivant:
|
|
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:
|
|
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é:
|
|
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:
|
|
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)