linux系统组成之小型RedHat little linux制作四
本文中接“linux系统组成之小型RedHat little linux制作三”进一步完善此系统,让其实现终端登录信息显示、用户登录、用户命令提示信息等。
1、终端登陆信息:(用户登陆的时候才会显示)
[*] /etc/issue内的内容。是通过终端来进行打印的,里面各式使用转移字符,具体解释间man mingetty。
[*] cp /etc/issue /mnt/sysroot/etc/
[*] 编辑isscue
[*] ChrisLinux 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/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认证的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
页:
[1]