本文中接“linux系统组成之小型RedHat little linux制作三”
进一步完善此系统,让其实现终端登录信息显示、用户登录、用户命令提示信息等。
1、终端登陆信息:(用户登陆的时候才会显示)
/etc/issue内的内容。是通过终端来进行打印的,里面各式使用转移字符,具体解释间man mingetty。
cp /etc/issue /mnt/sysroot/etc/
编辑isscue
Chris Linux 5.8
Kernel \r on an \m
http://www.chris.com
挂载额外的系统文件/etc/fstab
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
/dev/hda2 / ext3 defaults 1 1
在rc.sysinit内进行挂载配置
#!/bin/bash
#
echo "welecome chris little linux"
mount -n -o remount,rw /
mount -a ---增加一行。
echo "set the hsotname"
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
[ -z $HOSTNAME -o "$HSOTNAME" == '(none)' ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME
echo "insmod pcnet32 mode"
/sbin/insmod /lib/modules/mii.ko
/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的依赖,可以单独利用)
nsswitch:Network Service Switch网络服务转换
是一个协议框架,定义了longin读取相关配置文件的位置:/etc/psaawd /etc/shadow /etc/group
nsswitch的配置文件在/etc/nsswitch.conf,而nsswitch的运行则依赖一些库文件:/lib/libnss**、usr/lib/libnss**
复制库的时候必须保留库的连接:cp -d
cp -d /lib/libnss_files* /mnt/sysroot/lib
cp /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/)
然后复制etc/nsswtich.conf /mnt/sysroot/etc/
vim /mnt/sysroot/etc/nsswtich.conf,保留一些内容
passwd: files
shadow: files
group: files
hosts: files dns
然后复制认证文件:etc/passwd etc/shadow /etc/group
cp /etc/passwd /mnt/sysroot/passwdcp /etc/shadow /mnt/sysroot/shadowcp /etc/group /mnt/sysroot/group
移植相关程序:mingetty usermod passwd
修改etc下的inittab()
...
...
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
下载一个编译好、不依赖PAM认证的login到bin下,并给其执行权限。利用小系统登录测试即可
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."
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
l6:6:wait:/etc/rc.d/rc 6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2