Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件相关的知识,希望对你有一定的参考价值。

第2章 用脚本实现自动拷贝命令和依赖库文件

        这篇文章主要是对我上一篇博文http://blog.51cto.com/linuxprince/2045703加以完善的,前一篇文章中拷贝命令和依赖库文件的过程是完全手工方式的,显得特别LOW,这章把该过程完善一下,用脚本方式实现。

2.1命令具体实现方法

创建脚本文件bincp.sh输入一下内容:

#!/bin/bash

#

DESPATH=/mnt/sysroot

libcp() {

  LIBPATH=${1%/*}

  [ ! -d $LIBPATH ] && mkdir -p $LIBPATH

  [ ! -e $DESPATH$1 ] && cp $1 $DESPATH$LIBPATH

}

 

bincp() {

  BINPATH=${1%/*}

  [ ! -d $BINPATH ] && mkdir -p $DESPATH$BINPATH

  [ ! -e $DESPATH$1 ] && cp $1 $DESPATH$BINPATH

 

  for LIB in `ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`;

  do libcp $LIB;

  done

}

bincp /bin/ls

 

执行一下看看拷贝/bin/ls命令时,都做了哪些操作:

[[email protected] ~]# bash -x bincp.sh

+ DESPATH=/mnt/sysroot

+ bincp /bin/ls

+ BINPATH=/bin

+ '[' '!' -d /bin ']'

+ '[' '!' -e /mnt/sysroot/bin/ls ']'

++ ldd /bin/ls

++ grep -o '/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}'

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/librt.so.1

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/librt.so.1 ']'

+ cp /lib64/librt.so.1 /mnt/sysroot/lib64

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libacl.so.1

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libacl.so.1 ']'

+ cp /lib64/libacl.so.1 /mnt/sysroot/lib64

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libselinux.so.1

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libselinux.so.1 ']'

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libc.so.6

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libc.so.6 ']'

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libpthread.so.0

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libpthread.so.0 ']'

+ cp /lib64/libpthread.so.0 /mnt/sysroot/lib64

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/ld-linux-x86-64.so.2

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/ld-linux-x86-64.so.2 ']'

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libattr.so.1

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libattr.so.1 ']'

+ cp /lib64/libattr.so.1 /mnt/sysroot/lib64

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libdl.so.2

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libdl.so.2 ']'

+ for LIB in '`ldd $1 | grep -o "/lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`'

+ libcp /lib64/libsepol.so.1

+ LIBPATH=/lib64

+ '[' '!' -d /lib64 ']'

+ '[' '!' -e /mnt/sysroot/lib64/libsepol.so.1 ']'

[[email protected] ~]# sync      ?把修改立刻同步到磁盘

注意:此时精简的Linux系统虚拟机不能是启动或挂起状态,必须处于关机状态。

打开精简的Linux系统马上可以看到结果,如下图:

技术分享图片


以上是关于Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统裁减之,制作一个极度精简的Linux-5-重新编译login去除对pam模块的依赖

Linux系统裁减之,制作一个极度精简的Linux-4-为精简的Linux 系统增加用户登录功能

Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件

极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布

linux内核编译及系统裁减

制作busybox完成自制Linux系统及远程登录和nginx安装测试