上一期我们说了如何创建一个简易的小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:用纲哥的话说就是:看我的博文要有过日子的心,未完待续 ...