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(a)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 :|