Назад | Перейти на главную страницу

консоль virsh и размер tty

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

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

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

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

Команда:

eval `/usr/bin/resize`

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

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

Или в zsh:

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

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

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

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

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

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

eval `/usr/X11R6/bin/resize`

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