[libvirt] Libvirt/LXC (lxcControllerMain:380 : EPOLLHUP from fd 7)
Daniel P. Berrange
berrange at redhat.com
Mon Dec 7 10:20:57 UTC 2009
On Mon, Dec 07, 2009 at 03:02:53AM -0600, Tony Risinger wrote:
> hello,
>
> i am trying to use libvirt with LXC, and having some issues...
> everything seems ok when using lxc-* tools. host box is Arch Linux.
> ultimately i'm getting this error in the domain log:
>
> .....
> 05:45:31.353: debug : lxcControllerMain:380 : EPOLLHUP from fd 7
>
> i was getting this last night in #virt:
>
> .....
> 20:49:57.545: error : lxcFdForward:230 : read of fd 7 failed: Input/output error
> libvir: Linux Container error : read of fd 7 failed: Input/output error
I believe this essentially says that the container has shutdown.
> -----CONFIGURATION
>
> # host ptmx symlinked to pts/ptmx
> [root at PHS-001 vps]# ls -l /dev/ptmx
> lrwxrwxrwx 1 root root 8 2009-12-08 04:40 /dev/ptmx -> pts/ptmx
>
> # guest ptmx symlinked to pts/ptmx
> [root at PHS-001 vps]# ls -l /vps/dom/ubuntu/root/dev/ptmx
> lrwxrwxrwx 1 root root 8 2009-12-06 04:11
> /vps/dom/ubuntu/root/dev/ptmx -> pts/ptmx
Avoid doing this - libvirt will set that up as part of the container
bootstrapping processs.
> # guest config...
> # i have tried the legacy <console type='pty' /> with same results
> # i dont fully understand this, why do i need to specify a host/source pty?
> [root at PHS-001 vps]# cat /vps/def/exec/sys/ubuntu.xml
> <domain type='lxc'>
> <name>ubuntu</name>
> <memory>500000</memory>
> <os>
> <type arch='i686'>exe</type>
> <init>/sbin/init</init>
> </os>
> <clock offset='utc'/>
> <on_poweroff>destroy</on_poweroff>
> <on_reboot>restart</on_reboot>
> <on_crash>destroy</on_crash>
> <devices>
> <filesystem type='mount'>
> <source dir='/vps/dom/ubuntu/root'/>
> <target dir='/'/>
> </filesystem>
> <console type='pty'>
> <source path='/dev/pts/4'/>
Leave out the <source> here - that's auto-generated when the container
starts
> <target port='0'/>
> </console>
> </devices>
> </domain>
>
> -----PROCEDURE
>
> [root at PHS-001 vps]# LIBVIRT_DEBUG=1 libvirtd --daemon
> 05:42:46.121: debug : virInitialize:278 : register drivers
> .....
>
> [root at PHS-001 vps]# virsh -c lxc:/// define /vps/def/exec/sys/ubuntu.xml
> Domain ubuntu defined from /vps/def/exec/sys/ubuntu.xml
>
> [root at PHS-001 vps]# virsh -c lxc:/// define /vps/def/exec/sys/ubuntu.xml
> Domain ubuntu defined from /vps/def/exec/sys/ubuntu.xml
>
> [root at PHS-001 vps]# virsh -c lxc:/// start ubuntu
> Domain ubuntu started
>
> [root at PHS-001 vps]# virsh -c lxc:/// console ubuntu
> error: Unable to get domain status
> error: internal error Unable to get cgroup for ubuntu
>
> -----LOGS
>
> # /var/log/libvirt/lxc/ubuntu.log
> 05:45:31.126: debug : virCgroupMakeGroup:450 : Make group /libvirt/lxc
> 05:45:31.126: debug : virCgroupMakeGroup:462 : Make controller
> /cgroup/1534/libvirt/lxc/
> 05:45:31.211: debug : lxcContainerStart:832 : clone() returned, 1536
> 05:45:31.353: debug : lxcControllerMain:380 : EPOLLHUP from fd 7
>
> i've tried endless variations of the <devices> section, but i just
> cant seem to get anything going with libvirt/LXC once i move the root
> to a new location for a system container. same container works fine
> with lxc-* tools (although i manually make a bridge). any help is
> appreciated,
Rather that going straight for a full OS, try just setting up a trivial
busybox root environment which just takes you intoa busybox shell.
eg, in /sbin/init just have
#!/sbin/busybox
sh
(Obviously install busybox in /sbin inside the root env too :-)
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list