第3章 为精简的Linux系统增长网络功能和开关重启功能linux
在阅读这篇博文以前,建议先阅读个人上两篇博文,并且最好按顺序阅读:(否则可能会以为我写得不知所云,呵呵!)
web
第1篇:Linux系统裁减之,制做一个极度精简的Linux-1 http://www.javashuo.com/article/p-tbxqdmtb-m.htmlbash
第2篇:Linux系统裁减之,制做一个极度精简的Linux-2-用脚本实现自动拷贝命令和依赖库文件 http://www.javashuo.com/article/p-kzglxkeb-bk.html网络
3.1 为精简的miniLinux系统增长网络功能app
首先完善一下自动拷贝命令和依赖库文件的脚本,完善后的完整程序以下:
ide
[root@CentOS5lsrv01 ~]# cat bincp.sh测试
#!/bin/bashspa
#orm
DESPATH=/mnt/sysrootblog
libcp() {
LIBPATH=${1%/*}
[ ! -d $DESPATH$LIBPATH ] && mkdir -p $DESPATH$LIBPATH
[ ! -e $DESPATH$1 ] && cp $1 $DESPATH$LIBPATH && echo "Copy lib file $1 Finished."
}
bincp() {
BINPATH=${1%/*}
[ ! -d $DESPATH$BINPATH ] && mkdir -p $DESPATH$BINPATH
[ ! -e $DESPATH$1 ] && cp $1 $DESPATH$BINPATH
DEPLIBS=`ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`
for LIB in $DEPLIBS;
do libcp $LIB;
done
}
read -p "Input command what you want to copy to miniLinux:" CMD
until [ $CMD == 'q' ];do
! which $CMD &> /dev/null && echo "Your input Command is not found." && read -p "Input agent:" CMD && continue
COMMAND=`which $CMD | grep -v "^alias" | sed 's/\t//g'`
bincp $COMMAND
echo "Copy $COMMAND Finished."
read -p "Continue input command to miniLinux:" CMD
done
程序添加了与用户交互功能,移植命令就更方便啦!!^_^
如今拷贝ifconfig和ping命令到miniLinux中:
[root@CentOS5lsrv01 ~]# ./bincp.sh
Input command what you want to copy to miniLinux:ifconfig
Copy /sbin/ifconfig Finished.
Continue input command to miniLinux:ping
Copy /bin/ping Finished.
Continue input command to miniLinux:q
[root@CentOS5lsrv01 ~]#
为miniLinux系统创建驱动模块存放目录:先不要按照红帽官方的目录结构来创建
[root@CentOS5lsrv01 ~]# mkdir /mnt/sysroot/lib/modules/ <--miniLinux系统的驱动模块存放路径
[root@CentOS5lsrv01 ~]# modinfo e1000 | grep filename
filename: /lib/modules/2.6.18-398.el5/kernel/drivers/net/e1000/e1000.ko
提示:在个人环境中,Linux系统支持的虚拟机网卡驱动模块名是“e1000”
命令解析:
modinfo:显示系统内核模块详细信息(驱动模块文件路径、别名、模块签名等)
拷贝网卡驱动模块给miniLinux系统:
[root@CentOS5lsrv01 ~]# cp /lib/modules/2.6.18-398.el5/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules/
修改miniLinux系统下的rc.sysinit文件,按如下内容修改:在系统初始化过程当中直接加载网卡模块和设置IP地址,并启用网卡
[root@CentOS5lsrv01 ~]# cat /mnt/sysroot/etc/rc.d/rc.sysinit
#!/bin/bash
#
echo -e "\tWelcome to \033[31mMy team \033[0m Linux."
insmod /lib/modules/e1000.ko
ifconfig eth0 192.168.0.91 netmask 255.255.255.0
ifconfig eth0 up
/bin/bash
修改完立刻同步到磁盘:
[root@CentOS5lsrv01 ~]# sync
启动miniLinux系统测试:
3.2为精简的miniLinux系统增长关机重启功能
第1步:首先拷贝halt、shutdown、reboot命令移植到miniLinux系统:
[root@CentOS5lsrv01 ~]# ./bincp.sh
Input command what you want to copy to miniLinux:halt
Copy /sbin/halt Finished.
Continue input command to miniLinux:shutdown
Copy /sbin/shutdown Finished.
Continue input command to miniLinux:reboot
Copy /sbin/reboot Finished.
Continue input command to miniLinux:q
[root@CentOS5lsrv01 ~]#
第2步:修改小系统的inittab文件,内容以下:
[root@CentOS5lsrv01 ~]# vi /mnt/sysroot/etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc.halt
l6:6:wait:/etc/rc.d/rc.reboot
解析:
l0:0:wait:/etc/rc.d/rc.halt <--表示只要进入0级别,就执行/etc/rc.d/rc.halt脚本
l6:6:wait:/etc/rc.d/rc.reboot <--表示只要进入6级别,就执行/etc/rc.d/rc.reboot脚本
第3步:编写级别“0”和级别“6”下的关机和重启脚本:
[root@CentOS5lsrv01 ~]# vi /mnt/sysroot/etc/rc.d/rc.halt
#!/bin/bash
#
sync
sleep 2 <--这行表示停顿2秒,其实能够省略
sync
exec /sbin/halt –p
[root@CentOS5lsrv01 ~]# vi /mnt/sysroot/etc/rc.d/rc.reboot
#!/bin/bash
#
sync
sleep 2 <--这行也是能够省略
sync
exec /sbin/reboot
记得要给脚本执行权限:
[root@CentOS5lsrv01 ~]# chmod +x /mnt/sysroot/etc/rc.d/rc.halt
[root@CentOS5lsrv01 ~]# chmod +x /mnt/sysroot/etc/rc.d/rc.reboot
提示:这里我并无按照红帽官方的目录规范存放脚本,特地这样作的目的就是为 了理解一个Linux系统的核心部分须要哪些组件。
到此,miniLinux系统已经具备最基本的网络功能和关机和重启功能了。算是一个最基本的正常的系统啦。
愈来愈接近一个真实可用的系统啦!!^_^
欢迎继续关注个人后续博文:
第4篇:Linux系统裁减之,制做一个极度精简的Linux-4-使用mingetty绕开/bin/login http://www.javashuo.com/article/p-uchibdlc-m.html
第5篇:Linux系统裁减之,制做一个极度精简的Linux-5-从新编译login去除对pam模块的依赖 https://blog.51cto.com/linuxprince/2054153