Из документации, доступной на просторах интернета, ясно как день - добавьте в конфиг вашей виртуальной машины в секцию <devices>...</devices>
<console type='pty'>
<target type='virtio' port='0'/>
</console>
и волшебным образом с хоста вы сможете получать доступ внутрь виртуалки, делая
virsh console ${vm_name}
Действительно, удобно. Консоль гораздо легче пусть и виртуальной, но видяхи. А виртуалкам без графического интерфейса видяха, как известно вообще не очень-то и нужна.
И если на CentOS это скорее всего заработает, то вот на Debian не тут-то было. Более того, если вы пытались добавить “console=hvc0” в параметры запуска ядра, то наверняка тачка вообще зависала и не отображала ничего нигде. Давайте разбираться.
Механика этого процесса такова, что кто-то (не будем показывать на systemd пальцем) должен запустить на новом устройстве эмулятор терминала - программу которая обрабатывает ввод от пользователя, запускает запрашиваемые им программы и отображает результат обратно.
Делает он это как? Как известно, systemd может запускать только свои "юниты", а значит, что когда придет время запускать терминал, соответствующий юнит должен существовать. Поскольку такую вещь, как терминал и их количество трудно предсказать для каждого компьютера в мире, systemd применяет "генераторы" - программы, которые на раннем этапе загрузки проходятся по доступному в системе оборудованию и, если надо, создают для него юниты, которые уже потом радостно обрабатываются systemd.
Доступному оборудованию это как? Это, в первую очередь, наличие драйвера и способность системы этот драйвер загрузить в ядро. Поскольку генераторы запускаются на раннем этапе загрузки, тогда, когда еще даже rootfs не смонтирована, драйвера брать неоткуда, кроме как из initramfs - специального бандла, который используется ядром для того, чтобы достать драйвера для разного оборудования, в том числе и для rootfs, когда rootfs, где лежат драйвера еще не доступна. Курица или яйцо?
Вот тут-то у Debian и случился косячок - они не включают в initramfs дрйвера для консолей типа virtio. Соответственно лечением бага будет ребилд initramfs с включенным virtio драйвером.
Добавляем строку “virtio_console” в /etc/initramfs-tools/modules и запускаем
update-initramfs -u
Всё, перезагружаем виртуалку и наслаждаемся работающей консолью. Теперь даже параметр ядра “console=hvc0” не приведет к зависанию.
_______________
Прочитали - поставьте лайк👍! Больше про сетевое администрирование- на моем канале.