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.