If you're trying to get to the console, you can either use virt-viewer for the graphical console or attach to a serial TTY (as Carlos mentioned) with the "virsh console" command.
Assuming your vm is named "myvm", you'd use virt-viewer like this:
# virt-viewer -c qemu:///system myvm
For a serial console, you'll need to modify the kernel command line in grub (in the VM). In Fedora/RHEL/CentOS you'd do it this way:
1. Edit /etc/default/grub and add the following to the "GRUB_CMDLINE_LINUX=" line:
console=tty0 console=ttyS0,115200
2. # grub2-mkconfig -o /boot/grub2/grub.cfg
3. Reboot the VM
4. # virsh console myvm
The procedure should be similar on Debian and Ubuntu but you'll need to search for the proper way to update grub2 for that platform.
<domain type='kvm' id='33'>
<name>vm2</name>
<uuid>70affd5d-af95-72c5-2d96-c131f46409b6</uuid>
<description>--autostart</description>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='i686' machine='pc-0.14'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vms/vm2.qcow2'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<interface type='bridge'>
<mac address='52:54:00:5e:98:e4'/>
<source bridge='br0'/>
<target dev='vnet0'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/0'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/0'>
<source path='/dev/pts/0'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='6900' autoport='no' listen='0.0.0.0'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='apparmor'>
<label>libvirt-70affd5d-af95-72c5-2d96-c131f46409b6</label>
<imagelabel>libvirt-70affd5d-af95-72c5-2d96-c131f46409b6</imagelabel>
</seclabel>
</domain>
ssh -t <user>@<libvirthost> virsh console <vm_name> where: user - user that exist on libvirthost libvirthost - where libvirt VM is running
During installation you can access system console of a guest VM on the terminal:
virt-install ... --extra-args="console=tty0 console=ttyS0,115200n8 .. "
Then,
virsh console <DOMAIN>
VM console's serial option is like below.
<devices> <console type='pty'> <target type='serial' port='0'/> </console> <console type='pty'> <target type='virtio' port='1'/> </console> </devices>
The /dev/pts/XXX
path will be recorded in the XML document when the guest is running.
The virsh ttyconsole
command merely reads it from the XML
# virt-install > --name vm0 > --ram 12028 > --disk path=/home/veeru/ubuntu14-HD.img,size=30 > --vcpus 2 > --os-type linux > --os-variant ubuntu16.04 > --network bridge=bridge:br0 > --graphics none > --console pty,target_type=serial > --location /home/veeru/Downloads/ubuntu-16.04.5.iso --force > --extra-args 'console=ttyS0,115200n8 serial' > --host-device 01:00.0 > --features kvm_hidden=on > --machine q35
virt-install --name=$buildname --nographics --hvm --virt-type=kvm --file=$diskpath$buildname$vmextension --file-size=20 --nonsparse --vcpu=2 --ram=2048 --network bridge=br0 --os-type=linux --os-variant=generic --location=http://0.0.0.0/iso/ --initrd-inject /var/lib/libvirt/images/autobuild-ks.cfg --extra-args="ks=http://0.0.0.0/ks/autobuild-ks.cfg console=ttyS0"