Tenho algumas VMs virtualizadas com KVM
Às vezes preciso acessa-las e ver o boot delas ou corrigir uma placa de rede virtual ou coisa assim mas a interface gráfica fica pesada por estar longe ou sobre uma internet pobre.
O melhor nesses casos, é fazer um ssh no hospedeiro e dai entrar pelo console na máquina virtual, mas se justo a rede virtual não funciona, você precisa de uma outra solução. No caso, poder acessar usando o virsh.
Se sua VM é Centos7
Edite o arquivo /etc/default/grub
No meu caso, tenho uma linha assim:
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap crashkernel=auto rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16 vconsole.keymap=br-abnt2 rhgb quiet"
Como quero permitir acesso via o porto serial (é assim que o virsh e outros se comunicam com a virtual) habilito ele e retiro o quiet ficando assim:
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap crashkernel=auto rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16 vconsole.keymap=br-abnt2 rhgb console=ttyS0"
Depois escrevo essa config no grub com o seguinte comando
grub2-mkconfig -o /boot/grub2/grub.cfg
A saída fica mais ou menos assim:
Na máquina hospedeira, listo as virtuais com o comando virsh list que produz uma saída como a seguinte
Com isso obtenho uma lista das máquinas e posso acessar (no caso o último listado) com o seguinte comando:
virsh console SignalServer
Ele irá pedir usuário e senha como se estivesse por uma tty normal
Um lance interessante é reiniciar a máquina e poder acompanhar o boot assim:
$ virsh reboot SignalServer $ virsh console SignalServer
Caso sua VM seja Ubuntu, faça assim
$ sudo systemctl enable serial-getty@ttyS0.service $ sudo systemctl start serial-getty@ttyS0.service