在系统裁剪之一的基础上,给系统添加挂载文件系统、关机重启、设置主机名、运行对应级别的服务脚本、启动终端、装载网卡驱动并启用网络等功能。
挂载文件系统
①重新挂载根文件系统为可读写
vim 编辑/mnt/sysroot/etc/rc.d/rc.sysinit添加以下行
echo "Remount rootfs..."
mount -n -o remount,rw /
②vim 编辑/mnt/etc/fstab
/dev/sdb2 / ext3 defaults 0 0
/dev/sdb1 /boot ext3 defaults 0 0
proc /proc ext3 defaults 0 0
sysfs /sys sysfs defaults 0 0
关机重启功能,运行对应级别的服务脚本
①vim /mnt/sysroot/etc/rc.d/init.d/halt
#!/bin/bash
#
case $0 in
*halt)
COMMAND='/sbin/halt -p';;
*reboot)
COMMAND='/sbin/reboot';;
*)
echo "Only call this script by *reboot OR *halt;"
;;
esac
case $1 in
start)
;;
stop)
;;
*)
echo "Usage:`vasename $0` {start|stop}"
;;
esac
exec $COMMAND
:wq
②在对应运行级别的目录上创建链接
cd /mnt/sysroot/etc/rc.d/rc0.d
ln -sv ../init.d/halt S99halt
cd /mnt/sysroot/etc/rc.d/rc6.d
ln -sv ../init.d/halt S99reboot
③创建编辑/mnt/sysroot/etc/rc.d/rc
vim /mnt/sysroot/etc/rc.d/rc
#!/bin/bash
#
RUNLEVEL=$1
for I in /etc/rc.d/rc$RUNLEVEL.d/K*;do
$I stop
done
for I in /etc/rc.d/rc$RUNLEVEL.d/S*;do
$I start
done
④vim编辑/mnt/sysroot/etc/inittab添加以下行
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
设置主机名
主机名的配置文件在/mnt/sysroot/etc/sysconfig/network中
①vim /mnt/sysroot/etc/sysconfig/network
HOSTNAME=CQY
②vim 编辑/mnt/sysroot/etc/rc.d/rc.sysinit添加以下行
echo "Set the hostname..."
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
[ -z $HOSTNAME -o "$HOSTNAME" == '(none)' ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME
启动终端
①vim编辑/mnt/sysroot/etc/inittab添加以下几行
1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1
2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2
②vim编辑/mnt/sysroot/etc/rc.d/rc.sysroot删掉启动bash的行
#/bin/bash
装载网卡驱动并启用网络
①复制对应的模块 mii.ko pcnet32.ko 用modinfo查看模块的具体路径
cp `modinfo mii | grep -o "/lib.*ko"` /mnt/sysroot/lib/modules/
cp `modinfo pcnet32 | grep -o "/lib.*ko"` /mnt/sysroot/lib/modules/
②在/mnt/sysroot.etc/rc.d/rc.sysinit下装载对应模块
vim编辑/mnt/sysroot.etc/rc.d/rc.sysinit添加以下几行
/sbin/insmod /lib/modules/mii.ko
/sbin/insmod /lib/modules/pcnet32.ko
③设置网卡的配置文件/mnt/sysroot/etc/sysconfig/network-scripts/ifcfg-eth0
vim /mnt/sysroot/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPRTO=static
IPADDR=192.168.0.111
NETMASK=24
GATEWAY=192.168.0.1
ONBOOT=yes
:wq
④创建network的服务脚本
vim /mnt/sysroot/etc/rc.d/init.d/network
#!/bin/bash
. etc/sysconfig/network-scripts/ifcfg-eth0
. etc/rc.d/init.d/functions
NETMASK=24
case $1 in
start)
ifconfig $DEVICE $IPADDR/$NETMASK up
success "network $DEVICE up"
route add default gw $GATEWAY
;;
stop)
ifconfig $DEVICE down
success " network $DEVICE down"
;;
restart)
ifconfig $DEVICE down
ifconfig $DEVICE $IPADDR/$NETMASK up
success " network $DEVICE restart"
;;
status)
ifconfig $DEVICE
;;
*)
echo "usage:network {start|stop|restart|status}"
;;
esac
:wq
⑤在各运行级别下创建对应的链接
cd /mnt/sysroot/etc/rc.d/rc0.d
ln -sv ../init.d/network K90network
cd /mnt/sysroot/etc/rc.d/rc6.d
ln -sv ../init.d/network K90network
cd /mnt/sysroot/etc/rc.d/rc3.d
ln -sv ../init.d/network S09network
其中/mnt/sysrootetc/rc.d/init.d/functions实现显示信息,如下
代码如下:
#!/bin/bash
SCREEN=`stty -F /dev/console size 2> /dev/null`
[ $? -eq 0 ] && COLUMNS=${SCREEN#* } || COLUMNS=80
SPA_COL=$[COLUMNS-12]
RED='\033[31m'
GREEN='\033[32m'
NORMAL='\033[0m'
success(){
echo -n $1
space=$[${SPA_COL}-${#1}]
for I in `seq $space`;do
echo -n ' '
done
echo -e "[ ${GREEN}OK${NORMAL} ]"
}
fail(){
echo -n $1
space=$[${SPA_COL}-${#1}]
for I in `seq $space`;do
echo -n ' '
done
echo -e "[ ${RED}FAIL${NORMAL} ]"
}