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

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

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

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

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

решение1

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

Команда:

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, где изменения окна будут обрабатываться немедленно, однако я думаю, что это, вероятно, лучшее, что вы получите.

решение2

У Telnet и SSH есть внешний канал для настройки этих параметров. У последовательного интерфейса его нет. Смотрите:https://www.rfc-editor.org/rfc/rfc1073иhttps://www.rfc-editor.org/rfc/rfc4254#page-14

решение3

Если команда изменения размера недоступна в вашей системе, вы можете попробовать что-то вроде:

stty rows 45 
stty columns 140

но вы должны указать его, .bash_profileчтобы сохранить изменение, а затем указать его источник, чтобы увидеть изменение

решение4

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

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

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

eval `/usr/X11R6/bin/resize`

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

Связанный контент