virsh console и размер tty

11

У меня есть сервер виртуализации, к которому я подключаюсь по ssh. Если я сейчас изменю размер окна, оно будет автоматически распространяться на сервер. Это легче всего увидеть, используя stty -aпроверку столбцов и значений строк.

Затем я использую virsh consoleдля подключения к последовательному интерфейсу на виртуальной машине на основе KVM. Когда я теперь изменяю размер окна, оно не распространяется на виртуальный сервер. Это легче всего увидеть при проверке stty -a, которая не обновляется на виртуальной машине при изменении размера окна. Это означает, что разрывы строк не работают правильно в терминале, и любое приложение, которое использует размер окна для форматирования (emacs, man и т. Д.), Будет испорчено, если размер окна на клиенте не совпадает с размером по умолчанию на сервере.

Обходной путь - вручную установить размер окна, чтобы он соответствовал клиентскому окну, используя stty, но мне интересно, есть ли способ получить эту информацию для распространения и установки размера окна в виртуальной машине автоматически.

pehrs
источник

Ответы:

7

В основном вы можете обойти эту проблему в оболочке.

Команда:

eval `/usr/bin/resize`

установит переменные оболочки COLUMNS и LINES соответствующим образом и затем экспортирует их. Таким образом, в bash вы можете добавить следующее в ваш .bash_profile (или .profile, в зависимости от того, что вы используете)

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

Или в зш:

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

Чтобы изменение размера выполнялось непосредственно перед отображением каждого запроса. Эффект не будет таким, как у ssh или telnet, где изменения окна будут обрабатываться немедленно, однако я думаю, что это, вероятно, лучшее, что вы получите.

отметка
источник
Немного хакерский, но все же хорошее решение. Спасибо!
pehrs
Смотрите также этот ответ , чтобы сделать это без XTERM в resizeкоманде: unix.stackexchange.com/a/283206
rsaw
2

Telnet и SSH имеют внеполосный канал для настройки этих параметров. Последовательного интерфейса нет. См. Http://tools.ietf.org/html/rfc1073 и http://tools.ietf.org/html/rfc4254#page-14.

Мирча Вуцовичи
источник
2
Я вроде понял, что там был задействован канал управления. Но остается вопрос: есть ли лучший обходной путь для консолей виртуальных машин на основе KVM? (Я не против перенастройки машин)
pehrs
0

Просто добавив в ответ марки, потому что Serverfault не позволяет мне комментировать.

Когда целевым доменом является OpenBSD 6.6 , изменение размера находится в другом месте и требует как минимум xbase66.

Кроме того, если вы используете ksh по умолчанию , достаточно выполнить:

eval `/usr/X11R6/bin/resize`

Обидно, что этого нет в Руководстве администратора Red Hat KVM.

tryfail
источник