On 2013-11-14 16:40 , Gao feng <mailto:gaofeng@cn.fujitsu.com>
wrote:
On 11/14/2013 03:09 PM, hzguanqiang(a)corp.netease.com wrote:
> On 2013-11-14 15:03 , Gao feng <mailto:gaofeng@cn.fujitsu.com> wrote:
>
> On 11/14/2013 02:57 PM, hzguanqiang(a)corp.netease.com wrote:
> > On 2013-11-14 14:17 , Gao feng <mailto:gaofeng@cn.fujitsu.com>
wrote:
> >
> > On 11/14/2013 01:52 PM, hzguanqiang(a)corp.netease.com wrote:
> > > On 2013-11-14 13:41 , Gao feng
<mailto:gaofeng@cn.fujitsu.com> wrote:
> > >
> > > On 11/14/2013 01:24 PM, Gao feng wrote:
> > > > On 11/14/2013 10:59 AM, hzguanqiang(a)corp.netease.com
wrote:
> > > >> Hi experts,
> > > >>
> > > >> When I test lxc-enter-namespace interface, it
turned out such an error:
> > > >>
> > > >> hzguanqiang@debian:~$
<mailto:hzguanqiang@debian:~$> vir version
> > > >> Compiled against library: libvirt 1.1.4
> > > >> Using library: libvirt 1.1.4
> > > >> Using API: LXC 1.1.4
> > > >> Running hypervisor: LXC 3.9.6
> > > >>
> > > >> hzguanqiang@debian:~$
<mailto:hzguanqiang@debian:~$> vir list
> > > >> Id Name State
> > > >>
----------------------------------------------------
> > > >> 1544 instance-00000015 running
> > > >>
> > > >> hzguanqiang@debian:~$
<mailto:hzguanqiang@debian:~$> vir lxc-enter-namespace 1544 --noseclabel /bin/df
-hl
> > > >> error: Cannot get namespaces for 1545: Function
not implemented
> > > >>
> > > >> hzguanqiang@debian:~$
<mailto:hzguanqiang@debian:~$> ls /proc/self/ns
> > > >> ipc mnt net pid user uts
> > > >>
> > > >> What's the problem?
> > > >>
> > > >
> > > > Does your system have system call setns?
> > >
> > > grep setns /proc/kallsyms
> > > and
> > > grep setns the config.log of libvirt.
> > >
> > >
> > > Hi, Gaofeng, thanks for your help. The info you want are:
> > >
> >
> > Hi,
> >
> > > hzguanqiang@debian:~/github/libvirt$
<mailto:hzguanqiang@debian:~/github/libvirt$> sudo grep setns
/var/log/libvirt/libvirtd.log
> >
> > config.log not libvirtd.log, or you can exec "./configure |
grep setns" under libvirt source directory.
> >
> > > hzguanqiang@debian:~/github/libvirt$
<mailto:hzguanqiang@debian:~/github/libvirt$> grep setns /proc/kallsyms
> > > ffffffff8105b993 T sys_setns
> > >
> > > What I found really strange is that the error info returned by
the command.
> > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$>
vir lxc-enter-namespace 1544 --noseclabel /bin/df -hl
> > > error: Cannot get namespaces for 1545: Function not
implemented
> > > The instance id is 1544, but the error info hint cannot get ns
for 1545.
> > >
> >
> > we have two libvirt lxc related process at the first start,
> > one is controller process on host(pid 1544), the other is the
container's init task(pid 1545).
> > since lxc-enter-namespace wants to exec cmd in container
environment. so
> > libvirt will try to get the namespaces of container's init
task.
> >
> > The problem is libvirt/autoconf thinks your system doesn't
support setns system call...
> >
> > > The libvirt code of mine is of version 1.1.4 from github (git
checkout v1.1.4 -b stable1.1.4 )
> > >
> >
> > I don't know if the libvirt git repo on github is the right
thing, but As I know
> > this repo
git://libvirt.org/libvirt.git is official.
> >
> > Please have a try.
> >
> >
> > Thanks
> >
> >
> > Sorry, I made a mistake about the libvirt repo, the code I used is just
from the official repo.
> > Maybe it's problem of my kernel. I've tried to build libvirt
from code of master branch. The
> > mistake is just the same.
> >
>
> what's result of "./configure | grep setns"
>
>
>
>
> The result is:
> hzguanqiang@debian:~/github/libvirt$
<mailto:hzguanqiang@debian:~/github/libvirt$> ./configure | grep setns
> checking for setns... no
>
> Is there something need to configure for setns system call? Or something is
wrong with my kernel?
>
Seem your kernel has setns, but autoconf doesn't recognise it.
you can modify the config.h, change as below
#define HAVE_SETNS 1
and make && make install
Hi gaofeng,
I tried as you said, but it report an error when do make operation as following:
util/virprocess.c: In function 'virProcessSetNamespaces':
util/virprocess.c:568:9: error: implicit declaration of function 'setns'
[-Werror=implicit-function-declaration]
util/virprocess.c:568:9: error: nested extern declaration of 'setns'
[-Werror=nested-externs]
cc1: all warnings being treated as errors
make[3]: *** [util/libvirt_util_la-virprocess.lo] Error 1
I think something must be wrong about setns system call in my environment.
But still thanks very much for your help.
maybe you need to do make headers_install or make header_install_all under kernel source
directory, or
use apt-get install linux-headers-$(uname -r).