上一期我们说了如何创建一个简易的小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文件添加启动级别

Linux系统瘦身裁剪

创建开机关机脚本vim etc/rc.d/init.d/halt  添加执行权限

Linux系统瘦身裁剪 

halt脚本创建链接文件

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

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

rc.d目录下创建rc脚本,用来执行所有的K*S*文件 给予其执行权限

Linux系统瘦身裁剪

修改在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 K33tserverLinux系统瘦身裁剪

此时的系统是不会启动3级别的,这时我们就需要修改rc.sysinit文件添加终端来实现3级别的真正启动。

vim etc/inittab

Linux系统瘦身裁剪

 

此时因为使用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系统瘦身裁剪

 

系统做到这里,一个基本完整的linux系统就已经拼凑完成了,一个具有登录功能的小liunx系统就已经搭建完成,另外有些童鞋也许会问,为什么正常的系统会显示一些信息给用户,而这里怎么没有呢?这个系统现在都可以实现什么功能,可以编辑文档么?别着急,在以后的几期我会逐一给大家详细说明。

PS:用纲哥的话说就是:看我的博文要有过日子的心,未完待续 ...