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

QEMU и последовательные порты в гостевой ОС

Кому-нибудь удалось успешно запустить гостевую ОС в QEMU / KVM, где гость имеет полный доступ к последовательному порту (-ам) хоста, будь то / dev / ttyS0, COM1 или виртуальный последовательный порт, предоставляемый хостом.

Кажется, что документация по -chardev, -serial и т. Д. Немного сбивает с толку (по крайней мере, для меня). У меня создалось впечатление, что гостевая ОС сможет видеть / использовать последовательный порт, если при запуске гостя будут переданы правильные параметры. Но многие люди говорят: «Нет, последовательные порты предназначены ТОЛЬКО для перенаправления консоли между гостевой ОС и хостом в QEMU / KVM» ... это не имеет смысла, поскольку QEMU / KVM кажется отличным способом запустить старые вещи что необходимо для связи с оборудованием RS232 и т.п.

Кроме того, если на хосте нет физического последовательного порта, как его «создать»? В настоящее время я использую NetSerial, который фактически создает «COM-порт» (с подключенным к нему «модемом»). Но QEMU, похоже, тоже не слишком любит эту конструкцию.

Сначала вам нужно определить chardev для последовательного порта хоста и присвоить ему имя (параметр id), например:

-chardev tty,path=/dev/ttyUSB0,id=hostusbserial

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

-device pci-serial,chardev=hostusbserial

Готово. Скорость линии и т. Д. Должна быть настроена в гостевой системе, qemu подберет настройки и применит их к последовательному порту хоста.

В -serial Командный переключатель - это удобный ярлык, он создаст chardev и свяжет его с последовательным портом по умолчанию (который является устройством isa-serial с обычным ioport 0x3f8 на x86 и чем-то еще для других архитектур).