console virsh et taille tty

11

J'ai un serveur de virtualisation auquel je me connecte via ssh. Si je change maintenant la taille de la fenêtre, elle se propagera automatiquement au serveur. Il est plus facile à voir en utilisant stty -a, en vérifiant les valeurs des colonnes et des lignes.

J'utilise ensuite virsh consolepour me connecter à l'interface série sur une machine virtuelle basée sur KVM. Quand je change maintenant la taille de la fenêtre, elle ne se propage pas au serveur virtuel. Ceci est plus facilement visible en vérifiant stty -a, qui n'est pas mis à jour sur la machine virtuelle lorsque je change la taille de la fenêtre. Cela signifie que les sauts de ligne ne fonctionnent pas correctement dans le terminal et toute application qui s'appuie sur la taille de la fenêtre pour le formatage (emacs, man, etc.) est gâchée sauf si la taille de la fenêtre sur le client correspond à la taille par défaut sur le serveur.

Une solution de contournement consiste à définir manuellement la taille de la fenêtre pour qu'elle corresponde à la fenêtre du client à l'aide de stty, mais je me demande s'il existe un moyen d'obtenir ces informations pour qu'elles se propagent et définissent automatiquement la taille de la fenêtre dans la machine virtuelle.

pehrs
la source

Réponses:

7

Vous pouvez principalement contourner ce problème dans le shell.

La commande:

eval `/usr/bin/resize`

définira les variables shell COLUMNS et LINES de manière appropriée, puis les exportera. Donc, en bash, vous pouvez ajouter ce qui suit à votre .bash_profile (ou .profile, selon celui que vous utilisez)

PROMPT_COMMAND="eval `/usr/bin/resize`"

Ou en zsh:

function precmd {
    eval `/usr/bin/resize`
}

Pour qu'un redimensionnement soit effectué juste avant l'affichage de chaque invite. L'effet ne serait pas comme celui de ssh ou telnet où les changements de fenêtre seraient traités immédiatement en conséquence, mais je pense que c'est probablement le meilleur que vous obtiendrez.

marque
la source
Un peu hacky, mais toujours une bonne solution. Je vous remercie!
pehrs
Voir aussi cette réponse pour le faire sans la resizecommande de xterm : unix.stackexchange.com/a/283206
rsaw
2

Telnet et SSH ont un canal hors bande pour configurer ces paramètres. L'interface série ne fonctionne pas. Voir: http://tools.ietf.org/html/rfc1073 et http://tools.ietf.org/html/rfc4254#page-14

Mircea Vutcovici
la source
2
J'ai en quelque sorte compris qu'il y avait un canal de contrôle impliqué. Mais la question demeure: existe-t-il une meilleure solution de contournement pour les consoles de machines virtuelles basées sur KVM? (Cela ne me dérange pas de reconfigurer les machines)
pehrs
0

Juste pour ajouter à la réponse de Mark, bacause Serverfault ne me permet pas de commenter.

Lorsque le domaine cible est OpenBSD 6.6 , le redimensionnement est situé ailleurs et nécessite au moins le jeu xbase66.

De plus, si vous utilisez le ksh par défaut , il suffit d'exécuter:

eval `/usr/X11R6/bin/resize`

Il est dommage que cela ne figure pas dans le Guide d'administration KVM de Red Hat.

tryfail
la source