这个脚本可能对批量安装solaris操作系统有用

发表于:2007-06-09来源:作者:点击数: 标签:
[这个贴子最后由jxbcpp在2002/12/2002:36pm编辑] #!/bin/sh #文件名:install.sh # #作者:jxbcppQQ:589210 #测试环境:solaris8forsparc #使用说明:这个脚本是用于简化操作系统的安装。原理是先安装一个操作系统,然 #后用ufsdump把这个操作系统做成dump文

[这个贴子最后由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
echo "#to mount\tto fsck\t\tpoint\t\ttype\tpass\tat boot\toptions">>vfstab
echo "#">>vfstab
echo "#/dev/dsk/c1d0s2\t/dev/rdsk/c1d0s2\t/usr\tufs\t1\tyes\t-">>vfstab
echo "fd\t-\t/dev/fd\tfd\t-\tno\t-">>vfstab
echo "/proc\t-\t/proc\tproc\t-\tno\t-">>vfstab
echo "/dev/dsk/c0t0d0s1\t-\t-\tswap\t-\tno\t-">>vfstab
echo "/dev/dsk/c0t0d0s0\t/dev/rdsk/c0t0d0s0\t/\tufs\t1\tno\t-">>vfstab
echo "swap\t-\t/tmp\ttmpfs\t-\tyes\t-">>vfstab


cp vfstab vfstab.new
while read AA BB
do
if [ ! $AA = swap ]
then
echo y|newfs /dev/rdsk/${rootdisk}s${BB}
if test $? -ne 0 
then
echo "Error when newfsing /dev/rdsk/${rootdisk}s${BB}"
exit
fi

mkdir /tmp/${BB}
mount /dev/dsk/${rootdisk}s${BB} /tmp/${BB}
if test $? -ne 0
then
        echo "Error when mounting /dev/rdsk/${rootdisk}s${BB}"
exit
fi

if [ ! $AA = /var -a ! $AA = /usr ]
then
echo "/dev/dsk/${rootdisk}s${BB}\t/dev/rdsk/${rootdisk}s${BB}\t${AA}\tufs\t1\tyes\t-">>vfstab.new
else
echo "/dev/dsk/${rootdisk}s${BB}\t/dev/rdsk/${rootdisk}s${BB}\t${AA}\tufs\t1\tno\t-">>vfstab.new
fi
else
sed "s/c0t0d0s1/${rootdisk}s${BB}/g"<vfstab >vfstab.new
fi

if [ $AA = / ]
then
rootslice=$BB
sed "s/c0t0d0s0/${rootdisk}s${BB}/g" <vfstab >vfstab.new
fi

cp vfstab.new vfstab

done < /tmp/slicetable.new

umount /tmp/${rootslice}
mount  /dev/dsk/${rootdisk}s${rootslice} /mnt
if test $? -ne 0
then
        echo "Error when mounting /dev/rdsk/${rootdisk}s${rootslice}"
        exit
fi

cd /a
echo "\n\nuncompressing data...\n"
uncompress /a/root.dump.Z
echo "\n\nrestoring data...\n"
cd /mnt;ufsrestore -rf /a/root.dump
if test $? -ne 0
then
        echo "Error when dumping data."
        exit
fi

rm /mnt/restore*
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/${rootdisk}s${rootslice}

while read AA BB
do
if [ ! $AA = / -a ! $AA = swap ]
then

if [ -d /mnt/$AA ]
then
echo "\n moving slice $AA"
cd /mnt/$AA; find . -print|cpio -pduVm /tmp/${BB}
cd /;rm -r /mnt/$AA
fi
mkdir -p /mnt/$AA
cd /;umount /tmp/${BB}
mount /dev/dsk/${rootdisk}s${BB} /mnt/$AA
fi
done < /tmp/slicetable.new
cp /a/vfstab.new /mnt/etc/vfstab
mv /mnt/etc/hostname.*0 /mnt/etc/hostname.${NetIf}

drvconfig -r /mnt -p /mnt/etc/path_to_inst
cd /devices
find . -print|cpio -pduVm /mnt/devices
rm -r /mnt/dsk
rm -r /mnt/rdsk
cd /dev
tar cvf - dsk|(cd /mnt/dev;tar xvf 
tar cvf - rdsk|(cd /mnt/dev;tar xvf 
disks -r /mnt
rm -r /mnt/pci@*
rm -r /mnt/memory* 

OldHostname=`cat /mnt/etc/nodename`
OldIP=`grep $OldHostname /mnt/etc/hosts|awk '{print $1}'`

sed "s/${OldHostname}/${HostName}/" </mnt/etc/hosts >/tmp/hosts.new
sed "s/${OldIP}/${IP}/" </tmp/hosts.new >/tmp/hosts.new1
cp /tmp/hosts.new1 /mnt/etc/hosts

sed "s/${OldHostname}/${HostName}/" </mnt/etc/hostname.${NetIf} >/tmp/hostname.new
cp /tmp/hostname.new /mnt/etc/hostname.${NetIf}

echo "${Netaddr}\t${Netmask}">>/mnt/etc/netmasks

sed "s/${OldHostname}/${HostName}/" </mnt/etc/nodename >/tmp/nodename.new
cp /tmp/nodename.new /mnt/etc/nodename

sed "s/${OldHostname}/${HostName}/g" </mnt/etc/net/ticlts/hosts >/tmp/hosts.new
cp /tmp/hosts.new /mnt/etc/net/ticlts/hosts
cp /tmp/hosts.new /mnt/etc/net/ticots/hosts
cp /tmp/hosts.new /mnt/etc/net/ticotsord/hosts

rm /mnt/dev/fb*
rm /mnt/dev/fb0/*
touch /mnt/reconfigure

echo "\t\t**********************************************"
echo "\t\t\tFinished!Please reboot system."
echo "\t\t**********************************************"


 sunmarmot 回复于:2002-11-26 22:39:40
高啊!!!!!!!!~~~~~~~~~~~~~~~~~~~

 yys 回复于:2002-11-26 22:50:45
好!

 sunmarmot 回复于:2002-11-26 23:15:40
偶不清楚的地方刚刚问完,贴出来

主要是分区上的,例如:偶用u5的机器做了盘,一个硬盘

偶装的是V480,加了2个硬盘,

该怎么用,特别是分区

你V480加了2盘,可我这个脚本只要一个系统盘就成了,跟别的盘没关系

就是说可以自动安装系统盘并分区,别的盘日后再挂。不知道偶的理解对否??


 laoxia 回复于:2002-11-26 23:46:10
很好,问题请教:

ifconfig $NetIf:11 plumb 

为什么要“ :11” ? 

先谢了。

 sunmarmot 回复于:2002-11-26 23:50:07
明天再问吧!!他跑路了

 laoxia 回复于:2002-11-26 23:52:40
探讨一下,JUMPSTART 是否更适于此用途?所有配置都在SERVER
上控制,更集成化

 sunmarmot 回复于:2002-11-27 00:00:38
偶是这么想的
1.如果有个大型的网络,中间有很多SUN的机器,并且每年要做固定的维护,有相当一部分需要重装系统,这时用jumpstat也许会方便很多。
2.如果要常常出差,并有时需要批量装N台机器的话,带几张光盘效率会比较高,而且中间不需要干预,速度也会快一些

 phoenixli 回复于:2002-11-27 00:13:08
咦,你什么时候也这么厉害了?

 laoxia 回复于:2002-11-27 00:16:49

你这小耗子很聪明啊,做我的鼠标吧,我家有一花猫陪你玩


 sunmarmot 回复于:2002-11-27 00:53:24
土八路不是!!??
   告诉你,偶可...............是..........吃.....猫..鼠~~~~~~~~~~` 

    偶的solaris虽然很菜,可是偶对烹猫的88种做法熟烂于心,对于你家的花猫,偶个人的见解:
    可能比较老,所以做一猫三吃比较适宜......楼上认为如何???

      
       

 laoxia 回复于:2002-11-27 01:03:49
[quote][b]下面引用由[u]phoenixli[/u]在 [i]2002/11/27 00:13am[/i] 发表的内容:[/b]
咦,你什么时候也这么厉害了?
[/quote]
子曰:鼠别三日,当刮目相看

 sunmarmot 回复于:2002-11-27 01:13:43
又曰:不是偶不明白,这世界变化快~~~~~~!!!!  

 段誉 回复于:2002-11-27 01:27:13
很好的想法啊,pfpf!
能否有定制好的JumpStart的配置文件,完全自动安装的那种。我感觉需要探讨一下这个问题。

 jxbcpp 回复于:2002-11-27 09:52:38
做这些脚本我是为了简化自己的工作,没必要在这些简单劳动上花费太多的时间。通常安装SOLARIS 8要1个小时,打补丁需要1个小时,中间还需要人为的干预。用我这个脚本只要30分钟左右,可以节约不少时间。
JUMPSTART我平时用不到,也没好好研究过,所以JUMPSTART的配置文件我力所不能及了,SORRY。

 jxbcpp 回复于:2002-11-27 09:53:43
[quote][b]下面引用由[u]laoxia[/u]在 [i]2002/11/26 11:46pm[/i] 发表的内容:[/b]
很好,问题请教:
ifconfig $NetIf:11 plumb 
为什么要“ :11” ? 
先谢了。
[/quote]

其实用 :1 或者 :2都无所谓,主要是虚拟一个网卡测试输入的IP地址是否合法


 sunmarmot 回复于:2002-11-27 10:04:13
晚上睡过一觉后最后的问题解决,最后发现没有任何问题了
最后可以这么干了
用一台U60的机器做好
cd /export/home;ufsdump 0f root.dump / ;compress root.dump
做成一个完整的压缩文件,刻成一个Solaris的安装光盘。这样出门安装N台机器就可以只用2张光盘,soft1,和这张安装光盘。用笔记本上建立的FTP,装的时候就可以搞定。

最后的问题是,如果偶在安装时候把gclearcase/" target="_blank" >cc,gzip,netscape,apache,oracle安装上去做母盘然后作成压缩文件是否可以用。

   偶的目的是,如果偶要以最快的速度恢复一批安装有应用的机器,不知道楼主这么干过没??


 jxbcpp 回复于:2002-11-27 10:22:38
[quote][b]下面引用由[u]sunmarmot[/u]在 [i]2002/11/27 10:04am[/i] 发表的内容:[/b]
晚上睡过一觉后最后的问题解决,最后发现没有任何问题了
最后可以这么干了
用一台U60的机器做好
cd /export/home;ufsdump 0f root.dump / ;compress root.dump
...
[/quote]

没有任何问题,把你所有需要安装的软件都安装到/分区,然后制作成母盘就可以了


 sunmarmot 回复于:2002-11-27 10:34:15
提问:举个例子来说,偶要安装个gzip,是不是用默认装到/usr/locle/bin就可以了,

oracle默认安装到/opt/oracle/app/ora8.1.7下面就可以了??

回答:是的
不过不要单独分区,都要安装在/分区上,目录无所谓

现在没问题了~~~~~~~~``          
        
        

 coolbid 回复于:2002-11-27 13:06:06
jumpstart精华区有的,



 sunmarmot 回复于:2002-11-27 13:20:55
偶实验ing 

   nnd正常装好慢啊!!!晚上偶给出结果

 fantasia 回复于:2002-11-27 13:23:57
那偶就等着看结果了.
hehe!
好用的话就省了偶好多事了。

 sunmarmot 回复于:2002-11-27 13:26:26
懒~~~~~~~人!!!!!为什么受伤的总是偶

 段誉 回复于:2002-11-27 16:38:04
那你的胡子剃了,估计会少受一些伤,:)

 萧筱筱 回复于:2002-11-27 16:46:26
我有一个疑问,把应用都装在/分区下,特别是var很容易长的,把/撑满了怎么办?

 mmmmn 回复于:2002-11-27 16:49:45
满了再想办法转啊,嘻嘻

 ericlien 回复于:2002-11-27 17:04:23
## 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目录下
======================================================
請問
那是不是要將SWAP的分區先設定成大於root.dump.Z的SIZE,以便將檔案COPY至/a
若是我要將裝的機器swap小於root.dump.Z的SIZE,該怎麼辦

 jxbcpp 回复于:2002-11-27 19:12:39
[quote][b]下面引用由[u]萧筱筱[/u]在 [i]2002/11/27 04:46pm[/i] 发表的内容:[/b]
我有一个疑问,把应用都装在/分区下,特别是var很容易长的,把/撑满了怎么办?
[/quote]

只是做母盘的时候把所有目录都放在/下
到开始使用的时候就可以自己定义分区了,比如:
#       Partition       Mount Directory
#           0                   /
#           1                   swap
#           3                   /var
#           4                   /usr
#           7                   /export/home

 jxbcpp 回复于:2002-11-27 19:13:47
[quote][b]下面引用由[u]ericlien[/u]在 [i]2002/11/27 05:04pm[/i] 发表的内容:[/b]
## 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目录下
================================ ...
[/quote]
那你就需要找个另外一个硬盘,分区至少要2G左右,然后挂接到/a目录


 YT 回复于:2002-11-27 21:28:46
支持!

 YT 回复于:2002-11-27 21:31:27
sunmarmot 要是有空给我发个消息吧。

 sunmarmot 回复于:2002-11-28 12:50:10
测试不能继续,
问题如下:
1.用ok boot cdrom -s 启动后不能建立/a,/为只读,如果把/dsk/c0t0ds1 挂到/mnt下替代/a,修改脚本
2.#cd mnt
  #chmod 777 install.sh
  ## ls -l
total 2004430
-rwxrwxrwx   1 root     root        6909 Nov 27 19:45 install.sh
drwx------   2 root     root        8192 Nov 27 18:27 lost+found
-rw-r--r--   1 root     root     1025736704 Nov 27 19:18 root.dump 
  #./install.sh www c0t0d0 192.168.0.33 255.255.255.0 192.168.0.0
   ./install.sh: not found

不知道有什么好的办法没??

 jxbcpp 回复于:2002-11-28 15:02:41
[quote][b]下面引用由[u]sunmarmot[/u]在 [i]2002/11/28 12:50pm[/i] 发表的内容:[/b]
测试不能继续,
问题如下:
1.用ok boot cdrom -s 启动后不能建立/a,/为只读,如果把/dsk/c0t0ds1 挂到/mnt下替代/a,修改脚本
2.#cd mnt
...
[/quote]

从光盘启动后有个空目录/a的,不用自己建立


 sunmarmot 回复于:2002-11-28 16:31:50
测试ing

 jxbcpp 回复于:2002-11-28 17:59:50
[quote][b]下面引用由[u]sunmarmot[/u]在 [i]2002/11/28 12:50pm[/i] 发表的内容:[/b]
测试不能继续,
问题如下:
1.用ok boot cdrom -s 启动后不能建立/a,/为只读,如果把/dsk/c0t0ds1 挂到/mnt下替代/a,修改脚本
2.#cd mnt
...
[/quote]

参数应该是:
#./install.sh c0t0d0 www 192.168.0.33 255.255.255.0 192.168.0.0


 sunmarmot 回复于:2002-11-28 22:39:47
[这个贴子最后由sunmarmot在 2002/11/28 11:02pm 编辑]

                                测试报告


机器设置:
Ultra 60 450 UltraSPARC
1G memory 
36G Internal Disk
Solairs 8 en 
Patch :8_Recommend
Mountpoint:
----------------------------------------------------------------------------------------------------------------------
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t0d0s0    2053605  969878 1022119    49%    /
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
mnttab                     0       0       0     0%    /etc/mnttab
swap                 2926344      16 2926328     1%    /var/run
swap                 2926344      16 2926328     1%    /tmp
/dev/dsk/c0t0d0s7    30861076       9 30552457     1%    /export/home 
----------------------------------------------------------------------------------------------------------------------
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 -  1451        2.00GB    (1452/0/0)   4194828
  1       swap    wu    1452 -  2903        2.00GB    (1452/0/0)   4194828
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7       home    wm    2904 - 24606       29.90GB    (21703/0/0) 62699967
hostname: Ultra 60
IP address:192.168.0.11
Netmasks:255.255.255.0
安装时间:2小时
母盘制作
# cd /export/home;ufsdump 0f root.dump / ;compress root.dump
  DUMP: Writing 32 Kilobyte records
  DUMP: Date of this level 0 dump: 2002
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rdsk/c0t0d0s0 (ultra60:/) to root.dump.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Estimated 2003392 blocks (978.22MB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]
  DUMP: 2003390 blocks (978.22MB) on 1 volume at 4292 KB/sec
  DUMP: DUMP IS DONE
测试时间:12分钟

目标主机设置要求

Ultra 60 450 UltraSPARC
512  memory 
36G Internal Disk
Solairs 8 en 
Patch :8_Recommend
Mountpoint:
#    0              /                2 G
#    1              swap             2G    ;;;---针对帖子里提出的问题偶把swap设置为1.5 G
#    3              /var              2G
#    6              /usr              4G      ;;;偶选的是完全安装,如果小于2G会产生问题
#    7              /export/home      21G
hostname:www
IP address:172.199.1.11
Netmasks:255.255.255.0

安装过程

1.把solaris 8的启动光盘放进Ultra 60光驱中,
然后:
ok boot cdrom -s
...
...
# format

给待安装盘分区,比如待安装硬盘是c0t0d0,分区表是:

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 -  1451        2.00GB    (1452/0/0)   4194828
  1       swap    wu    1452 -  2903        2.00GB    (1452/0/0)   4194828
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3        var    wm    2904 -  5807        4.00GB    (2904/0/0)   8389656
  4        usr    wm    5808 -  8711        4.00GB    (2904/0/0)   8389656
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm   19601 - 24619        6.91GB    (5019/0/0)  14499891
  7       home    wm    8712 - 19600       15.00GB    (10889/0/0) 31458321

2.把swap挂接到/a下
#echo y|newfs /dev/rdsk/c0t0d0s1;mount /dev/dsk/c0t0d0s1 /a
3.  配置网口
#ifconfig hme0 192.168.0.24 netmask 255.255.255.0 up
4. 从PC上把root.dump.Z和此脚本上传到/a目录下,注意:root.dump.Z传上去后不用解开,uncompress的工作在脚本里会做。如果解压也不影响。
# ftp 192.168.0.88
Connected to 192.168.0.88.
220 3Com 3CDaemon FTP Server Version 2.0
Name (192.168.0.88:root): jinjf
331 User name ok, need password
Password:
230 User logged in
ftp> bin
200 Type set to I.
ftp> hash
Hash mark printing on (8192 bytes/hash mark).
ftp> lcd /a
Local directory now /a
ftp> get root.dump.Z
ftp> get tool.tar

5.解压安装
#cd /a 
# tar -xvf tool.tar
x BootDiskMirror.sh, 3163 bytes, 7 tape blocks
x CopyBootDisk.sh, 2394 bytes, 5 tape blocks
x install.sh, 6818 bytes, 14 tape blocks
# chmod +x install.sh
V880的要求配置的主机名是www;IP地址是192.168.23.11;掩码是255.255.255.0;执行:
# ./install.sh c0t0d0 www 192.168.23.11 255.255.255.0 192.168.23.0  ;;;-注意:顺序不要搞错,不然会报错。
rootdisk= c0t0d0
hostname= www
IP=192.168.23.11
netmask=255.255.255.0
netaddress=192.168.23.0


Are These correct?[Y/N] [y,n,?,q]
Please edit slice mount table.

# Mounted_on    Slice_number
/               0
swap            1
/var            3
/usr            4
/export/home    7

Are you sure to continue?[Y/N] [y,n,?,q] y
#安装提示回答2个问题后就可以等待系统安装结束,大约需要40分钟。
#
#第一次启动新安装的系统时会有报错:
#savecore: open("/dev/dsk/c0t0d0s1": No such device or address
#dumpadm: cannot use /dev/dsk/c0t0d0s1 as dump device: 无此设备或地址
#再重新启动一次后就正常了,系统自动更改了配置文件 

测试报告

优点:可以提高安装速度。省去很多人工干预。对远程出差,特别是用户要求安装很多软件,例如:iplnat,oracle….可以在公司做好母盘,到现场可以节省很多配置及安装时间.

FAQ点对点

问:如果我是在18G上面做的母盘,到36G上去安装,可以吗??
答:可以,没问题,反正是自己手工分区。

问:root.dump.Z先解开了,原来你是在里面解压缩的啊,影响安装吗??
答:不影响,我这里没做判断

问:倒!!报这个错!!!
newfs: /dev/rdsk/wwws0: No such file or directory
Error when newfsing /dev/rdsk/wwws0
umount: warning: /tmp/0 not in mnttab
umount: /tmp/0 no such file or directory
mount: /dev/dsk/wwws0 or /mnt, no such file or directory
Error when mounting /dev/rdsk/wwws0
答:你参数的顺序写错了,你自己看看
## ./install.sh www c1t0d0 172.16.23.11 255.255.255.0 172.16.23.0错了
应该是
## ./install.sh c1t0d0 www 172.16.23.11 255.255.255.0

问:在开始安装的时候问的问题默认是
Please edit slice mount table.

# Mounted_on    Slice_number
/               0
swap            1
/var            3
/usr            4
----------------------------------------------------------------------------------------------------------------------
如果我改成
Please edit slice mount table.

# Mounted_on    Slice_number
/               0
swap            1
/var            3
/usr            4
/export/home    7   《------这是我加上去的,对不对??
----------------------------------------------------------------------------------------------------------------------
这样可以了吗??
答:可以的。

问:就是说偶如果format的时候还有个opt在上面,这样可以吗?
# Mounted_on    Slice_number
/               0
swap            1
/var            3
/usr            4
/opt            5
/export/home    7  
答:可以可以!随便你怎么分。

问:我写好脚本后运行后总是报install.sh不能执行是怎么回事呢?
答:用编辑器写脚本时出的问题,后来直接要了个脚本用就好了。

问:不同的机器可以用吗?例如:在u5上面做的母盘,到v880上面装。
答:可以的,母盘只安装出来系统盘。其他的盘可以以后在挂上去。

问:对偶插的硬盘槽位有要求吗??
答:没有。

问:swap和/usr,/var应该多大比较好,如果目标盘的swap分区为1.5G可以干吗??原来的母盘是2G的??
答:SWAP至少要比母盘大一些,我指的母盘是root.dump这个文件。对于完整安装的solaris,/usr应该根据要求设置,但不能小于原来机器上/usr总容量的大小,所以推荐为1.3G以上 ,大家分区按照应用软件的要求分,和以前一样。

问:如果我的硬盘上面装了东西,现在我想重来一遍,有问题吗??我的意思是说不format了,用现有的分区,就用newfs 把c0t0d1搞一下就可以了吗??
答:还是一样的安装方法,c0t0d0是你的一个硬盘是吗?
也不用newfs了,脚本自己会newfs的.

问:在安装过程中需要多少时间呢??
答:大概40分钟。

剩下的问题见上面的回复!!!!!剩下的两个测试报告偶会在周日前贴出来。

和大家探讨的问题:
我用XP的串口,在和SUN E450,CISCO,redback等机器连接的时候,串口常常会死掉,是不是xp的bug呢???对于串口和键盘造成串口死掉,谁有什么好的办法没,
例如:先做#kbd -a disable 
   

 sunmarmot 回复于:2002-11-28 22:42:30
呼!!!搞定了

 jxbcpp 回复于:2002-11-29 09:44:34
对于一些应用,比如ORACLE等,安装是它会在自己的配置文件里面写进去监听地址,这样,就需要用install.sh脚本安装完后手工修改这些应用的配置文件。请大家注意

 YT 回复于:2002-11-30 01:18:44
sunmarmot 我爱你!

啵!

 ericlien 回复于:2002-12-02 16:28:07
我將目的碟盤/分成0.5gb,/usr分成3gb,/var分成3gb,/log分成10gb
裝到一半會出現NOTICE: alloc: /mnt: file system full
write error extracting inode 3922656, name ./usr/openwin/share/man/man3/tt_xcont
ext_join.3
write: No space left on device
Error when dumping data.
我用df -k查看結果如下
Filesystem            kbytes    used   avail capacity  Mounted on
/pci@1f,0/ide@d/cdrom@1,0:b
                       98598   89688       0   100%    /
swap                  953808     240  953568     1%    /tmp
proc                       0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
/tmp/devices          953808     240  953568     1%    /devices
/tmp/dev              953808     240  953568     1%    /dev
/devices/pci@1f,0/ide@d/sd@1,0:a
                      528244  528244       0   100%    /cdrom
/cdrom/Solaris_8/Tools/Boot/usr
                      528244  528244       0   100%    /usr
fd                         0       0       0     0%    /dev/fd
/dev/dsk/c0t0d0s1    2052750 1116225  874943    57%    /a
/dev/dsk/c0t0d0s4    3095966       9 3034038     1%    /tmp/4
/dev/dsk/c0t0d0s5    3095966       9 3034038     1%    /tmp/5
/dev/dsk/c0t0d0s6    10466932       9 10362254     1%    /tmp/6
/dev/dsk/c0t0d0s0     492422  492396       0   100%    /mnt
是不是程式沒有將原本root.dump中/usr的資料copy到/tmp/6
我將要安裝的磁盤/usr設於slice 6


 jxbcpp 回复于:2002-12-02 16:57:58
[quote][b]下面引用由[u]ericlien[/u]在 [i]2002/12/02 04:28pm[/i] 发表的内容:[/b]
我將目的碟盤/分成0.5gb,/usr分成3gb,/var分成3gb,/log分成10gb
裝到一半會出現NOTICE: alloc: /mnt: file system full
write error extracting inode 3922656, name ./usr/openwin/share/man/man3/tt_xcont
ex ...
[/quote]

我讲一下我脚本实现的原理,你就知道为什么出现这个错误了,当然这也是我脚本的一点缺陷
1、我把目标盘的swap分区创建成文件系统,然后mount 到/a目录,把root.dump.Z上传到/a目录下。因此,swap分区必须要足够大,大于root.dump(root.dump.Z压缩前的文件)的大小。
2、我先把root.dump全部ufsrestore到目标盘的/分区,因此,/分区也必须足够大。你这个问题是由于/分区太小了
3、root.dump全部ufsrestore完毕后,再按照用户自定义的vfstab把文件移动到目标分区上。因此,移动过程需要一段时间(先拷贝目录,再删除/分区上的源文件)。移动的时候没有过多的提示,如果大家不知道,可能会认为进程吊死了。

以上有什么改进的方法,大家可以讨论讨论,谢谢



 YT 回复于:2002-12-02 21:32:05
用JAVA编个图形进程界面吧。。。
任务交给mmmmn了。

 jxbcpp 回复于:2002-12-03 10:06:19
我最初的想法是做张启动光盘,只要从这光盘启动后输入几个参数就可以自动安装,不必现在这样麻烦。可我失败了

哪位高手能解决?

 aix-solaris 回复于:2002-12-05 03:54:53
It is a great contribution.

You may need to try the following steps to use a CD
1. dump root.dump.Z on a CD.
3. put the CD into the target server's CD drive
3. create a boot server in the same subnet. 
4. add the target machine (MAC, IP and hostname) into the boot server.
5. boot the target server "boot net -s"
6. mount CD mount -F hsfs -r /dev/dsk/cXtXdXsX /a
7. copy root.dump.Z to swap
8. run whatever you need.

 ddscsg 回复于:2003-08-12 22:35:09
為何我執行後會出現can not create vfstab 這個error message
然後就跳出來了

原文转自:http://www.ltesting.net