上一期我們說了如何創建一個簡易的小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,stty,sync,sleep。
在這裏我將拷貝命令的腳本分享給各位:
- #!/bin/bash
- #
- read -t 30 -p "Target System Directory[/mnt/sysroot]: " DEST
- DEST=${DEST:-/mnt/sysroot} #當用戶使用空命令時啓用默認值
- libcp() {
- LIBPATH=${1%/*}
- [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
- [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
- }
- bincp() {
- CMDPATH=${1%/*}
- [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
- [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
- for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do
- libcp $LIB
- done
- }
- read -p "Your command: " CMD
- until [ $CMD == 'q' ]; do
- ! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue
- COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
- bincp $COMMAND
- echo "copy $COMMAND finished."
- read -p "Continue: " CMD
- 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級別下的啓動文件
創建一個測試腳本,驗證服務的開啓關閉
- 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.d和rc6.d目錄下也創建鏈接文件(0,6爲關閉)
ln -sv ../init.d/tsserver K33tserver
此時的系統是不會啓動3級別的,這時我們就需要修改rc.sysinit文件添加終端來實現3級別的真正啓動。
vim etc/inittab
此時因爲使用mingetty,所以需要我們登陸系統,因爲rhel5系統的用戶登陸是基於PAM的,過程過於繁瑣,在這裏我們就簡化了步驟,事先製作了一個login的文件,拷貝login到bin目錄下,並將關於用戶名密碼的文件創建出來:
- grep ^root /etc/passwd | tee /mnt/sysroot/etc/passwd
- grep ^root /etc/shadow | tee /mnt/sysroot/etc/shadow
- grep ^root /etc/group | tee /mnt/sysroot/etc/group
此外用戶登陸系統時,並非是直接匹配到用戶名密碼,而是通過一箇中間件來進行匹配工作,我們這裏使用的是nsswitch,需要將nsswitch依賴的庫文件拷貝過去。
- # cp -d /lib/libnss_files* /mnt/sysroot/lib/
- # cp -d /usr/lib/libnss3.so /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/
並配置好nsswitch.conf 文件
- # cat >> /mnt/sysroot/etc/nsswitch.conf << EOF
- passwd: files
- shadow: files
- group: files
- hosts: files dns
- EOF
接下來就是見證奇蹟的時刻了:
系統做到這裏,一個基本完整的linux系統就已經拼湊完成了,一個具有登錄功能的小liunx系統就已經搭建完成,另外有些童鞋也許會問,爲什麼正常的系統會顯示一些信息給用戶,而這裏怎麼沒有呢?這個系統現在都可以實現什麼功能,可以編輯文檔麼?彆着急,在以後的幾期我會逐一給大家詳細說明。
PS:用綱哥的話說就是:看我的博文要有過日子的心,未完待續 ...