[这个贴子最后由jxbcpp在 2002/12/20 02:36pm 编辑]
#!/bin/sh
#文件名:install.sh
#
#作者:jxbcppQQ:589210
#测试环境:solaris 8 for sparc
#使用说明:这个脚本是用于简化操作系统的安装。原理是先安装一个操作系统,然
# 后用ufsdump把这个操作系统做成dump文件后用compress压缩做成母盘,等
# 到用户现场安装时只要从solaris启动盘单用户模式启动(boot
# cdrom -s),用format把待安装的系统盘分区,并newfs并mount待安装的系
# 统盘的swap分区,用于临时存放母盘的dump文件;然后配置这台机器
# 的IP地址,从某台PC把母盘的dump文件和本脚本上传到临时分区中,
# 然后执行此脚本就可以完成系统的安装。
#
#几个注意点:1、待安装的系统盘swap用于临时存放空间,必须挂接在/a目录
# 2、制作母盘的的要求:所有文件系统不单独分区,放在同一个分区中
# 3、母盘dump文件压缩后的文件名应是:root.dump.Z
# 4、制作母盘的硬件环境可以与待安装的机器的硬件环境不相同,
#甚至可以是不同机型
#
#例子:比如我在一台ultra 5上安装了solaris 8,分区表为:
#PartitionMount Directory
# 0/
# 1swap
# 7/export/home
#我打上了最新的patch,然后制作母盘:
##cd /export/home;ufsdump 0f root.dump / ;compress root.dump
#(压缩的原因是root.dump文件太大,有1G多,压缩后只有不到600M)
#
#过了几天,我需要去用户那里安装2台V880,我只需要把solaris 8的启动光盘放进v880
#光驱中,然后:
#ok boot cdrom -s
#...
#...
## format
#给待安装盘分区,比如待安装硬盘是c1t0d0,分区表是:
#PartitionMount Directory
# 0/
# 1swap
# 3/var
# 4/usr
# 7/export/home
#
#
## echo y|newfs /dev/rdsk/c1t0d0s1;mount /dev/dsk/c1t0d0s1 /a
## ifconfig eri0 192.168.1.24 netmask 255.255.255.0 up
#从PC上把root.dump.Z和此脚本上传到/a目录下
## cd /a;ftp 192.168.1.1
## chmod +x install.sh;
#V880的要求配置的主机名是www;IP地址是172.16.23.11;掩码是255.255.255.0;执行:
## ./install.sh c1t0d0 www 172.16.23.11 255.255.255.0 172.16.23.0
#安装提示回答2个问题后就可以等待系统安装结束,大约需要40分钟。
#
#第一次启动新安装的系统时会有报错:
#savecore: open("/dev/dsk/c0t0d0s1"
: No such device or address
#dumpadm: cannot use /dev/dsk/c0t0d0s1 as dump device: 无此设备或地址
#再重新启动一次后就正常了,系统自动更改了配置文件
if test $# -lt 5
then
echo "\n\tUsage :$0 rootdisk hostname IP netmask netaddress"
echo "\tExample: $0 c1t0d0 www 172.16.23.12 255.255.255.0 172.16.23.0"
exit
fi
rootdisk=$1
HostName=$2
IP=$3
Netmask=$4
Netaddr=$5
TERM=vt100;export TERM
hostname $HostName
if test $? -ne 0
then
echo "\nhostname is invalid."
exit
fi
NetIf=`ifconfig -a|grep -v LOOPBACK|grep MULTI|awk -F":" '{print $1}'|grep 0|head -1`
ifconfig $NetIf:11 plumb
ifconfig $NetIf:11 $IP netmask $Netmask
Err=$?
ifconfig $NetIf:11 unplumb
if test $Err -ne 0
then
echo "\nIP or netmask is invalid."
exit
fi
echo "\nrootdisk=${rootdisk}\nhostname=${HostName}\nIP=${IP}\nnetmask=${Netmask}\nnetaddress=${Netaddr}\n"
answer=`/usr/bin/ckyorn -d n -p "Are These correct?[Y/N]"`
if [ ! $answer = Y -a ! $answer = y ]
then
exit
fi
echo "# Mounted_on\tSlice_number" >slicetable
echo "/\t\t0">>slicetable
echo "swap\t\t1">>slicetable
echo "/var\t\t3">>slicetable
echo "/usr\t\t4">>slicetable
echo "Please edit slice mount table."
sleep 1
vi slicetable
more slicetable
answer=`/usr/bin/ckyorn -d n -p "Are you sure to continue?[Y/N]"`
if [ ! $answer = Y -a ! $answer = y ]
then
exit
fi
grep -v "#" slicetable >/tmp/slicetable.new
rootslice=0
cd /a
echo "#device\t\tdevice\t\tmount\t\tFS\tfsck\tmount\tmount">vfstab