virsh: o console da VM não mostra nenhuma saída

5

Eu tenho uma VM que posso começar com virsh . De acordo com virsh dumpxml VM1 , esse é o pty alocado:

<serial type='pty'>
  <source path='/dev/pts/6'/>
  <target port='0'/>
  <alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/6'>
  <source path='/dev/pts/6'/>
  <target type='serial' port='0'/>
  <alias name='serial0'/>
</console>

A VM está em execução:

# virsh list
 Id Name                 State
----------------------------------
  7 VM1                  running

Dentro da VM, esta é a configuração do grub:

kernel          /boot/vmlinuz-2.6.24-28-virtual root=UUID=7a1685b9-ecc8-4b70-932c-459a6faac07d ro quiet splash console=tty0 console=ttyS0,9600n8

E esta é a linha de comando lançada pelo virsh para iniciar a VM:

/usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 256 -smp 1,sockets=1,cores=1,threads=1 -name VM1 -uuid 47ff6ec2-a748-4738-16b9-2ffe5780e456 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/VM1.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/var/VMs/VM1.qcow2,if=none,id=drive-ide0-0-0,boot=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:12:34:50,bus=pci.0,addr=0x3 -net tap,fd=64,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -k de -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4

Mas se eu me conectar com virsh console VM1 ou cat /dev/pts/6 , nada será mostrado no console da VM.

Existe algo mais que devo considerar?

UPDATE

Eu tenho duas VMs, uma iniciada diretamente com kvm , a outra via virsh . Aquele iniciado diretamente tem um console de trabalho. Eu verifiquei os arquivos abertos nos dois casos:

root@host1:~# lsof | grep 25093 | grep dev
kvm       25093         root  DEL       REG                0,4                3758780 /dev/zero
kvm       25093         root  DEL       REG                0,4                3758779 /dev/zero
kvm       25093         root  DEL       REG                0,4                3758777 /dev/zero
kvm       25093         root    0u      CHR              136,3         0t0          6 /dev/pts/3
kvm       25093         root    1u      CHR              136,3         0t0          6 /dev/pts/3
kvm       25093         root    2u      CHR              136,3         0t0          6 /dev/pts/3
kvm       25093         root    3u      CHR             10,232         0t0       8025 /dev/kvm
kvm       25093         root    7u      CHR             10,200         0t0       4983 /dev/net/tun
root@host1:~# lsof | grep 8341 | grep dev
kvm        8341 libvirt-qemu  DEL       REG                0,4                9743486 /dev/zero
kvm        8341 libvirt-qemu  DEL       REG                0,4                9743485 /dev/zero
kvm        8341 libvirt-qemu  DEL       REG                0,4                9743483 /dev/zero
kvm        8341 libvirt-qemu    0r      CHR                1,3         0t0       4640 /dev/null
kvm        8341 libvirt-qemu    4u      CHR                5,2         0t0       4897 /dev/ptmx
kvm        8341 libvirt-qemu    5u      CHR             10,232         0t0       8025 /dev/kvm
kvm        8341 libvirt-qemu   64u      CHR             10,200         0t0       4983 /dev/net/tun

Como você pode ver, em uma das VMs (a errada), não há descritores de arquivos 1 & 2, e descritor de arquivo 0 é redirecionado para / dev / null. Esse é o problema, eu acho.

A pergunta é: como eu digo ao virsh para não fazer isso?

    
por dangonfast 29.02.2012 / 16:19

2 respostas

9
<serial type='pty'>
  <target port='0'/>
</serial>
<console type='pty'>
  <target type='serial' port='0'/>
</console>

Isso é o que eu normalmente adiciono à definição de VMs, usando virsh edit Então console=ttyS0 acrescentado na linha do kernel da VM no grub.conf

Nunca me falhou até agora

    
por 29.02.2012 / 20:17
7

Exemplo de uso do Debian jessie como sistema operacional host e guest.

  1. crie uma VM usando virt-install ou virt-manager Em qualquer caso, você receberá instruções do console serial adicionadas ao arquivo VM.xml

  2. na VM convidada, execute o seguinte

    systemctl enable [email protected]
    systemctl start [email protected]
    
  3. na VM guest em /etc/default/grub replace

    GRUB_CMDLINE_LINUX_DEFAULT="quiet"
    #GRUB_TERMINAL=console
    

    por

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"
    GRUB_TERMINAL="serial console"
    
  4. na VM convidada, execute o seguinte

    guest# update-grub
    
  5. o console da VM para executar a VM pode ser obtido por

    host# virsh console VM
    

    ou inicie a VM com o console conectado

    host# virsh start VM --console
    

Fontes:

por 11.07.2015 / 19:22