1. 概述
2. 部署过程
2.1 源码下载
2.2 解压安装
2.3 添加库环境
2.4 插入内核模块
3. 测试
3.1 创建测试程序
3.2 功能测试
4. 参考博客
1. 概述
checkpoint
2. 部署过程
2.1 源码下载
官方网站:http://crd.lbl.gov/departments/computer-science/CLaSS/research/BLCR/
下载最新版本:blcr-0.8.5.tar.gz
2.2 解压安装
执行命令:tar -zxvf blcr-0.8.5.tar.gz -C /tmp
;
进入到/tmp/blcr-0.8.5,执行命令:./configure --prefix=/usr/local/globle/softs/blcr/0.8.5/
【报错信息】:configure: error: Directory /boot/ does not appear to contain a Linux kernel build
【原因分析】:由于是在虚拟机console编译安装,console并没有安装内核软件包,因此会造成上面的报错。
【解决方式】:执行命令:yum -y install kernel*
,安装完成之后,继续编译安装的操作。
2.3 添加库环境
将安装在全局文件系统上的blcr库目录,/usr/local/globle/softs/blcr/0.8.5/lib,添加至系统库环境中。
执行命令:echo "/usr/local/globle/softs/blcr/0.8.5/lib" > /etc/ld.so.conf.d/blcr.conf
然后执行命令:ldconfig加载生效
2.4 插入内核模块
执行命令:find / -name blcr_imports.ko
,查看内核模块放置的位置为:
/usr/local/globle/softs/blcr/0.8.5/lib/blcr/2.6.32-431.el6.x86_64/blcr_imports.ko
执行命令:
insmod /usr/local/globle/softs/blcr/0.8.5/lib/blcr/2.6.32-431.el6.x86_64/blcr_imports.ko
insmod /usr/local/globle/softs/blcr/0.8.5/lib/blcr/2.6.32-431.el6.x86_64/blcr.ko
插入内核模块
3. 测试
3.1 创建测试程序
创建testblcr.c,内容如下:
#include <stdio.h>
int main()
{
int number = 0,i;
printf("start process\n");
for (i = 0; i < 100; i++) {
printf("%d\n", number);
sleep(1);
number++;
}
return 0;
}
执行命令:gcc testblcr.c -o testblcr
,生成可执行文件testblcr
3.2 功能测试
执行命令:cr_run ./testblcr
注:若上述操作未将blcrt的lib目录添加至系统环境中,并且ldconfig加载,则测试会报错:ERROR: ld.so: object ‘libcr_run.so.0‘ from LD_PRELOAD cannot be preloaded: ignored
然后通过ps -ef | grep cr_run
,获取到该程序的pid;然后重开新窗口,执行命令:cr_checkpoint pid
,该命令会在当前目录下,生成程序的快照文件。
杀掉查到的pid,在新窗口执行cr_restart context.pid
,即可使程序继续运行
4. 参考博客
参考博客地址:https://www.cnblogs.com/Blue-Moon/p/3865737.html
原文地址:https://www.cnblogs.com/liwanliangblog/p/9220418.html