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