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.

pehrs
fonte

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á.

marca
fonte
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
2

O Telnet e o SSH possuem um canal fora de banda para definir essas configurações. Interface serial não. Veja: http://tools.ietf.org/html/rfc1073 e http://tools.ietf.org/html/rfc4254#page-14

Mircea Vutcovici
fonte
2
Eu meio que descobri que havia um canal de controle envolvido. Mas a questão permanece: existe uma solução melhor para os consoles de máquinas virtuais baseadas em KVM? (Eu não me importo reconfigurar as máquinas)
pehrs
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.

tryfail
fonte