Как подключить последовательный терминал к экземпляру KVM?

Как подключить последовательный терминал к экземпляру KVM?

Возможно, я не понимаю, на что способен KVM, но возможность добавлять/удалять оборудование на виртуальной машине, похоже, подразумевает, что я могу добавить последовательный порт, который затем будет работать как терминал.

Итак, мои вопросы:

  1. Какие настройки лучше всего подходят для гостевого дистрибутива FreeBSD? (Их много!)
  2. Как мне получить доступ к этому терминалу с моего Linux-хоста?

решение1

Теперь я могу ответить на свой вопрос, основываясь наСтефанкомментарий и две связанные статьи:

Вот решение:

  • Вам не нужно ничего редактировать в конфигурации хоста, если в нем есть последовательное устройство по умолчанию, указывающее на pty.
  • Убедитесь, что параметр загрузки для вашего ядра имеет следующее добавление: serial=tty0 console=ttyS0,115200n8. Обычно достигается путем редактирования/boot/grub/menu.lst
  • Настройте /etc/inittabи добавьте строку T0:S12345:respawn:/sbin/getty -hL ttyS0 115200 vt100для запуска getty и отображения приглашения на вход в систему.

Я могу подтвердить, что это работает у меня, используя систему Fedora (хотя мне пришлось установить enforcing=0дополнительный параметр, поскольку рассматриваемая система — Fedora Rawhide, работающая под управлением SELinux MLS).

Думаю, теперь я смогу придумать, как сделать то же самое для FreeBSD.

Спасибо, Стефан!

решение2

В ответ на вопрос о том, как настроить машину FreeBSD, есть два основных случая получения последовательного порта. Если вы устанавливаете FreeBSD только с последовательным портом, вам понадобятся инструкции по последовательному порту загрузчика. Если у вас уже есть консоль и вы просто хотите получить последовательный доступ, следуйте инструкциям по последовательному порту после установки.

Серийный номер загрузчика

  • Нажмите 2на экране параметров загрузки FreeBSD, чтобы выйти в приглашение загрузчика.
  • типset console=comconsole
    • Если на этом этапе вы теряете интерактивность, проверьте, равна ли скорость передачи данных виртуального терминала 9600 бод.
  • типautoboot

Это должно позволить выполнить остальную часть установки через последовательный интерфейс. Если вы хотите продолжить иметь последовательный доступ после установки FreeBSD, то перед перезагрузкой в ​​конце установки вам нужно будет перейти в командную строку.

Послеустановочный серийный номер

На консоли:

  • типecho 'console="comconsole"' >> /boot/loader.conf
  • загрузить /etc/ttysв vi
  • Измените строку, начинающуюся с ttyu0 (в других версиях FreeBSD это может быть ttyd0)
    • На этой строке измените dialupна vt100и offнаon
  • После перезагрузки последовательный терминал должен отобразить процесс загрузки и завершиться приглашением на вход в систему.
    • Примечание: настройка console="comconsole"может /boot/loader.confпривести к тому, что сообщения о загрузке будут появляться только на последовательном интерфейсе. Просто измените, /etc/ttysесли вы не хотите, чтобы журнал загрузки отображался через последовательный интерфейс.

Рекомендации

http://www.freebsd.org/doc/handbook/serialconsole-setup.html

http://www.freebsd.org/doc/handbook/term.html

решение3

Ну, конечно, вам нужно эмулировать последовательный порт в эмуляторе и сделать его доступным на хосте. Гостевая ОС должна поместить что-то на свой «аппаратный последовательный порт», например, приглашение на вход через, например, getty_ps. Лично мне не приходилось использовать его таким образом. В основном эмулируемый последовательный порт в гостевой ОС используется для отладочной информации (Haiku все еще использует его по умолчанию), а затем он захватывается эмулятором (например, VMware) как простой текстовый файл, чтобы отладочная информация была доступна. Я попробую здесь запустить что-нибудь на эмулируемой последовательной консоли в qemu.

решение4

Ответ OP работает, но когда я попробовал с моей средой (хост Linux, клиент Linux)

  1. serial=tty0не было необходимости
  2. использование xterm вместо vt100 /etc/inittabработает лучше (вы получаете цвет)

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