2011-05-14 1 views
1

Je développe actuellement des applications pour la montre inPulse (si vous êtes un geek, consultez www.GetInPulse.com) et je compile pour la montre sur un Mac. Mais le déploiement de l'application sur l'appareil prend plusieurs minutes. Ils offrent cependant un simulateur, mais cela ne fonctionne que sous Linux, j'ai donc installé Ubuntu dans une machine virtuelle, ce qui fonctionne très bien. Ce que j'espère, c'est rester complètement sur le côté Mac, sauf être capable d'exécuter une étape de construction ou un script shell qui peut "appeler" la machine virtuelle et y lancer un script shell qui déclenche le simulateur. De cette façon, je peux juste ajouter 'sim' comme une étape dans mon makefile sur le côté 'mac'.Est-il possible d'avoir une étape makefile dans un OS hôte exécuter une commande shell dans un OS invité fonctionnant dans une machine virtuelle?

Actuellement, je souris beaucoup trop et j'ai des terminaux ouverts partout dans les systèmes hôte et invité. Simplement essayer de nettoyer les scripts inter-machines et cross-machine semble fonctionner en théorie. Je ne sais pas si les limites des machines transversales sont encore valables.

+0

Bien que vous le fassiez pour la programmation, ce n'est pas vraiment une question de programmation, mais plutôt une question de configuration du système d'exploitation. Puisque les deux systèmes d'exploitation impliqués sont des Unices, [Unix Stack Exchange] (http://unix.stackexchange.com/) conviendrait. Si vous avez des questions de suivi qui ne sont pas intimement liées au langage de programmation dans lequel vos scripts de construction sont écrits, je vous recommande de demander là. – Gilles

+0

Eh bien, je ne savais pas s'il y avait des choses spécifiques au script que l'on aurait à faire, ce qui serait tombé sous la page SO, mais je peux aussi voir votre point de vue de l'autre côté. De toute façon, j'ai marqué votre réponse comme acceptée. Je pensais SSH et il semble que c'est la voie à suivre. – MarqueIV

Répondre

1

L'OS hôte ne sait pas ce qu'est un "shell" dans l'invité. Un shell est un concept dépendant du système d'exploitation, et même si l'OS hôte sait techniquement tout ce qui se passe dans l'invité, son seul contact est l'observation de la mémoire de l'invité et des instructions qu'il exécute, le mauvais niveau d'abstraction.

La manière la plus naturelle d'exécuter des commandes shell d'un système d'exploitation à un autre est d'utiliser un shell distant sur une liaison réseau; en pratique, cela signifie SSH. Vous avez besoin d'un lien réseau entre les deux machines, et une fois que vous avez cela, peu importe que l'un soit une VM qui tourne dans l'autre. Il y a probablement déjà un lien réseau entre les deux machines; Dans le cas contraire, assurez-vous d'activer un réseau ponté ou un réseau hôte uniquement ou tout ce que votre technologie VM offre.

Installez un client SSH sur l'hôte (il y en a probablement déjà un) et un serveur SSH sur l'invité (openssh-serverInstall openssh-server http://bit.ly/software-small). Ensuite, configurez public-key authentication entre les deux machines afin de ne pas avoir à taper un mot de passe tout le temps.

Vous aurez un accès shell sur le client. Si vous devez manipuler des applications graphiques, vous devrez travailler un peu plus que cela. ssh DISPLAY variable peut aider, ou peut-être How can I run Firefox on Linux headlessly (i.e. without requiring libgtk-x11-2.0.so.0)?.

Questions connexes