Virsh-Konsole und TTY-Größe

Virsh-Konsole und TTY-Größe

Ich habe einen Virtualisierungsserver, mit dem ich mich über SSH verbinde. Wenn ich jetzt die Größe des Fensters ändere, wird dies automatisch auf den Server übertragen. Am einfachsten lässt sich dies erkennen stty -a, indem man die Spalten- und Zeilenwerte überprüft.

Ich verwende dann virsh consoledie Verbindung zur seriellen Schnittstelle einer KVM-basierten virtuellen Maschine. Wenn ich jetzt die Fenstergröße ändere, wird dies nicht auf den virtuellen Server übertragen. Dies lässt sich am einfachsten erkennen, indem Sie überprüfen stty -a, dass auf der virtuellen Maschine nicht aktualisiert wird, wenn ich die Fenstergröße ändere. Dies bedeutet, dass Zeilenumbrüche im Terminal nicht richtig funktionieren und jede Anwendung, die für die Formatierung auf die Fenstergröße angewiesen ist (Emacs, Man usw.), durcheinander gerät, sofern die Fenstergröße auf dem Client nicht mit der Standardgröße auf dem Server übereinstimmt.

Eine Problemumgehung besteht darin, die Fenstergröße manuell mit stty so einzustellen, dass sie dem Client-Fenster entspricht. Ich frage mich jedoch, ob es eine Möglichkeit gibt, diese Informationen zu verbreiten und die Fenstergröße in der virtuellen Maschine automatisch einzustellen.

Antwort1

Sie können dieses Problem größtenteils in der Shell umgehen.

Der Befehl:

eval `/usr/bin/resize`

setzt die Shell-Variablen COLUMNS und LINES entsprechend und exportiert sie dann. In Bash könnten Sie also Folgendes zu Ihrem .bash_profile (oder .profile, je nachdem, welches Sie verwenden) hinzufügen:

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

Oder in zsh:

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

Damit würde eine Größenänderung direkt vor der Anzeige jeder Eingabeaufforderung durchgeführt. Der Effekt wäre nicht wie bei SSH oder Telnet, wo die Fensteränderungen sofort verarbeitet würden, aber ich denke, das ist wahrscheinlich das Beste, was Sie bekommen werden.

Antwort2

Telnet und SSH verfügen über einen Out-of-Band-Kanal, um diese Einstellungen zu konfigurieren. Die serielle Schnittstelle verfügt nicht über einen solchen Kanal. Siehe:https://www.rfc-editor.org/rfc/rfc1073Undhttps://www.rfc-editor.org/rfc/rfc4254#page-14

Antwort3

Wenn der Befehl zur Größenänderung auf Ihrem System nicht verfügbar ist, können Sie Folgendes versuchen:

stty rows 45 
stty columns 140

aber Sie müssen es setzen, .bash_profileum die Änderung beizubehalten und dann die Quelle angeben, um die Änderung zu sehen

Antwort4

Ich ergänze nur die Antwort von Mark, da Serverfault mir keinen Kommentar erlaubt.

Wenn die ZieldomäneOpenBSD 6.6, die Größenänderung befindet sich woanders und erfordert mindestens das Xbase66-Set.

Wenn Sie zusätzlich die Standardeinstellung verwenden,ksh, genügt es, Folgendes auszuführen:

eval `/usr/X11R6/bin/resize`

Es ist schade, dass dies nicht im KVM-Admin-Handbuch von Red Hat steht.

verwandte Informationen