📰 La Revue de TheRaphit.com Article n° 30 [C] - Page principale 🎲 [Au hasard !] - [Précédent] Dernier

UTM - Machine virtuelle « headless » et pilotage à distance


Cette page fait partie d'un ensemble présentant la virtualisation,
et constituant un guide complet de prise en main d'UTM.

Vous pouvez retrouver la page principale ici :

UTM : la virtualisation sur macOS



[Les paramètres de l'application UTM]   [Utilisation de 'utmctl' en ligne de commande]


[Le mode « headless »] - [Daemonization d'UTM] - [Gestion à distance]




UTM est avant tout une une application de bureau, conforme à « l'esprit Apple » de simplicité et d'intuitivité.

Cependant le logiciel propose plusieurs options vous permettant de la transformer en un « service » fonctionnant entièrement en tâche de fond, vous permettant d'administrer UTM ainsi que vos machines virtuelles uniquement à l'aide d'un simple terminal, via le shell.

Ces quelques petits tricks et astuces de configuration, plus difficiles à trouver, raviront pour sûr les plus grands amateurs d'UNIX !

Reconfigurer une machine virtuelle en mode « headless »



Le mode dit « headless » - repris de la terminologie utilisée dans la
documentation d'UTM - ou « sans tête » en bon françois, consiste à paramétrer une VM de manière à ce qu'elle ne dispose d'aucun périphérique virtuel d'affichage. UTM n'ouvrira alors aucune fenêtre associée à la VM lorsque celle-ci sera démarrée.

Le plus simple pour paramétrer une VM ainsi est de supprimer tous les éléments de type Display de sa configuration, les systèmes UNIX étant parfaitement capables de démarrer et de fonctionner sans affichage, à l'image d'un serveur en centre de données auquel n'est connecté aucun écran.

Cependant il peut être très utile de conserver un moyen d'accéder à une VM sans avoir à passer par la connexion réseau de celle-ci, en cas de souci au démarrage de l'OS invité par exemple. Pour cela, nous allons reprendre le pérphérique Serial utilisé pour l'installation de la VM dans la première partie, en changeant son mode en Pseudo-TTY Device comme ceci :


[Configuration d'un périphérique virtuel 'pseudo-terminal']


Que fait ce paramétrage ?

Au démarrage de la VM, plutôt que d'ouvrir une fenêtre embarquant un émulateur de terminal, UTM va cette fois associer la console de la VM à une ligne de pseudo-terminal UNIX (PTTY) de la machine hôte (votre Mac) - sous /dev/ttys* - auquel il va vous être possible d'accéder via un programme tiers.

Cette allocation est dynamique. Il vous faut d'abord démarrer votre machine virtuelle afin que la fenêtre principale d'UTM puisse indiquer le numéro de PTTY associé :


[Affichage du terminal associé à une VM]


A partir de là, vous pouvez par exemple accéder à ce pseudo-terminal à l'aide de GNU Screen, présent par défaut sur macOS. Cela se fait avec la commande :
% screen /dev/ttys013
De là, vous pouvez faire absolument tout ce qu'il est possible depuis la console d'une machine UNIX, par exemple démarrer en single user, reconfiugrer le réseau sans vous couper l'herbe sous le pied, et même examiner le démarrage du système après un reboot !


[Accès à la console d'une VM avec Screen - #1]   [Accès à la console d'une VM avec Screen - #2]   [Accès à la console d'une VM avec Screen - #3]


A noter qu'immédiatement après avoir lancé screen, il se pourrait que vous deviez appuyer une fois supplémentaire sur [Enter] afin que s'affiche l'invite de login de la VM.

Il n'y a non plus pas de moyen de « quitter » directement cette connexion à la console virtuelle, aussi il vous faudra utiliser la combinaison de touches [Ctrl]+[A] suivi de [k] pour forcer la fermeture de la session. A côté de cela, vous pouvez utiliser toutes les combinaisons de touches connues de Screen, et notamment détacher la session pour la récupérer plus tard.

Notez que si vous arrêtez votre VM, la ligne de pseudo-terminal correspondante sera libérée par UTM et Screen (ou autre) ne sera plus en mesure d'y accéder. Si vous souhaitez modifier des options au démarrage de la VM alors que vous êtes en lien avec sa console, procédez donc bien à un reboot (ou shutdown -r now) plutôt qu'à un shutdown -h now ou halt !

La console d'une machine accessible à distance et récupérable à n'importe quel moment, n'est-ce pas formidable ?

Daemonization d'UTM



Rassurez-vous, ceci n'est pas un terme barbare !

Cela fait allusion aux services fonctionnant en arrière-plan sous UNIX, que l'on appelle traditionnellement daemons (orthographié ainsi, ce n'est pas une erreur). Cette dénomination a notamment inspiré le design de la mascotte de FreeBSD, entre autres choses.

Dans cette partie, vous allez pouvoir désactiver l'icône d'UTM dans le dock, ainsi qu'ajouter un élément dans votre barre de menu lui étant associé, et vous permettant d'effectuer rapidement certaines actions sur les VM.

Sélectionnez la fenêtre principale d'UTM, puis dans votre barre de menu, choisissez UTM > Settings. Cela vous ouvrira les paramètres généraux de l'application :


[Les paramètres de l'application UTM]


Cochez alors les options mentionnées sur cette capture, notamment Show menu bar icon mais aussi les quelques options empêchant à votre Mac de passer en veille lorsque des VM fonctionnent. Laisser UTM fonctionner même si aucune VM n'est démarrée vous permettra justement de démarrer celles-ci à distance (voir plus bas).

Le logo d'UTM devrait maintenant apparaître en haut de votre écran, et cliquer dessus ouvrira un petit widget comme ceci :


[Le widget UTM dans la barre de menu de macOS]


Vous pouvez dès à présent démarrer et arrêter les VM depuis ce menu, mais surtout cocher l'option Hide dock icon on next launch. Au prochain démarrage d'UTM, aucune fenêtre ne s'ouvrira plus, et aucun icône supplémentaire ne sera visible dans votre dock - daemonized!

Si vous retournez dans les paramètres via UTM > Settings vous constaterez que la case à cocher Show dock icon est décochée, tandis que Show menu bar icon est forcé (grisé). C'est parfaitement normal ! Si vous souhaitez revenir en arrière, il vous suffira de décocher Hide dock icon on next launch via le widget.

A noter que vous pouvez désormais fermer la fenêtre principale d'UTM en cliquant sur 🔴 sans risques. Tout continuera de fonctionner ! Si vous souhaitez afficher de nouveau cette fenêtre, choisissez simplement Show UTM à l'aide du widget.

Gestion à distance avec utmctl et petits trucs & astuces !



Sur les
première et deuxième parties, nous avons fait usage de la commande utmctl pour démarrer les VM.

Cette commande dispose de nombreuses options, et vous permet d'administrer UTM directement depuis la ligne de commande. Vous pouvez l'appeler sans paramètres afin d'afficher une aide succinte. Par exemple, utmctl list vous permet d'afficher toutes les machines virtuelles créés sous UTM ainsi que leur statut.

Si vous comptez l'utiliser régulièrement, je vous conseille de faire un lien symbolique vers cette commande que vous placerez dans un répertoire accessible via votre variable d'environnement PATH :
% cd /usr/local/bin
% sudo ln -s /Applications/UTM.app/Contents/MacOS/utmctl
Il vous est bien sûr possible de choisir un autre répertoire.

Maintenant, si vous vous connectez en SSH à votre Mac, et que vous tentez d'utiliser la commande, vous aller obtenir le message d'erreur suivant :



[Appel de 'utmctl' depuis une connexion SSH]

Mais quel est le fuck ?!


Voilà qui est fort fâcheux !

Il semble y avoir en effet une limitation posée par les développeurs, et qui empêche d'utiliser utmctl lorsque vous ne l'appelez pas depuis un terminal local sur votre Mac. Pourquoi donc ? Je n'en sais fichtrement rien... Je ne vois pas l'intérêt, ni ce qui est passé par la tête des développeurs à ce moment-là. Rien n'est parfait, et UTM de fait pas exception...

Mais fort heureusement, il est possible de contourner cette restriction... Et TheRaphit vous a trouvé la solution, présente à aucun endroit dans la documentation officielle d'UTM. Etant donné que GNU Screen ne peut pas nous aider non plus, nous aller faire appel à tmux, qui va nous sauver ! Si vous ne connaissez pas ce multiplexeur de terminal, sachez que j'ai également écrit un guide pour celui-ci, c'est l'article n°16. Bien que tmux ne soit pas installé par défaut avec macOS, ce n'est pas très compliqué de se le procurer au moyen de Homebrew, que je vous recommande également vivement d'installer sur votre Mac (si ce n'était pas déjà fait).

Une fois une session tmux lancée depuis votre connexion SSH (ou récupérée depuis celle-ci), la commande utmctl sera alors bien plus docile. :-)


[Le widget UTM dans la barre de menu de macOS]


Notez au passage l'emploi de ma splendide configuration tmux, disponible en téléchargement sur mon site. :-)

Vous pouvez effectuer énormément d'actions via la ligne de commande et même écrire des scripts permettant de piloter la gestion des VM. Cependant, une option pouvant s'avérer très utile, et dont le nom n'est pas très explicite, est attach :



[Exécution de la commande 'utmctl attach']

Au passage, je l'ai bien blouzé avec tmux ! Oui, j'avoue être assez fier de moi...


En effet, au moment où nous avions reconfiguré notre VM en mode « headless », pour pouvoir accéder à sa console il était nécessaire d'obtenir au préalable le numéro de PTTY associé via la fenêtre principale d'UTM. Toosla est très bien lorsque l'on peut afficher cette fenêtre sur son bureau, mais à distance, on fait comment ? Je suis sûr que vous vous étiez posé la question. :-)

L'utilisation de utmctl attach répond à la problématique, et ce malgré le message d'erreur un peu étrange. Il est en réalité possible que cette option ait été prévue pour tout à fait autre chose à l'origine... On peut supposer qu'il est question, ultérieurement, d'intégrer directement un moyen d'accéder à la console d'une VM via utmctl, sans devoir faire appel à screen ou à un autre émulateur de terminal.

Néanmoins en attendant, elle fournit l'information nécessaire, et c'est ça qu'on veut !

Pour terminer, nous allons nous intéresser à la manière dont UTM stocke les machines virtuelles sur le disque physique de votre Mac, ce qui nous permettra d'effectuer facilement une sauvegarde de toutes vos VM.

Accéder à la dernière page du guide ⋙ Sauvegarde et restauration

UTM : la virtualisation sur macOS

[Page principale]

[(1) Installation d'une VM] [(2) Démarrage automatique]
(3) Pilotage à distance [(4) Sauvegarde et restauration]

La Revue de TheRaphit.com

[Compteur]
Nombre de visiteurs
depuis le 13 mai 1997.


[Accueil] [C'est quoi ?]

TheRaphit's Web Site - La dernière homepage du Web


[(Tout)2 Evangelion] Webzine : La Revue [Manga Pink Zone] [Mathématiques]

[Nouveautés] [Zone de téléchargement]


Site créé le 16 janvier 1997
©1997-2025 by TheRaphit

marina.theraphit.com