I'm using Eucalyptus on Ubuntu 10.04 to set up a private cloud. Sometimes I'm not able to ssh into the VM instances, and I'd like to be able to connect directly to the console of the VM instance. However, by default, that doesn't seem to work through virsh:$ sudo virsh -c qemu:///system console i-486B085ENo console available for domainIs there some way to enable this, for example, by changing the way Eucalyptus generates the XML file that gets passed to libvirt?  Here's the libvirt.xml file that Eucalyptus generates:$ cat /var/lib/eucalyptus/instances/admin/i-486B085E/libvirt.xml<domain type='kvm'>    <name>i-486B085E</name>    <os>    <type>hvm</type>        <kernel>/var/lib/eucalyptus/instances//admin/i-486B085E/kernel</kernel>        <initrd>/var/lib/eucalyptus/instances//admin/i-486B085E/ramdisk</initrd>        <cmdline>root=/dev/sda1 console=ttyS0</cmdline>    </os>    <features>        <acpi/>    </features>    <memory>262144</memory>    <vcpu>1</vcpu>    <devices>        <disk type='file'>            <source file='/var/lib/eucalyptus/instances//admin/i-486B085E/disk'/>            <target dev='sda'/>        </disk>        <interface type='bridge'>            <source bridge='eucabr10'/>            <mac address='d0:0d:48:6B:08:5E'/>            <model type='e1000'/>        </interface>        <serial type=file>            <source path='/var/lib/eucalyptus/instances//admin/i-486B085E/console.log'/>            <target port='1'/>        </serial>    </devices></domain>Here's the output of virsh dumpxml:$ sudo virsh dumpxml i-486B085E<domain type='kvm' id='3'>  <name>i-486B085E</name>  <uuid>3b762376-4de1-f6ac-7327-9df520fa4862</uuid>  <memory>262144</memory>  <currentMemory>262144</currentMemory>  <vcpu>1</vcpu>  <os>    <type arch='x86_64' machine='pc-0.12'>hvm</type>    <kernel>/var/lib/eucalyptus/instances//admin/i-486B085E/kernel</kernel>    <initrd>/var/lib/eucalyptus/instances//admin/i-486B085E/ramdisk</initrd>    <cmdline>root=/dev/sda1 console=ttyS0</cmdline>    <boot dev='hd'/>  </os>  <features>    <acpi/>  </features>  <clock offset='utc'/>  <on_poweroff>destroy</on_poweroff>  <on_reboot>restart</on_reboot>  <on_crash>destroy</on_crash>  <devices>    <emulator>/usr/bin/kvm</emulator>    <disk type='file' device='disk'>      <source file='/var/lib/eucalyptus/instances//admin/i-486B085E/disk'/>      <target dev='sda' bus='scsi'/>    </disk>    <interface type='bridge'>      <mac address='d0:0d:48:6b:08:5e'/>      <source bridge='eucabr10'/>      <target dev='vnet0'/>      <model type='e1000'/>    </interface>    <serial type='file'>      <source path='/var/lib/eucalyptus/instances//admin/i-486B085E/console.log'/>      <target port='0'/>    </serial>    <console type='file'>      <source path='/var/lib/eucalyptus/instances//admin/i-486B085E/console.log'/>      <target port='0'/>    </console>  </devices>  <seclabel type='dynamic' model='apparmor'>    <label>libvirt-3b762376-4de1-f6ac-7327-9df520fa4862</label>    <imagelabel>libvirt-3b762376-4de1-f6ac-7327-9df520fa4862</imagelabel>  </seclabel></domain>Here's the full KVM command-line that ends up being invoked: /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 256 -smp 1 -name i-486B085E -uuid 3b762376-4de1-f6ac-7327-9df520fa4862 -nographic -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/i-486B085E.monitor,server,nowait -monitor chardev:monitor -boot c -kernel /var/lib/eucalyptus/instances//admin/i-486B085E/kernel -initrd /var/lib/eucalyptus/instances//admin/i-486B085E/ramdisk -append root=/dev/sda1 console=ttyS0 -drive file=/var/lib/eucalyptus/instances//admin/i-486B085E/disk,if=scsi,index=0,boot=on -net nic,macaddr=d0:0d:48:6b:08:5e,vlan=0,model=e1000,name=e1000.0 -net tap,fd=55,vlan=0,name=tap.0 -chardev file,id=serial0,path=/var/lib/eucalyptus/instances//admin/i-486B085E/console.log -serial chardev:serial0 -parallel none -usbNote: Cross-posted from serverfault since question migration isn't supported yet.
Connect to KVM instance using virsh when image launched through Eucalyptus?
kvm
I figured it out... You need to edit the /usr/share/eucalyptus/gen_kvm_libvirt_xml file. Here's the diff:--- /usr/share/eucalyptus/gen_kvm_libvirt_xml.bak   2010-09-28 14:54:20.259266161 -0400+++ /usr/share/eucalyptus/gen_kvm_libvirt_xml   2010-09-28 15:01:25.269265897 -0400@@ -109,9 +109,9 @@             <mac address='PRIVMACADDR'/>             <model type='e1000'/>         </interface>-        <serial type=file>-            <source path='BASEPATH/console.log'/>-            <target port='1'/>+        <serial type='pty'>+          <source path='/dev/pts/2'/>+          <target port='0'/>         </serial>     </devices> </domain>(Also answered on serverfault).