On 2013-11-14 14:17 , Gao feng 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.
------------------
Best regards!
GuanQiang
14:52:30