
Hi Daniel, Thanks for your comments. So far there's no device in QEMU to align with chardev on FSL PowerPC platforms like spapr-pty for IBM PSeries. Maybe it needs patches to QEMU. I'll take deeper investigation on it. Anyway for LXC instance, it doesn't depend on the syntax. I can connect to the console if connect a domain with simple shell. # vi vm1.xml <domain type='lxc'> <name>vm1</name> <memory>32768</memory> <os> <type>exe</type> <init>/bin/sh</init> </os> <vcpu>1</vcpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/libexec/libvirt_lxc</emulator> <console type='pty' tty='/dev/pts/3'> <source path='/dev/pts/3'/> <target port='0'/> </console> </devices> </domain> # virsh -c lxc:/// define vm1.xml # virsh -c lxc:/// start vm1 Domain vm1 started # virsh -c lxc:/// console vm1 Connected to domain vm1 Escape character is ^] sh-4.2# pwd / sh-4.2# ps PID TTY TIME CMD 1 pts/2 00:00:00 sh 3 pts/2 00:00:00 ps But can't get any output when connecting domain with a simple private root filesystem. # vi vm2.xml <domain type='lxc'> <name>vm2</name> <memory>25536</memory> <os> <type>exe</type> <init>/sbin/init</init> </os> <vcpu>1</vcpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/libexec/libvirt_lxc</emulator> <filesystem type='mount'> <source dir='/media/ram/vm1-root'/> <target dir='/var/lib/libvirt/lxc/rootfs'/> </filesystem> <interface type='network'> <source network='default'/> </interface> <console type='pty' /> </devices> </domain> # virsh -c lxc:/// define vm2.xml # virsh -c lxc:/// start vm2 Domain vm2 started # virsh -c lxc:/// console vm2 Connected to domain vm2 Escape character is ^] Do you have any suggestion? Best Regards, Olivia -----Original Message----- From: Daniel P. Berrange [mailto:berrange@redhat.com] Sent: Monday, February 04, 2013 6:19 PM To: Yin Olivia-R63875 Cc: libvir-list@redhat.com Subject: Re: [libvirt] How to connect to console of domain on PowerPC? On Mon, Feb 04, 2013 at 02:22:03AM +0000, Yin Olivia-R63875 wrote:
For instance, /usr/bin/qemu-system-ppc -name demo -M ppce500v2 -enable-kvm -m 256 -nographic -kernel /media/ram/uImage -initrd /media/ram/ramdisk -append "root=/dev/ram rw console=ttyS0,115200" -serial tcp::4445,server
Then to run 'telnet 10.193.20.xxx 4445' could connect the guest.
The temporary workaround is not add '-device' string after '-serial' option.
This is wrong. -serial is legacy command line syntax that libvirt should never use for any QEMU released in the last 2 years. New syntax is uses a combination of -device + -chardev.
diff -Nur libvirt-0.10.1.orig/src/qemu/qemu_command.c libvirt-0.10.1/src/qemu/qemu_command.c --- libvirt-0.10.1.orig/src/qemu/qemu_command.c 2012-08-30 15:35:18.000000000 +0530 +++ libvirt-0.10.1/src/qemu/qemu_command.c 2012-10-05 17:19:32.060368755 +0530 @@ -5501,13 +5501,15 @@ virCommandAddArg(cmd, devstr); VIR_FREE(devstr);
- virCommandAddArg(cmd, "-device"); - if (!(devstr = qemuBuildChrDeviceStr(serial, qemuCaps, + if (!STREQ(def->os.arch, "ppc")) { + virCommandAddArg(cmd, "-device"); + if (!(devstr = qemuBuildChrDeviceStr(serial, + qemuCaps, def->os.arch, def->os.machine))) - goto error; - virCommandAddArg(cmd, devstr); - VIR_FREE(devstr); + goto error; + virCommandAddArg(cmd, devstr); + VIR_FREE(devstr); + } } else { virCommandAddArg(cmd, "-serial"); if (!(devstr = qemuBuildChrArgStr(&serial->source, NULL)))
Applying the above patch to libvirt, all the other domain control commands could work except 'virsh console domain'.
# cat >demo.args <<EOF
/usr/bin/qemu-system-ppc -name demo -M ppce500v2 -enable-kvm -m 256 -nographic -kernel /media/ram/uImage -initrd /media/ram/ramdisk -append "root=/dev/ram rw console=ttyS0,115200" -serial tcp::4445,server -net nic EOF
# vi demo.args /usr/bin/qemu-system-ppc -name demo -M ppce500v2 -enable-kvm -m 256 -nographic -kernel /media/ram/uImage -initrd /media/ram/ramdisk -append "root=/dev/ram rw console=ttyS0,115200" -serial tcp::4445,server -net nic
If you think libvirt has a problem generating command line args, then rather than telling us about some random command line args you've created yourself, please provide the actual args that libvirt has generated. See /var/log/libvirt/qemu/$GUESTNAME.log for those. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|