13 votos

Consola virsh y tamaño de tty

Tengo un servidor de virtualización al que me conecto por ssh. Si ahora cambio el tamaño de la ventana se propaga automáticamente al servidor. Se ve más fácilmente usando stty -a , comprobando los valores de las columnas y las filas.

A continuación, utilizo virsh console para conectarse a la interfaz serie en una máquina virtual basada en KVM. Cuando ahora cambio el tamaño de la ventana no se propaga al servidor virtual. Esto se ve más fácilmente al comprobar stty -a que no se actualiza en la máquina virtual cuando cambio el tamaño de la ventana. Esto significa que los saltos de línea no funcionan correctamente en la terminal y cualquier aplicación que se base en el tamaño de la ventana para el formato (emacs, man, etc) se estropea a menos que el tamaño de la ventana en el cliente coincida con el tamaño por defecto en el servidor.

Una solución es establecer manualmente el tamaño de la ventana para que coincida con la ventana del cliente usando stty, pero me pregunto si hay alguna manera de hacer que esta información se propague y establezca el tamaño de la ventana en la máquina virtual automáticamente.

8voto

mark Puntos 1755

La mayoría de las veces se puede solucionar este problema en el Shell.

El comando:

eval `/usr/bin/resize`

establecerá las variables COLUMNAS y LÍNEAS Shell adecuadamente y luego las exportará. Así que en bash, podrías añadir lo siguiente a tu .bash_profile (o .profile, dependiendo de lo que uses)

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

O en zsh:

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

De manera que el cambio de tamaño se realizaría justo antes de que se mostrara cada prompt. El efecto no sería como el de ssh o telnet, donde los cambios de ventana se manejarían inmediatamente como resultado, sin embargo creo que esto es probablemente lo mejor que obtendrás.

0 votos

Un poco complicado, pero aún así es una buena solución. Gracias.

0 votos

Vea también esta respuesta para hacerlo sin xterm's resize comando: unix.stackexchange.com/a/283206

3voto

jcollum Puntos 10236

Telnet y SSH tienen un canal fuera de banda para configurar estos ajustes. La interfaz serie no lo tiene. Ver: https://www.rfc-editor.org/rfc/rfc1073 y https://www.rfc-editor.org/rfc/rfc4254#page-14

3 votos

Me di cuenta de que había un canal de control involucrado. Pero la pregunta sigue siendo, ¿hay una mejor solución para las consolas de las máquinas virtuales basadas en KVM? (No me importa reconfigurar las máquinas)

1voto

Gakis41 Puntos 101

Si el comando de redimensionamiento no está disponible en su sistema puede intentar algo como

stty rows 45 
stty columns 140

pero tienes que ponerlo tu .bash_profile para persistir en el cambio y, a continuación, la fuente para ver el cambio

0voto

Hewbot Puntos 481

Solo añado a la respuesta de Mark, porque Serverfault no me permite comentar.

Cuando el dominio de destino es OpenBSD 6.6 , el redimensionamiento se encuentra en otro lugar y requiere el conjunto xbase66 como mínimo.

Además, si está utilizando la opción por defecto ksh es suficiente para correr:

eval `/usr/X11R6/bin/resize`

Es una pena que esto no esté en el Manual de administración de KVM de Red Hat.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: