I've created a KVM virtual machine using the following command:

sudo ubuntu-vm-builder kvm oneiric \
                  --domain xpstage \
                  --dest xpstage \
                  --arch i386 \
                  --hostname xpstage \
                  --mem 1024 \
                  --user myuser --pass mypassword \
                  --bridge virbr0 \
                  --ip --dns \
                  --components main,universe,restricted \
                  --addpkg acpid --addpkg vim --addpkg openssh-server --addpkg avahi-daemon \
                  --libvirt qemu:///system ;

I'm able to start the VM, but I can't connect to it using networking (ssh) nor console.

To enable console access, I added a console section to the VM definition file:

<domain type='kvm' id='10'>
    <type arch='x86_64' machine='pc-0.14'>hvm</type>
    <boot dev='hd'/>
  <clock offset='utc'/>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/darugar/VMs/xpstage/tmpB1Hu5k.qcow2'/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    <interface type='bridge'>
      <mac address='52:54:00:d1:6d:b8'/>
      <source bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    <serial type='pty'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    <console type='pty' tty='/dev/pts/3'>
      <source path='/dev/pts/3'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen=''/>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  <seclabel type='dynamic' model='apparmor'>

However, when I attempt to connect via the console nothing displays at all:

$ virsh console xpstage
Connected to domain xpstage
Escape character is ^]

$ virsh ttyconsole xpstage

The "virsh console" command appears to connect, but nothing is displayed besides the "Escape character is ^]".

Note that I'm not looking for VNC or graphical access; I want simple console based access.

Ideas on how to make this work would be appreciated.


You definitely need to enable the serial console in the guest machine before being able to connect. The correct way is described here: https://help.ubuntu.com/community/SerialConsoleHowto

Recent Ubuntu versions use Upstart tasks and services so you should add an Upstart task as /etc/init/ttyS0.conf, containing the following:

# ttyS0 - getty
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc or RUNLEVEL=[2345]
stop on runlevel [!2345]

exec /sbin/getty -L 115200 ttyS0 vt102

Start it this way:

$ sudo start ttyS0

After that you should be able to connect to the serial console from the host. Don't forget to press Enter once connected.

  • Thanks, I'd found the same page and tried it. I've verified the /etc/init/ttyS0.conf file exists, but when I do "sudo start ttyS0" I get start: Unknown job: ttyS0 . I'll see if I can figure out why. – Parand Dec 7 '11 at 23:50
  • If start ttyS0 doesn't work you could try service ttyS0 start. Or a reboot :) – daff Dec 8 '11 at 3:50

I believe you still need to send something to the console from your host.

So either having kernel parameter like console=ttyS0,38400n8 and

T0:2345:respawn:/sbin/getty -L ttyS0 38400 vt100

in your /etc/inittab.

Or maybe just removing the VGA will make Ubuntu use ttyS0 by default (but i'm wildly guessing here).


Two problems are described, ssh access, and virsh console access. Obviously the console is the starting point so you can debug ssh and networking. Here's how to get virsh console working.

  1. shut down the guest and mount its root drive on a loop device, perhaps

    $ sudo kpartx -a guest.img
    $ sudo kpartx -av guest.img 
    add map loop0p1 (253:1): 0 41940992 linear /dev/loop0 2048
    $ sudo mount -t ext4 /dev/loop0p1 /mnt
  2. Create this file -- google "ttyS0 (your guest OS version)" for examples.

    /etc/init/ttyS0.conf: (this is the path for ubuntu 14.04)
    # ttyS0 - getty
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc RUNLEVEL=[2345]
    stop on runlevel [!2345]
    exec /sbin/getty -L 115200 ttyS0 xterm
  3. Edit /mnt/etc/securetty and add ttyS0 to the list.

  4. Unmount /mnt, kpartx -d guest.img, and start your guest.

  5. Now virsh console guest should work AND login will succeed (without the edit to securetty, Login always fails.)

Note CentOS/RHEL have a file /etc/init/serial.conf that describes how to do this.

Addendum I had a guest system that had no console: If I ran virsh console guest I got the "Connected..." message, but nothing else printed to screen. This one did have SSH running. After shelling in and creating the ttyS0.conf file, I ran sudo start ttyS0, and the console started working.

  • Add ttyS0 to what list? In my /etc/securetty there is a section titled, "# UART serial ports" and the first line under # UART serial ports reads "ttyS0" – mr.zog Mar 7 '16 at 3:28
  • Sorry if I was unclear. The file is the list. Since ttyS0 appears on a line by itself, you're done. I just tested my procedure & it's working for a guest running Ubuntu 14.04. – nortally Mar 8 '16 at 17:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.