将Linux工具静态迁移到其它Linux系统运行

背景

以从CNEOS拿取快照工具snapshot到公版CENTOS 7运行为例。
将某软件移植到特定系统上运行,在不污染该系统已有数据的前提下,在该系统上实现软件功能扩展。

程序依赖量打包

特点:打包容量小,容易缺工具、运行出错。
在实践过程中,切根后遇到了bash报错、python报错,并非单纯的程序依赖、库依赖问题,而是涉及到环境变量、软件配置等,在实践中该方法未成功将snapshot在其他linux系统上运行起来。

梳理snapshot依赖

使用strace命令跟踪程序依赖,使用ldd命令检测程序库依赖
strace实例:

strace -f /bin/python2.7 -k start -f /etc/python/cert-verification.cfg -DFOREGROUND 2>&1|grep -E "open|execve" |grep -v "No"  |awk -F'"' '{print $2}' |sort|uniq >snapshot.txt

调整高亮二进制程序(/bin/python2.7)及配置路径(/etc/python/cert-verification.cfg),该命令将程序依赖输出到文件snapshot.txt。
在这里插入图片描述
ldd实例:

ldd /bin/python2.7

将输出程序动态库相关依赖项。

打包snapshot依赖

将snapshot相关依赖库、程序整合打包。
还包含snapshot本身依赖,snapshot使用python脚本编写,无法使用strace或ldd跟踪,需要手动梳理。
在这里插入图片描述
打包实例:

cat snapshot.txt |xargs file  |grep -v directory  |awk -F":" '{print $1}' |xargs tar -chvf snapshot.tar

全量打包

特点:占用容量大,功能齐全,运行稳定。视具体系统而定,全量打包占用空间一般不低,在本次实践中未压缩接近600M,压缩货200M左右。

查看根目录/结构

ls -al /

查看磁盘挂载结构

df

打包系统根目录

一般而言:根目录下除去dev、sys、proc、mnt、root、boot、home目录,其他目录直接全拷贝,dev、sys、proc是跟运行的系统强相关的,拷贝到新系统上一般不可用。mnt目录可能会挂载其他磁盘,拷贝可能涉及不重要的数据。
总体原则是将系统中的程序、库及配置等关键数据全部打包,非关键数据排除。

在这里插入图片描述

在其他Linux系统运行snapshot

1、解压快照工具包
将snapshot.tar解压到根目录

tar -zxvf ./snapshot.tar -C /

2、绑定当前系统dev、proc、sys
在这里插入图片描述
3、切换根目录
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值