Linux系統瘦身裁剪 <續>

   上一期我們說了如何創建一個簡易的小liunx系統,這個系統是不能夠幫助我們處理任務的,甚至說連登陸功能也沒有,那麼這次我們就來設置添加這些能力,讓我們的小linux顯得更加的真實可用。

首先我們啓動上次製作小linux的宿主機,複製一些我們平常使用的命令進來:

 

init,bash,ls,touch,mkdir,rm,mv,cp,cat,mount,umount,vi,vim,chmod,ping,insmod,modprobe,sysctl,rmmod,ifconfig,route,halt,reboot,shutdown,hostname,basename,seq,sttysyncsleep

在這裏我將拷貝命令的腳本分享給各位:
 

  1. #!/bin/bash 
  2. # 
  3. read -t 30 -p "Target System Directory[/mnt/sysroot]: " DEST 
  4. DEST=${DEST:-/mnt/sysroot}  #當用戶使用空命令時啓用默認值
  5.  
  6. libcp() { 
  7.   LIBPATH=${1%/*} 
  8.   [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH 
  9.   [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished." 
  10.  
  11. bincp() { 
  12.   CMDPATH=${1%/*} 
  13.   [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH 
  14.   [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH 
  15.  
  16.   for LIB in  `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do 
  17.     libcp $LIB 
  18.   done 
  19.  
  20. read -p "Your command: " CMD 
  21. until [ $CMD == 'q' ]; do 
  22.    ! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue 
  23.   COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"
  24.   bincp $COMMAND 
  25.   echo "copy $COMMAND finished." 
  26.   read -p "Continue: " CMD 
  27. done  

接下來我們需要修改vim etc/inittab文件添加啓動級別

創建開機關機腳本vim etc/rc.d/init.d/halt  添加執行權限

 

halt腳本創建鏈接文件

rc0.d目錄下ln -sv ../init.d/halt S99halt

rc6.d目錄下 ln -sv ../init.d/halt S99reboot

rc.d目錄下創建rc腳本,用來執行所有的K*S*文件 給予其執行權限

修改在0,6級別下的啓動文件

創建一個測試腳本,驗證服務的開啓關閉


  1. vim  /mnt/sysroot/etc/rc.d/init.d/tsserver 

查看在/mnt/sysroot/var/lock/subsys/目錄下是否真正存在tsserver服務

tserver創建一個rc3.d目錄下的鏈接文件

ln -sv ../init.d/tsserver S66tserver (3爲開啓)

rc0.drc6.d目錄下也創建鏈接文件(0,6爲關閉)

ln -sv ../init.d/tsserver K33tserver

此時的系統是不會啓動3級別的,這時我們就需要修改rc.sysinit文件添加終端來實現3級別的真正啓動。

vim etc/inittab

 

此時因爲使用mingetty,所以需要我們登陸系統,因爲rhel5系統的用戶登陸是基於PAM的,過程過於繁瑣,在這裏我們就簡化了步驟,事先製作了一個login的文件,拷貝loginbin目錄下,並將關於用戶名密碼的文件創建出來:

  1. grep ^root /etc/passwd | tee /mnt/sysroot/etc/passwd 
  2. grep ^root /etc/shadow | tee /mnt/sysroot/etc/shadow 
  3. grep ^root /etc/group | tee /mnt/sysroot/etc/group 

 

此外用戶登陸系統時,並非是直接匹配到用戶名密碼,而是通過一箇中間件來進行匹配工作,我們這裏使用的是nsswitch,需要將nsswitch依賴的庫文件拷貝過去。

  1. # cp -d /lib/libnss_files*  /mnt/sysroot/lib/  
  2. # cp -d /usr/lib/libnss3.so /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/  

並配置好nsswitch.conf 文件

 

  1. # cat >> /mnt/sysroot/etc/nsswitch.conf << EOF 
  2. passwd:     files 
  3. shadow:     files 
  4. group:      files 
  5. hosts:      files dns 
  6. EOF 

 

接下來就是見證奇蹟的時刻了:

 

系統做到這裏,一個基本完整的linux系統就已經拼湊完成了,一個具有登錄功能的小liunx系統就已經搭建完成,另外有些童鞋也許會問,爲什麼正常的系統會顯示一些信息給用戶,而這裏怎麼沒有呢?這個系統現在都可以實現什麼功能,可以編輯文檔麼?彆着急,在以後的幾期我會逐一給大家詳細說明。

PS:用綱哥的話說就是:看我的博文要有過日子的心,未完待續 ...

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章