#1 Le 13/06/2012, à 23:00
- Arbiel
[Résolu] [VirtualBox] Communication entre machines hôte et invitée
Bonsoir à tous
Pour modifier le comportement au démarrage d'une machine invitée Windows XP dans une machine hôte Ubuntu, j'ai défini un dossier partagé dans lequel j'enregistre un script Windows automatiquement lancé au démarrage de la machine invitée.
Pour l'instant j'ai défini le dossier partagé, j'ai installé et activé Guest Additions dans ma machine Windows XP, j'ai connecté le lecteur réseau qui donne accès au dossier partagé depuis Windows XP et j'ai introduit le script Windows dans la liste des applications à lancer au démarrage.
Je constate que lorsque Windows XP est lancé en mode plein écran, tout fonctionne à merveille. Par contre, lorsque Windows XP est lancé dans une fenêtre qui n'occupe qu'une partie de l'écran, Windows XP me dit ne pas trouver le script. Je vois comme seule explication la différence de durée entre l'affichage du bureau Windows en plein écran et l'affichage dans une fenêtre plus réduite, cette différence de durée permettant à Guest Additions de terminer le montage du lecteur réseau avant que Windows ne cherche à accéder au script.
J'envisage maintenant d'écrire un script Windows, enregistré sur le disque C: de Windows pour soit attendre quelques secondes, soit détecter la montée du lecteur réseau avant de lancer l'exécution du script enregistré dans le lecteur partagé.
D'où les questions suivantes :
1) ma compréhension du problème est-elle correcte ?
2) existe-t-il une autre méthode plus simple et plus fiable pour indiquer depuis la machine hôte à la machine invitée ce qu'elle doit faire au démarrage ?
D'avance, merci pour vos conseils.
Arbiel
Edit : je viens d'écrire un script sur C: qui attend une seconde avant de lancer le script localisé dans le dossier partagé. Windows XP trouve le script à chaque essai, et quelle que soit la taille de la fenêtre d'affichage.
Dernière modification par Arbiel (Le 15/06/2012, à 08:21)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#2 Le 14/06/2012, à 10:20
- Mathieu147
Re : [Résolu] [VirtualBox] Communication entre machines hôte et invitée
Bonjour,
À mon avis, tu as bien déterminé le problème : Windows tente d'exécuter le script alors que le dossier partagé n'est pas encore monté. Ça m'étonne, je pensais que ces dossiers étaient montés pendant la phase de démarrage, et pas pendant l'ouverture de la session.
Pourquoi est-ce que tu mets le script dans un dossier partagé et non directement dans un dossier normal de ta machine virtuelle?
Pffff…
Hors ligne
#3 Le 14/06/2012, à 19:20
- Arbiel
Re : [Résolu] [VirtualBox] Communication entre machines hôte et invitée
Bonsoir
Pourquoi est-ce que tu mets le script dans un dossier partagé et non directement dans un dossier normal de ta machine virtuelle?
Tout simplement parce que j'en crée le contenu dans la machine hôte, sous Linux, avant de lancer la machine virtuelle. N'oublie pas que je veux, de cette manière, modifier le comportement de la machine virtuelle à son démarrage. En d'autres termes, la machine virtuelle exécute le programme que j'ai déterminé par un script shell Linux, et non un programme que je détermine en tant qu'utilisateur de la machine Windows.
Pour ce qui concerne l'attente de la "montée" du lecteur réseau, j'ai eu aujourd'hui l'idée de remplacer le dossier partagé par un fichier iso9660 qui lui serait défini comme un disque permanent de la machine virtuelle, le contenu de ce fichier iso étant bien sûr variable d'une exécution à l'autre. J'y voyais comme autre intérêt de ne pas nécessiter l'utilisation de Guest Additions. Mais la création de l'image iso est longue. J'en reste donc pour l'instant à la solution qui consiste à attendre 1 seconde avant de lancer le script variable.
J'ai donc deux scripts, un dans la machine virtuelle, et un dans le dossier partagé. Le script de la machine virtuelle est permanent, il attend 1 seconde puis demande l'exécution du script du dossier partagé, qui lui est variable.
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#4 Le 15/06/2012, à 07:20
- Mathieu147
Re : [Résolu] [VirtualBox] Communication entre machines hôte et invitée
Si ça fonctionne comme ça, pourquoi pas, mais c'est plus une solution «bricolage» que quelque chose qui doit vraiment fonctionner donc je comprends que tu ne veuilles, à terme, pas utiliser la solution d'attendre une seconde.
À mon avis, ta technique de l'image iso est bonne, ça n'a pas l'air si compliqué d'en faire: http://txt.binnyva.com/2008/06/create-i … -a-folder/
Pffff…
Hors ligne
#5 Le 15/06/2012, à 08:20
- Arbiel
Re : [Résolu] [VirtualBox] Communication entre machines hôte et invitée
Je n'avais pas suffisamment réfléchi avant d'effectuer mes premiers tests avec l'image iso. J'utilise une zone de travail relativement volumineuse et c'est elle que j'avais prise comme source pour la constitution de l'image. D'où un traitement de plusieurs minutes.
En fait, il me suffit de constituer l'image avec le seul script, c'est à dire, typiquement, un texte d'une dizaine de lignes. Je viens de faire un test avec le script suivant :
<package>
<job id="Lot">
<script language="VBScript">
Set WshShell = WScript.CreateObject("WScript.Shell")
LigneCommande = """F:\QuickTime\PC\QuickTimeInstaller.exe"""
WshShell.Run LigneCommande , 1, true
LigneCommande = """F:\SecretAlchimiste.exe"""
WshShell.Run LigneCommande , 1, true
</script>
</job>
</package>
Je ne suis pas un expert en scripts, et encore moins, en scripts Windows, et je pense que je pourrais retirer les 3 premières et les 3 dernières lignes, appeler mon script CielWindows.vbs plutôt que CielWindows.wsf et que tout marcherait aussi bien, je verrai plus tard.
Je constitue l'image iso avec la commande :
genisoimage -ldots -allow-lowercase -d -iso-level 3 -l -o /.ciel/scripts/CielWindows.iso /.ciel/scripts/CielWindows.wsf
ce qui est immédiat.
Sur ce point, je n'ai pas trouvé la commande mkisofs, ni d'ailleurs mkisosf, et la recherche par synaptic m'a auguillé vers xorriso qui contient genisoimage.
Enfin, l'utilisation de l'image iso m'a également conduit à passer à la machine virtuelle le fichier iso du jeu que je veux y lancer, et que je retrouve immédiatement dans le lecteur F: de ma machine virtuelle, alors que je m'étais jusqu'à présent focalisé sur la nécessité de passer par des produits tels que Daemon Tools, Alcohol, ....
A vrai dire, j'encadre un club informatique pour adultes handicapés mentaux et nous disposons d'une bonne centaine de CD-ROM. Certains sont bien évidemment protégés, et j'aimerais utiliser pour eux aussi des images iso (je pense que je n'aurai pas de problème en utilisant les supports physiques). Je ne sais pas encore comment faire.
Voila donc la situation.
Et merci pour l'intérêt que tu portes à mes petites difficultés.
Arbiel
Dernière modification par Arbiel (Le 15/06/2012, à 08:28)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#6 Le 15/06/2012, à 08:44
- Mathieu147
Re : [Résolu] [VirtualBox] Communication entre machines hôte et invitée
Super, si ça marche. Je me disais bien que c'était bizarre que la génération d'une image iso soit trop longue.
Je n'y connais rien en scripts Windows donc je ne saurais pas te dire comment l'améliorer. Mais concernant tes CD-ROM, les stocker tous sous forme d'images iso est une bonne idée. Si tu as 100 CD, ça te fera maximum 70 Go, ce qui n'est pas très difficile à stocker avec les disques durs actuels. Les protections t'empêchent d'en faire des images iso? Tu as essayé avec Brasero?
Pffff…
Hors ligne