我正试着在criu 1.8上运行单元测试。为了准备盒子,我安装了:
Libprotobuf-lite8号
libprotobuf8文件
ZLIB1G开发
libprotobuf开发
libprotobuf-c0
libprotobuf-c0-dev文件
libprotoc8协议
protobuf-c编译器
protobuf编译器
利巴约开发
libcap开发
之后,作为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检查区里面的问题,但我不确定我在这里看到了什么。有人能给我指个正确的方向吗?如果谷歌是有帮助的,那我就是太无知了,认不出来。谢谢!
另外,我没有这样的名声,所以把这个标记为criu(显然这是一个新的标记),但它显然与criu有关。如果你同意并拥有权力,请在这上面加个标签?

最佳答案

你需要一个新的linux内核。
criu复选框中的内容都是它所需要的,但是系统上的库(例如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。并且,使用一个类似于“内核新手”的页面来获取关于自己构建内核的一般建议:http://kernelnewbies.org/KernelBuild
构建一个内核是相当简单的,但有时要让它正常工作是很困难的。确保在grub中保留一个备用内核,并考虑让某种“实时”可引导的linux iso可以访问,以便在系统完全崩溃的情况下回到您的系统中。

08-04 15:12