上接(BASH脚本编程之拷贝系统库文件50)


重新编辑grub为静默模式:

    1.vim /mnt/boot/grub/grub.conf

default=0

timeout=3

title Nick Linux(2.6.18)

kernel /vmlinuz ro root/dev/hda2 quiet

initrd /initrd.gz


如何实现终端提示信息:

    2.复制宿主机文件:

        cp /etc/issue /mnt/sysroot/etc/ 

    3.重新编辑issue信息:

        vim /mnt/sysroot/etc/issue

Nick release 5.9 (Final)

Kernel \r on an \m


http://www.mageedu.com


如何挂载/etc/fstab中定义的其他文件系统:

  • rc.sysinit:挂载/etc/fstab中定义的其它文件系统

    a)怎么判断设备是否挂载:

        awk '{print $1}' /proc/mounts | grep "/dev/hda2"

    b)swap设备不能使用mount直接挂载:

        grep -v "\<swap\>" /etc/fstab | awk '{print $1}'

        grep -E -v "\<swap|proc|sysfs\>" /etc/fstab | awk '{print $1}'

        grep -E -v "\<swap|proc|sysfs\>" /etc/fstab | awk '{print $1}' | while read LINE;do awk '{print $1}' /proc/mounts | grep "^$LINE";done


    4.cd /mnt/sysroot/

    5.vim etc/rc.d/rc.sysinit修改添加:

#!/bin/bash

#

. /etc/rc.d/init.d/functions


echo -e "\tWelcome to\033[34mNick Team\033[0m Linux."


echo "Remount rootfs ..."

mount -n -o remount,rw /

[ $? -eq 0 ] && success "Remount rootfs" || failure "Remount rootfs"


mount -a

[ $? -eq 0 ] && success "Mount others filesystem" || failure "Mount others filesystem"


echo "Set the hostname ..."

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

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

/bin/hostname $HOSTNAME

[ $? -eq 0 ] && success "Set the hostname" || failure "Set the hostname"


echo "Initialization network device ..."

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

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

[ $? -eq 0 ] && success "Initialization network device" || failure "Initialization network device"


ifconfig lo 127.0.0.1/8

[ $? -eq 0 ] && success "Activating loopback network device" || failure "Activating loopback network device"


如何设定内核参数/etc/sysctl.conf:

    6.运行binary.sh移植sysctl命令;

    7.创建/etc/sysctl.conf配置文件:

        cd /mnt/sysroot/

        vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

    8.开机自动生效:

        vim /etc/rc.d/rc.sysinit最后行添加:

sysctl -p &> /dev/null

[ &? -eq 0 ] && success "Set kernel parameter" || failure "Set kernel parameter"

    9.启动新主机,测试:

        cat /proc/sys/net/ipv4/ip_forward


如何实现用户运行:

  • PAM:Pluggable Authentication Module(可插入式配置文件);

  • RHEL5 通过/etc/pam.d/*来实现用户的登录、认证等等;

  • 绕过PAM,RHEL的登录显示通过/bin/login打印显示:

  • login程序如何实现用户登录和认证:

    a)nsswitch(作为login的中间层):Network Service Switch

    b)框架:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow

        库:libnss_file.so,libnss_nis.so,libnsss_ldap.so ...

        配置文件:/etc/nsswitch.conf

        库文件:/lib/libnss*;/usr/lib/libnss*


    10.复制用户验证库文件到/lib:

        cp -d /lib/libnss_files* /mnt/sysroot/lib/  --->-d选项,保留文件链接

        ls -l /mnt/sysroot/lib/

    11.复制用户验证库文件到/usr/lib:

        cp -d /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/

        cp -d /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/

        ls -l /mnt/sysroot/usr/lib/

    12、编辑配置文件:

        cp /etc/nsswitch.conf /mnt/sysroot/etc/

        vim /mnt/sysroot/etc/nsswitch.conf

passwd:files

shadow:files

group:files

hosts:filesdns

    13、创建用户:

        添加hadoop用户

        grep -E "^(root|hadoop)\>" /etc/passwd > /mnt/sysroot/etc/passwd

        grep -E "^(root|hadoop)\>" /etc/shadow > /mnt/sysroot/etc/shadow

        grep -E "^(root|hadoop)\>" /etc/group > /mnt/sysroot/etc/group

    14、移植mingetty,passwd,useradd,userdel,usermod,groupadd命令;

    15、修改inittab文件:

        cd /mnt/sysroot/

        vim etc/inittab修改:

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

    16.下载login到/mnt/sysroot/bin

    17.添加执行权限:chmod +x /mnt/sysroot/bin/login 

    18.启动新主机,init 3 看是否提示用户登录;


创建用户配置文件:

    19.创建用户命令提示符配置文件:

        cd /mnt/sysroot/

        vim root/.bash_profile

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

export PS1


单用户模式:

    20.修改root目录权限:

        cd /mnt/sysroot/

        chmod -R og=--- root/

    21.定义inittab文件的1级别:

        vim etc/inittab添加一行:

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

    22.创建1级别服务链接:

        cd /mnt/sysroot/etc/rc.d 

        mkdir rc1.d 

        cd rc1.d 

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

        ln -sv ../init.d/tserver K33tserver

    23.创建单用户singer文件:

        vim etc/rc.d/init.d/single

#!/bin/bash

#

case $1 in

start)

 ;;

*)

        echo "Usage:Single start"

        ;;

esac


exec /sbin/init S

添加执行权限:chmod +x etc/rc.d/init.d/single

    24、创建单用户服务链接:

        cd rc1.d 

        ln -sv ../init.d/single S98single

    25、开始测试新主机的单用户模式:

        init 6 

        e

        选择kernel /vmlinuz ro root/dev/hda2 quiet输入e

        输入1--> 回车

        b键开始引导.