本文中接“linux系统组成之小型RedHat little linux制作三”

进一步完善此系统,让其实现终端登录信息显示、用户登录、用户命令提示信息等。

1、终端登陆信息:(用户登陆的时候才会显示)

 
  1. /etc/issue内的内容。是通过终端来进行打印的,里面各式使用转移字符,具体解释间man mingetty。  

  2. cp /etc/issue /mnt/sysroot/etc/  

  3. 编辑isscue  

  4. Chris  Linux   5.8  

  5. Kernel \r on an \m  

  6. http://www.chris.com  

挂载额外的系统文件/etc/fstab

 
  1. sysfs                   /sys                    sysfs   defaults        0 0  

  2. proc                    /proc                   proc    defaults        0 0  

  3. /dev/hda1               /boot                   ext3    defaults        0 0  

  4. /dev/hda2               /                       ext3    defaults        1 1  

  5. 在rc.sysinit内进行挂载配置  

  6. #!/bin/bash  

  7. #  

  8. echo "welecome chris little linux"  

  9. mount -n -o remount,rw /  

  10. mount -a  ---增加一行。  

  11. echo "set the hsotname"  

  12. [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network  

  13. [ -z $HOSTNAME -o "$HSOTNAME" == '(none)' ] && HOSTNAME=localhost

  14. /bin/hostname $HOSTNAME  

  15. echo "insmod pcnet32 mode"  

  16. /sbin/insmod /lib/modules/mii.ko  

  17. /sbin/insmod /lib/modules/pcnet32.ko  

内核参数配置/etc/sysctl.conf(sysctl -p立即生效)例如开启网卡转换功能(移植sysctl命令)

net.ipv4.ip_forward = 1

然后在rc.sysinit内增加一行如下

systcl -p &> /dev/null

[ $? -eq 0 ] && success "set ketnel parater" || failure "fail set kernel"

2、用户认证:

    绕过PAM的用户登陆DIY:(系统上的login的编译是依赖于PAM的,在ftp的根目录下的login shell,去掉了对PAM的依赖,可以单独利用)

nsswitchNetwork Service Switch网络服务转换

是一个协议框架,定义了longin读取相关配置文件的位置:/etc/psaawd /etc/shadow /etc/group

nsswitch的配置文件在/etc/nsswitch.conf,而nsswitch的运行则依赖一些库文件:/lib/libnss**usr/lib/libnss**

复制库的时候必须保留库的连接:cp -d

 
  1. cp -d /lib/libnss_files*  /mnt/sysroot/lib  

  2. cp /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/)  

然后复制etc/nsswtich.conf /mnt/sysroot/etc/

 
  1. vim /mnt/sysroot/etc/nsswtich.conf,保留一些内容

  2. passwd:     files  

  3. shadow:     files  

  4. group:      files  

  5. hosts:      files dns  

然后复制认证文件:etc/passwd etc/shadow /etc/group

cp /etc/passwd /mnt/sysroot/passwd

cp /etc/shadow /mnt/sysroot/shadow
cp /etc/group /mnt/sysroot/group

移植相关程序:mingetty usermod passwd

修改etc下的inittab()

...

...

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

下载一个编译好、不依赖PAM认证的loginbin下,并给其执行权限。利用小系统登录测试即可

2、 PS1环境变量定义用户命令提示信息:cd/root下创建一个.bash_profile文件并在内增加:

            PS1='[\u@\h \w]\$'

            export PS1

u:用户名 h主机名W工作目录的基名w工作目录的全名)

3进入维护的1级别的设置:

     编辑inittab文件

编辑rc.d内的目录,新建rc1.d目录

设置必须的连接文件

ln -sv ../init.d/network K90network

进入单用户模式必须向init传递一个S参数,参照原系统上的/etc/init.d/singel

Vim /mnt/sysroot/etc/init.d/singel

#!/bin/bash

#

if [ "$1" != "start" ]; then

  exit 0

fi

exec init -t1 S

增加执行权限chmod +x singel

添加必需的连接

cd rc.d

cd rc1.d

ln -sv ../init.d/singe ./S98singel

# this looks nicer

# Now go to the single user level.

至此DIY小系统完毕,实现了基本的功能和网络。

cd /mnt/sysroot/etc/rc.d/rc1.d

# this looks nicer

[ -x /usr/bin/clear ] && /usr/bin/clear

# Now go to the single user level.

echo $"Telling INIT to go to single user mode."

 
  1. id:3:initdefault:  

  2. si::sysinit:/etc/rc.d/rc.sysinit    l0:0:wait:/etc/rc.d/rc 0  

  3. l1:1:wait:/etc/rc.d/rc 1  

  4. l3:3:wait:/etc/rc.d/rc 3  

  5. l6:6:wait:/etc/rc.d/rc 6  

  6. 1:2345:respawn:/sbin/mingetty tty1  

  7. 2:2345:respawn:/sbin/mingetty tty2