Linux01-BASH腳本編程之系統裁剪51

上接(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鍵開始引導.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章