[libvirt] How to connect to console of domain on PowerPC?
Yin Olivia-R63875
r63875 at freescale.com
Tue Feb 5 03:05:58 UTC 2013
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 at redhat.com]
Sent: Monday, February 04, 2013 6:19 PM
To: Yin Olivia-R63875
Cc: libvir-list at 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 :|
More information about the libvir-list
mailing list