konsola virsh i rozmiar tty

11

Mam serwer wirtualizacji, z którym łączę się przez ssh. Jeśli teraz zmienię rozmiar okna, zostanie ono automatycznie propagowane na serwer. Najłatwiej jest to zobaczyć, używając stty -a, sprawdzając wartości kolumn i wierszy.

Następnie używam virsh consoledo połączenia z interfejsem szeregowym na maszynie wirtualnej opartej na KVM. Kiedy teraz zmieniam rozmiar okna, nie jest ono propagowane na serwerze wirtualnym. Najłatwiej to sprawdzić stty -a, sprawdzając , która nie jest aktualizowana na maszynie wirtualnej po zmianie rozmiaru okna. Oznacza to, że podziały wierszy nie działają poprawnie w terminalu, a każda aplikacja, która korzysta z rozmiaru okna do formatowania (emacs, man itp.) Zostaje pomylona, ​​chyba że rozmiar okna klienta odpowiada domyślnemu rozmiarowi na serwerze.

Obejściem tego problemu jest ręczne ustawienie rozmiaru okna w celu dopasowania okna klienta za pomocą stty, ale zastanawiam się, czy jest jakiś sposób, aby uzyskać te informacje do propagacji i ustawić rozmiar okna automatycznie na maszynie wirtualnej.

pehrs
źródło

Odpowiedzi:

7

W większości przypadków można obejść ten problem w powłoce.

Komenda:

eval `/usr/bin/resize`

ustawi odpowiednio zmienne powłoki COLUMNS i LINES, a następnie je wyeksportuje. Zatem w bash możesz dodać następujące elementy do swojego .bash_profile (lub .profile, w zależności od tego, którego używasz)

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

Lub w Zsh:

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

Aby zmiana rozmiaru została wykonana tuż przed wyświetleniem każdego monitu. Efekt nie byłby taki jak w przypadku ssh lub telnet, w którym zmiany okien byłyby natychmiast obsługiwane, jednak myślę, że jest to prawdopodobnie najlepszy wynik.

znak
źródło
Trochę zuchwały, ale wciąż dobre rozwiązanie. Dziękuję Ci!
pehrs
Zobacz także tę odpowiedź, aby zrobić to bez resizepolecenia Xterm
rsaw
2

Telnet i SSH mają kanał poza pasmem, aby skonfigurować te ustawienia. Interfejs szeregowy nie. Zobacz: http://tools.ietf.org/html/rfc1073 i http://tools.ietf.org/html/rfc4254#page-14

Mircea Vutcovici
źródło
2
Zrozumiałem, że w grę wchodzi kanał kontrolny. Pozostaje jednak pytanie, czy istnieje lepsze obejście dla konsoli maszyn wirtualnych opartych na KVM? (Nie mam nic przeciwko rekonfiguracji maszyn)
pehrs
0

Po prostu dodając do odpowiedzi Marka, bo Serverfault nie pozwala mi komentować.

Gdy domeną docelową jest OpenBSD 6.6 , zmiana rozmiaru znajduje się w innym miejscu i wymaga co najmniej zestawu xbase66.

Dodatkowo, jeśli używasz domyślnego ksh , wystarczy uruchomić:

eval `/usr/X11R6/bin/resize`

Szkoda, że ​​nie ma tego w Przewodniku administratora Red Hat KVM.

tryfail
źródło