Acessando o terminal das VM Linux no KVM

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