console virsh e tamanho tty


11

Eu tenho um servidor de virtualização ao qual me conecto pelo ssh. Se agora eu alterar o tamanho da janela, ela será propagada automaticamente para o servidor. É mais facilmente visto usando stty -a, verificando as colunas e os valores das linhas.

Eu então uso virsh consolepara conectar-me à interface serial em uma máquina virtual baseada em KVM. Quando agora altero o tamanho da janela, ela não se propaga para o servidor virtual. Isso é mais facilmente visto pela verificação stty -a, que não é atualizada na máquina virtual quando altero o tamanho da janela. Isso significa que as quebras de linha não funcionam corretamente no terminal e qualquer aplicativo que depende do tamanho da janela para formatação (emacs, man, etc) fica bagunçado, a menos que o tamanho da janela no cliente corresponda ao tamanho padrão no servidor.

Uma solução alternativa é definir manualmente o tamanho da janela para corresponder à janela do cliente usando stty, mas gostaria de saber se existe alguma maneira de obter essa informação para propagar e definir o tamanho da janela na máquina virtual automaticamente.

Respostas:


7

Você pode solucionar esse problema principalmente no shell.

O comando:

eval `/usr/bin/resize`

definirá as variáveis ​​de shell COLUMNS e LINES adequadamente e depois as exportará. Portanto, no bash, você pode adicionar o seguinte ao seu .bash_profile (ou .profile, dependendo do que você usa)

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

Ou no zsh:

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

Para que um redimensionamento seja executado logo antes de cada prompt ser exibido. O efeito não seria como o ssh ou o telnet, onde as alterações nas janelas seriam tratadas imediatamente como resultado, no entanto, acho que provavelmente é o melhor que você terá.


Um pouco hacky, mas ainda uma boa solução. Obrigado!
pehrs

Veja também esta resposta para fazê-lo sem o resizecomando do xterm : unix.stackexchange.com/a/283206
rsaw


0

Apenas adicionando à resposta da marca, porque Serverfault não me permite comentar.

Quando o domínio de destino é o OpenBSD 6.6 , o redimensionamento está localizado em outro lugar e requer pelo menos o xbase66 definido.

Além disso, se você estiver usando o ksh padrão , basta executar:

eval `/usr/X11R6/bin/resize`

É uma pena que isso não esteja no Guia de administração KVM da Red Hat.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.