1

我正在尝试在 CRIU 1.8 上运行单元测试。为了准备盒子,我安装了:

libprotobuf-lite8 libprotobuf8 zlib1g-dev libprotobuf-dev libprotobuf-c0 libprotobuf-c0-dev libprotoc8 protobuf-c-compiler protobuf-compiler libaio-dev libcap-dev

之后,我以 root 身份运行,make test得到以下输出:

...
make[3]: Leaving directory `/home/ubuntu/criu-1.8/test/zdtm/live/static'
make[2]: Leaving directory `/home/ubuntu/criu-1.8/test/zdtm/live'
make[1]: Leaving directory `/home/ubuntu/criu-1.8/test/zdtm'
make[1]: Entering directory `/home/ubuntu/criu-1.8/test'
make zdtm
make[2]: Entering directory `/home/ubuntu/criu-1.8/test'
./zdtm.sh -l > zdtm-tst-list
================================= CRIU CHECK =================================
prctl: PR_SET_MM_MAP is not supported, which is required for restoring user namespaces
Error (cr-check.c:634): Kernel doesn't support PTRACE_O_SUSPEND_SECCOMP
Error (cr-check.c:683): Dumping seccomp filters not supported: Input/output error
Error (timerfd.c:55): timerfd: No timerfd support for c/r: Inappropriate ioctl for device
Error (cr-check.c:780): AIO remap doesn't work properly
Error (cr-check.c:796): fdinfo doesn't contain the lock field
============================= WARNING =============================
Not all features needed for CRIU are merged to upstream kernel yet,
so for now we maintain our own branch which can be cloned from:
git://git.kernel.org/pub/scm/linux/kernel/git/gorcunov/linux-cr.git
===================================================================

make -f Makefile.zdtm zdtm_nons
make[3]: Entering directory `/home/ubuntu/criu-1.8/test'
gcc  -O2 -Wall -Werror -DCONFIG_X86_64 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE    zdtm_ct.c   -o zdtm_ct
flock zdtm_mount_cgroups ./zdtm_mount_cgroups
flock: ./zdtm_mount_cgroups: Text file busy
make[3]: *** [mount_cgroups] Error 69
make[3]: Leaving directory `/home/ubuntu/criu-1.8/test'
make[2]: *** [zdtm] Error 2
make[2]: Leaving directory `/home/ubuntu/criu-1.8/test'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/ubuntu/criu-1.8/test'
make: *** [test] Error 2

我认为我的问题是那里的 CRIU CHECK 块内的问题,但我只是不确定我在这里看到了什么。谁能指出我正确的方向。如果谷歌有帮助,那我太无知了,无法识别它。谢谢!

此外,我在 SO 上没有将其标记为 CRIU 的声誉(显然这是一个新标签),但它显然与 CRIU 有关。如果您同意并有权力,请在此贴上标签?

4

1 回答 1

0

你需要一个新的 Linux 内核。

CRIU CHECK 框中的内容都是它需要的东西,但不受系统上的库(例如 libc)或内核的支持。在下面的框中,它们描述了您必须从哪里获得具有必要补丁的内核:

============================= WARNING =============================
Not all features needed for CRIU are merged to upstream kernel yet,
so for now we maintain our own branch which can be cloned from:
git://git.kernel.org/pub/scm/linux/kernel/git/gorcunov/linux-cr.git
===================================================================

按照 CRIU 安装页面上有关如何配置内核的说明进行操作:https ://criu.org/Installation 。并且,使用类似“kernel newbies”的页面来获取有关自己构建内核的一般建议:http: //kernelnewbies.org/KernelBuild

构建内核相当简单,但有时很难让它正常工作。确保在 GRUB 中保留一个备用内核,并考虑让某种“实时”可引导的 Linux ISO 可访问以重新进入您的系统,以防它完全失败。

于 2016-05-13T13:56:12.870 回答