Как эти параметры qemu для перенаправления stdout работают?

Я использую следующие параметры для запуска QEMU, чтобы выход из гостевой системы был перенаправлен на консоль хоста:

-chardev stdio,id=virtiocon0 -device virtio-serial -device virtconsole,chardev=virtiocon0 

У меня есть следующие вопросы:

  1. Что означают каждый из этих флагов?
  2. Какие устройства создаются как на стороне гостя, так и на стороне хоста?
  3. Где я должен искать устройство на стороне хоста (я действительно хочу его прочитать)?

One Solution collect form web for “Как эти параметры qemu для перенаправления stdout работают?”

С manpage:

-chardev backend, id = id [, mux = on | off] [, options]

Backend является одним из: null, socket, udp, msmouse, vc, ringbuf, file, pipe, console, serial, pty, stdio, braille, tty, parallel, parport, spicevmc. spiceport. Конкретный бэкэнд определит применимые параметры.

Все устройства должны иметь идентификатор, который может содержать любую строку длиной до 127 символов. Он используется для уникальной идентификации этого устройства в других директивах командной строки.

И, в частности, о бэкэнде stdio:

-chardev stdio, id = id [, signal = on | off]

Соединитесь со стандартным входом и стандартным выходом процесса QEMU.

Таким образом, этот соединяет шардеевский virtiocon0 с процессом qemu 'stdin / out.

Остальные два:

-device driver [, prop [= value] [, …]]
Добавьте драйвер устройства. prop = value устанавливает свойства драйвера. Действительные свойства зависят от драйвера.

Первый драйвер, virtio-serial просто создает канал связи между хостом и гостем. Это необходимо для следующего драйвера.

Последний, virtconsole создает консольное устройство для гостя, прикрепленное к ранее созданному chardev, которое было прикреплено к stdio / out qemu.

Затем гость может использовать это консольное устройство, как и любое другое tty (например, вызов getty на нем и т. Д.).

Устройство, созданное на гостевом компьютере, будет зависеть от ядра и того, как оно было скомпилировано, в Linux это обычно / dev / hvc0.

В этом случае на хосте нет устройства, которое просто использует stdin и stdout. Читайте на нем на stdin и пишите ему на stdout.

Вы также можете перенаправить stdin и stdout на что-то другое или использовать другой chardev сервер. Попробуйте сокет или трубу.

  • Откуда идет вывод приложения из диспетчера окон?
  • Как перенаправить вывод tarsnapper в / dev / null?
  • Вывод содержимого конвейера в файл и отображение количества строк в файле на stdout
  • Могу ли я читать и писать в тот же файл в Linux, не перезаписывая его?
  • Записать исходный файл Python в файл немедленно
  • журнал регистрации ufsdump при резервном копировании на stdout
  • где находится stdin, stdout, дескриптор файла stderr в AIX (unix)
  • Как обмануть команду в мысли, что ее выход идет на терминал
  • Я хочу поймать STDERR и STDOUT сценария с фоновым запуском
  • Перенаправление stderr скрипта Ruby не работает должным образом
  • Есть ли инструмент для динамического перенаправления вывода на новый файл по запросу
  • Linux и Unix - лучшая ОС в мире.