Linux系統裁減之,製做一個極度精簡的Linux-3-爲精簡的系統增長網絡功能和關機重啓功能

第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系統測試:

Linux系統裁減-3-有網卡-有水印.jpg

Linux系統裁減-4-有網卡-有水印.jpg


3.2爲精簡的miniLinux系統增長關機重啓功能

1步:首先拷貝haltshutdownreboot命令移植到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

相關文章
相關標籤/搜索