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.

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.


Trochę zuchwały, ale wciąż dobre rozwiązanie. Dziękuję Ci!
pehrs

Zobacz także tę odpowiedź, aby zrobić to bez resizepolecenia Xterm
rsaw


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.