简介
这篇文档包含了你用solaris和Sun平台工作时所需要的最重要的20%的技术。它能处理你所遇到的80%的问题。
这篇文档并不打算覆盖Solaris处理环境的细节,也不会包含常见问题解答(相关的书和链接将在附录中给出)。这本书将用来为刚成为Solaris系统管理员的新手或没有每天管理Solaris系统基础的人提供一种怎样收集这种信息的服务。这篇文章关注的方向是用来做技术开发的图形工作站,也将对希望为建立一套用来演示或作为基准的Sun系统的人有所帮助。
两点提醒:
· 永远记住在记录日志中记录下你对系统的每一次改动
· 清楚的在头脑中记住这篇文档包含能让系统不可用的系统级的程序。除非你对它的破坏性做了仔细的分析,否则不要在正在使用的系统上执行这些程序。
1 系统启动和测试
1.1 OK提示符
每套SUN都有一个Boot-PROM模式,可以在启动操作系统之前访问,也可以在运行的时候访问,可以用STOP+A进入,如果没有STOP键(PC),可以用ctrl+break.。一旦进入Boot-PROM模式,会出现OK提示符。如果操作系统运行时候出现,可以用go继续。
1.2 控制台测试
Boot-PROM模式可以用直接连接的键盘和显示器,也可以用终端。
如果系统启动时候没有检测到键盘,输入输出自动转到第1个串口(/dev/ttya,A),可以连接一个终端或者另一计算机(通过交叉串口线)到这个端口。
如果另外的计算机是SUN工作站,可以使用tip hardwire来查看启动控制台。Tip命令输入之后,所有的启动信息会出现在相应的终端窗口里面,如果被观察的机器用了STOP+A,必须使用Strg-]把tip改成telnet模式,然后输入一个BREAK:telnet>send brk
1.3 重新启动SUN工作站
重新启动之前,工作站需要进入一个合适的状态,可以使用下面及格命令退出:
# init 5
# init 6
# init 0
SUN工作站在重新启动之前,会以一定的方式关闭系统,下面是几种可选择的方法:
最好、最干净的方法:
- # init 5 关闭所有进程,然后系统自动关掉电源。
- #init 6,关闭所有进程,然后系统自动从新启动。
- #init 0,关闭所有进程,然后系统自动回到OK状态。
在这3种情况下,在系统关闭之前执行/etc/rc0.d下面的K*脚本,这可以用于关闭数据库,或者关闭WEB服务器的进程ID文件等。
如果没有合适的shell窗口,可以使用远程登录来执行上面的命令。远程也不可以,可以使用下面的方法:
- STOP-A
- OK sync 同步文件系统,中断OS,然后重启。
注意:需要察看随之产生的保存在/var/crash/<hostname>下面的内核转储文件。
如果碰到STOP-A也不能使用的情况,必须关闭计算机电源,在打开电源。
1.4 系统的测试
启动系统,在执行到内存测试的时候,按下STOP-A。
下面的段落只描述很重要的命令。
详细的描述可以在下面的书中《Hardware Diagnostics for Sun TM Systems: A Toolkit for System Adminis-trators》(Infodoc Number 23476 on http://sunsolve.sun.com)。
1.4.1 Banner(标识)
Banner显示下列信息:
. CPU的数量、类型和频率
. 内存
. MAC地址和主机地址(主机号)
. 控制台显示卡类型
. Sun-Globe: Creator 3D
. Sun with face: Elite 3D
. Self-describing Logo: PGX, Raptor GFX (=PGX32), Expert3D(lite) XVR-500, XVR-1000 etc.
1.4.2检测
probe-scsi-all列出内置和外置的所有SCSI设备。对于IDE硬盘,使用:probe-ide-all.
1.4.3 测试所有
test-all.运行所有的自检,可以检测象网线是否正常等情况。
1.4.4 printenv and devalias
devalias列出所有别名,printenv列出所有变量。例如boot-device变量,定义了计算机启动的路径,一般情况下是disk,disk是一个指向特定设备的别名。
1.4.5禁止网卡错误信息
当网卡在没连接网线启动的时候,"Interface: No link"会出现多次,可以在OK下面设置
setenv tpe_link test false 来禁止这个报错信息。
2 管理硬盘
2.1 逻辑设备名
所有的硬盘都有一个共同的命名方案,该方案包括一下四个部分:
c 控制器号
t 目标号,对于SCSU设备,就是对应的SCSI地址。
d 驱动号或者是RAID设备的LUN 号(一个地址,多个硬盘)
S 分区号(见下一段)
这些逻辑设备的以连接方式放在/dev/dsk和/dev/rdsk目录里面,并指向物理设备名。但这些物理设备仅在改变启动设备时用到,一般的命令都以逻辑设备为参数。
例如:
c0t0d0s0 通常是工作站的第1硬盘,c0t1d0s0 是第2个 c0t6d0s0 是内部光驱(SCSI地址是6)
在OK提示下输入 boot –r可以更新/dev/dsk and /dev/rdsk目录里面的内容,devfsadm也可以。
Solaris8以前的需要用drvconfig;disks;devlinks3个命令来完成,刷新之后,probe-scsi-all所看到的设备的逻辑连接也就能看见了。
2.2 分区
下面是一个两个硬盘的工作站用format命令看到的内容
c0t0d0
c0t1d0
这里显示的是硬盘,不是分区或扇区,format的目的就是产生和管理分区,一个硬盘最多可以优个分区,用format-print可以查看。如果使用缺省安装,Solaris安装工具就会把系统盘分成slices: / (root) /usr /var 和 /export/home。Solaris 8操作系统缺省安装产生3个分区,大约1G的根区,SWAP区(根据内存容量确定大小),剩余空间给/export/home.
对于工作站来说,这个缺省分区不是最优化的,分区的容量不能在数据不丢失的情况下扩充。在分区空间用尽的情况下,必须使用符号连接。对于服务器来说,得保留一个分区给/var目录,
这样的话,保存在/var/tmp里面的记录和大文件就不会影响到根区,避免系统产生问题。
建议工作站这样分区
slice 0: / root-Partition, incl. /usr, /var, /opt plus
/export/home
slice 1: swap 交换区,和物理内存一样大
slice 2: backup 不要改变这个分区!!代表整个硬盘
slice 7: sds 用于Solstice DiskSuite(TM) metadata的小分区
为了使用Solstice Disksuite logical volume manager (SDS),建议保留30M,用于拷贝"state replica databases".可以参阅后面的使用SDS镜像启动盘
从Solaris 8 02/02开始,会自动安装Live Upgrade。使用Live Upgrade,可以在系统正在运行的时候拷贝当前根的环境。例如可以测试新的操作系统而不用改变正在运行的系统。为了产生这个预备启动环境(ABS),必须留出足够的空间,现在的硬盘空间足够大,可以使用下面分区:
slice 0: / root-partition, incl. /usr, /var, /opt
slice 1: swap swap-Partition, as large as physical memory
slice 2: backup Do not change this partition!
It is always the size of the whole disk
slice 3: /export OS-independent data, home-directories
slice 4: <not mountet>, to be used as ABE with Live Upgrade
( about 150% of the expected size of / )
slice 7: sds A small space reserved for Disksuite metadata
2.3 Crashdumps
从Solaris 7开始,缺省情况下crashdump写到交换区上,这也是为什么交换区为什么和内存一样大的原因之一。下次启动的时候,从交换区中读取这个文件,压缩之后写到var/crash/<hostname>里面,用于以后的分析。因此/var(如果没有单独分出/var或者是/区)不能太小。
如果一个系统用了几个G的空间作为dump设备,启动时会由于上面提到的拷贝操作,花上很长时间。这时候,最好利用dumpadm定义一个dump分区,从这个指定分区拷贝的操作会在后台运行。注意经常检查和清除/var/crash/<hostname>,保证有足够的空间用于其他的crashdumps.
2.4 Example
假如有一台E450系统并且有一个已经配置好的启动盘,但你不知道两件事情:(1)盘插哪里(系统又20个槽,必须装到安装系统时硬盘所在的槽里才能启动),(2)忘了超级用户口令。把 盘插到一个任意槽里,按下面的步骤:
第1步 插入一个启动光盘(SOLARIS 安装盘)STOP+A,然后 boot cdrom –s。如果用外置光驱,就需要probe-scsi-all列出光驱位置,然后boot <光驱路径> -s。系统起来之后,就有了一个不需要口令的超级用户窗口。
第2步 开始mount硬盘。首先用devfsadm重新建立设备,在/dev/dsk下面会有8个新文件。接下来使用format-print-partition确认盘已经装好,并找出来哪个分区是root分区,通常都是0区 。假设盘插到2槽,format会识别到c1t2d0(SCSI ID是2,第1个控制器),c1t2d0s0就是root分区,因此应该ount这个盘,fsck –Y /dev/rdsk/c1t2d0s0;mldir /tmp/disk;mount /dev/dsk/c1t2d0s0 /tmp/disk
第3步 首先清楚/tmp/etc/shadow里面的root后面的加密内容清空,然后查看/tmp/etc/vfstab里面看看该盘是不是第2槽的,如果是,/应该mount在/dev/dsk/c1t2d0s0,如果不是,就把硬盘插到相应的槽里面。
第4步 假设在/tmp/etc/vfstab里面看到的是/dev/dsk/c1t2d0s0,这说明在原来的系统里面启动盘就是第2槽,一般,E450会从第1槽启动(c1t0d0s0)。在/dev/dsk里面找到并记下来c1t0d0s0指向的物理设备文件名。
第5步 reboot,STOP+A,输入:boot <物理设备文件名>。
第6步 定义别名, nvalias my disk <物理设备文件名>,这样就可以输入boot mydisk就可以启动了。定义setenv boot-device mydisk,系统就会自动从mydisk启动了。
2.5 Removable Devices
2.5.1 Volume Management(卷管理)
可移动设备由卷管理器来负责,卷管理器检测CD-ROM并自动挂接到/cdrom/cdrom0下面。一些手工操作会造成卷管理器错误,比如使用曲别针打开光驱,而不是使用eject cdrom命令。只这时候需要手工重起卷管理器.
/etc/init.d/volmgt stop
/etc/init.d/volmgt start
2.5.2 软驱
插入软盘(UNIX或DOS格式)必须使用volcheck才能使用卷管理器管理软驱。如果volcheck成功,软驱会出现在/floppy/floppy0下面,使用eject floppy而不手工取出软盘。
2.5.3 CD-ROM
CDROM不需要volcheck,开机就会被检测到,并挂接在/cdrom/cdrom0下面,没有shell或命令使用/cdrom路径时可以使用eject cdrom弹出光驱,fuser –c /cdrom/cdrom列出所有和光驱有关的进程ID或命令,fuser –k可以快速杀掉相关进程。
如果没有卷管理器,使用下面的方法管理CDROM(假设SCSI地址是6):
- mkdir /tmp/cdrom
- mount -F hsfs /dev/dsk/c0t6d0s0 /tmp/cdrom
- (Work with CD mounted on /tmp/cdrom)
- umount /tmp/cdrom
- eject /dev/dsk/c0t6d0s0
2.5.4 CD-R 和 CD-RW
CDRW,是一个与solaris 8 捆绑的工具,用来烧制CD-R或者CD-RW介质。这个工具也可以烧制用命令mkisofs从solaris文件系统和目录中创建的ISO镜象文件。
看下面带精确参数的例子:
#! /bin/sh
# ./nfscd <PARAMETER1> <PARAMETER2>
# PARAMETER1 = Application ID
# PARAMETER2 = from where
#
# ./nfscd SunNetManager /net/center2000/export/pkg/SUNWsnm
# set Umask
umask 022
# Remove old image
rm /data/disk.img
# Create image
mkisofs -A $1 -d -l -L -o /data/disk.img -P "Sun Microsystems" -p
"Solaris SPARC" -r -R -J -V "$1" -v $2
# Burn
cdrw -i /data/disk.img
2.5.5 磁带
磁带设备不是用卷管理器来控制的,它们必须用命令tar来处理。典型的磁带设备被作为一个外部SCSI设备连接到系统。当solaris OE 运行时它们的连接和配置就已经被完成了,在运行以前版本的solaris命令devfsadm(solaris 8 OE) 或者drvconfig; tapes;devlinks,你能找到一些逻辑的连接在/dev/rmt 目录。0描述的是第一个磁带设备,1是第二个磁带设备。
通过以上,你就可以访问这个磁带,用命令 tar tvf /dev/rmt/0.
注意:SGI系统写入的磁带通常只能用特定的块因子(blocksize)来读
tar tvfb 512 /dev/rmt/0
在某些情况下,需要进行字节交换操作,才能正确读取
dd if=/dev/rmt/0 conv=swab | tar tvfb 512 -
2.6 克隆磁盘
通过这部分的学习,你可以把一个系统克隆到另一个和它的硬件属于同一系列的系统中。例如克隆Ultra(TM) 10工作站到Ultra 10工作站是可以的,而克隆到Ultra 60工作站就是行不通的。
如果监测到目标系统的硬件结构和源系统有所不同的话(不同的结构缓冲,网卡等),目标系统在克隆以后需要用boot –r命令来重新配置。
2.6.1 使用内部磁盘来克隆
这种方式适合用于易于改变的内部磁盘:
·Ultra 30, Ultra 60, Ultra 80或者Sun Blade(TM) 100工作站或者E220R/E420R/E250R/E450
·Sun Enterprise(TM)220R, 420R, 250, 或者450服务器
内部的FC-AL磁盘(如Sun Blade 2000工作站和Sun Fire(TM) 280R或V880服务器)可能导致一些问题。
接下来是用Ultra 60工作站做的一个范例:
1 将目标盘插入主板上的第二个硬盘口
3 启动进入但用户模式(STOP-A; boot –s)
4 用devfsadm重新配置所有的磁盘
5 键入format察看硬盘的名称。在Ultra 60工作站上,你会看到c0t0d0和c0t1d0。C0t1d0是内部系统中最顶端的磁盘。
6 决定哪个盘是源盘,哪个盘是目标盘(不要忘记备份你的数据!)。在我们的例子中c0t0d0(底部的盘)作为源盘,c0t1d0(上面的盘)是目标盘。
7 dd if=/dev/rdsk/c0t0d0s2 of=/dev/dsk/c0t1d0s2 bs=128k(这条命令为整个盘,包括分区标的内容作了一个1:1的副本。如果源盘是一个9GB的盘,而目标盘是一个18GB的盘,那么将会有9GB的容量被浪费)。警告:仔细检查这一步,避免对你源盘的意外损坏。
8 fsck –Y of=/dev/dsk/c0t1d0s0(检查启动分区的文件系统,一般来说是分区0)
9 移除源盘,将克隆好的盘放进先前源盘所在的位置。重新启动你新做好的克隆的系统
2.6.2 通过转接线来克隆
这种方式比上面描述的通过内部磁盘克隆要慢,但是它适合用于一些内部的磁盘不容易改变的系统(如Ultra 10或Ultra 5工作站)。
警告:记住文件“/.rhosts”仅仅在这个任务中使用,在完成这个任务之后删除它来避免系统的安全漏洞。
目标系统
启动
在注册屏幕上使用命令行注册(command line login)
尽可能地停止引起磁盘输入输出的进程
TERM=vt100vi /etc/inet/hosts
->添加目标和源
ifconfig hme0 plumb
ifconfig hme0 <target> netmask 255…up
->测试rsh源
rsh source “dd if=/dev/rdsk/c0t0d0s2 ibs=128k obs=8k” | dd of=dev/rdsk/cotodos2 bis=128k obs=128k
(9GB的盘需要等待大约40分钟)
STOP-Aboot cdrom –s(用可引导的光盘引导)
fsck –Y /dev/rdsk/c0t0d0s0
源系统
在文件/.rhosts中添加目标IP
sync; sync;
2.7 用SDS制作磁盘镜像
Solaris逻辑卷面管理(SVM),一般是指Solstice Disksuite(SDS)软件,它可以把磁盘系统做成RAID 0, 1, 0+1或5。工作站最感兴趣的方式是RAID 1:为磁盘错误准备好了一个包含启动文件系统的磁盘镜像。
SVM是Solaris 9系统环境的一部分。在Solaris 8平台上,你可以在第二章光盘的“EA”目录下找到SDS软件。而在Solaris 7或者2.6系统环境中,服务器版,你可以查找一下光盘“Easy Access Server”。
我们假定一个工作站有两块内部的磁盘,c0t0d0和c0t1d0。这两块盘都以相同的方式被正确的分区:分区0被分配给/(root),分区1被分配给交换区(swap),一个比较小的分区7被分配用来记录复制数据库(State Replica Databases)。分区2被定义成一个备份区(参见“分区”一章)。
把第一块盘的分区信息复制到第二块盘,可以用如下的命令:
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
记录复制数据库是一个包含了镜像信息纪录的小文件。镜像中的每个磁盘都必须知道有三个记录复制数据库文件:
# metadb -a -f -c 3 c0t0d0s3 c0t1d0s3
下一步,在第一块磁盘上创建第一个子镜像,它包含了启动文件系统:
# metainit -f d50 1 1 c0t0d0s0
然后在第二块磁盘上创建第二个子镜像:
# metainit d52 1 1 c0t1d0s0
使用第一个子镜像创建镜像的第一个部分:
# metainit d54 -m d50
用metaroot修改/etc/vfstab和/etc/system,让系统可以从元设备(metadevice)d54上启动:
# metaroot d54
重新启动系统,然后将添加第二个子镜像d54。这就强制了“镜像同步”,将第一块盘的内容复制到了第二块盘。这将在一小段时间内影响系统的性能。
# metattach d54 d52
为了避免在从第二块盘上紧急启动时发生错误信息,交换分区必须做成相同样式的镜像。否则,交换分区在损坏的磁盘上,/etc/vfstab仍然会定位到c0t0d0s1。
现在系统已经可以从第一块盘(boot disk),也可以从第二块盘(boot disk1)上启动了。
如果有一块磁盘损坏,Solstice DiskSuite会停止启动程序。这是因为如果要在一次错误以后成功地启动系统,纪录复制数据库的大部分必须依然“幸存”。在我们的两块镜像盘上仅仅需要六个复制中的三个依然存活。
超过两块盘的服务需要有第三块盘来用记录复制数据库来配置。两块盘的工作站必须手动地修复,下面的例子描述了这个过程:
·记录数据库复制在c0t0d0s7和c0t1d0s7上配置,c0t0d0盘发生故障。
·启动程序被Solstice DiskSuite停止,并转换进入到单用户模式。
·现在记录数据库复制希望发生错误的盘没有被配置:
metadb -d -f c0t0d0s7
·在下一次重启之后,对重置的磁盘进行分区,使它和仍然活动的磁盘的分区一致。
·做完这些之后,在重置的硬盘上创建记录数据库复制文件:
metadb -a -c 3 c0t0d0s7
·在下次的重启之后,镜像又可以重新同步了。
注意:
如果你有一个两块盘的系统,在一块盘上创建三个记录数据库复制,在另一块上面创建四个。在理论上有50%的机会可以在一次错误后重新启动系统而不需要手动地去使用元数据。
如果你能接受在2盘系统下发生错误后无人职守的重启,在两块盘上创建相同数量的记录数据库复制并且创建/etc/system条目:
set md:mirrored_root_flag=1
关于这方面内容更多的讨论可以在Sun的蓝皮书“Configuring Boot Disks With Solaris[tm] Volume Manager Software"( http://www.sun.com/blueprints/1002/817-0407-10.pdf)上找到。
3 SWAP交换空间
3.1 固定配置文件 /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes –
/dev/dsk/c0t0d0s1 - - swap - no –
/usr/local/swapfile.1 - - swap - no –
...
swap - /tmp tmpfs - yes –
交换文件系统可以使用像/dev/dsk/c0t0d0s1这样的裸分区或者象/usr/local/swapfil.1的空文件。
你可以定义多个交换文件系统,所有这些都在逻辑上绑定并挂接到/tmp挂接点。这就意味着只要物理内存是可用的,向/tmp中写文件将写入内存并耗尽内存(not very sure)
例如:
/dev/dsk/c0t0d0s1 - - swap - no –
/dev/dsk/c0t1d0s1 - - swap - no –
/dev/dsk/c0t2d0s1 - - swap - no –
...
swap - /tmp tmpfs - yes –
上面创建了另外的6GB的虚拟内存(假设所有的分区大小为2G).Solaris将条带访问对所有的磁盘。
3.2 "裸分区”和空文件的比较
最快速的交换就是不进行交换,假如物理交换不可避免,使用在多可磁盘上条带后的分区。如果实在需要内存或者没有可用的分区或磁盘,则使用空文件系统。
3.3 临时配置
在标准的SOLARIS操作中,空文件可以加入到交换空间。
# mkfile 100m /usr/local/swapfile.1
# swap -a /usr/local/swapfile.1
# swap -l
在系统重启之前,这些额外的空间是临时的。可以使用命令swap -d /usr/local/swapfile.1去掉这些额外的交换空间
4 系统安装和维护
4.1 CD安装
在安装过程中,你尽可以轻松地按照屏幕的提示进行,但也许会有一些小的缺陷;
- Name Service:选择 NONE.如果你这时候选择象NIS这样的内容,因为网络还没有安装好,所以没有NIS服务可用,这时系统可能会“挂起”等待NIS服务器响应,在基本的网络安装完成后再配置NIS或DNS会更好些。
- 安装群集:对于工作站而言,应该始终选择"Entire Plus OEM Software"项来确保安装所有的内容。对于专用服务器,去掉不必要的服务包可以最大降低安全风险。参考 SUN 蓝皮书《Minimizing the Solaris[tm] Operating Environment for Security: Updated for Solaris 9 Operating Environment>>
( http://www.sun.com/blueprints/1102/816-5241.pdf) 可获得更多内容
- 磁盘分区:根据再“分区”这一章所提供的建议,为了能够对磁盘进行分区,当提示安装方式时,选择“定制”方式而不是“默认”方式。
从 Solaris 7 OE版本开始,安装CD内含有预打包的Solaris映像.如果需要升级以前的季度升级包到该映像文件的版本,参考“维护升级”
例如:安装“维护升级 7”(同Solaris 8 02/02 OE发布)到Solaris 8 07/01 OE版本需要升级Solaris 补丁包(只这些,没有功能的增强)到在02/02版本上的状态。升级安装在/etc/release文件中写入如下标记:"Solaris 8 07/01 Maintenance Update 7" “推荐补丁集”采用另外的方式,用户每月在“推荐补丁集”上可以看到不同补丁包和补丁版本。 这些可以从 http://www.sun.com/bigadmin下载并且在Solaris安装后安装。
安装完毕后,root用户只能从system控制台登录,这种终端方式直接连接到系统或键盘。为了允许通过TELNET,RSH等从远程登录,必须修改一个文件:注释该行:CONSOLE=/dev/console!in!/etc/default/login.注意:这是一项安全分险。
4.2 包的安装
包是通过tar/compress/zip等工具压缩的一些目录文件,其命名规则名字如下:前面的四个大写字母代表发行该包公司的US股票代码,后面的小写字母代表其功能。例如SUNWspci2这个软件包,就是SUN-pci卡的驱动程序包,前面的SUNW是SUN的股票代码,后面的spci2是其功能(PCI卡驱动)。
安装命令如下(后面的目录里必须包含这个包)
pkgadd -d /cdrom/cdrom0
pkginfo 打印该包的信息,pkgrm <Package-Name>删除(卸载)已经安装的包。
例如:你的机器原来安装的显示卡是Creator3D(ffb)换成了Elite3D(afb),这样开机的时候会提示"no console framebuffer"(没有显示卡),说明没安装Elite3D驱动程序。使用
pkginfo | grep -i afb
命令检查,没有输出,说明安装系统的时候没有安装Elite3D显示卡的驱动,而Elite3D的驱动程序在安装盘的s0/Solaris/Product. 进入这个目录,使用下面命令安装即可:
pkgadd -d . *afb*
重新启动机器,新安装的显示卡就可以正常显示了。
4.3补丁安装
补丁的数字代码包含了两个部分,6位数字的补丁号,后面是两位数字的版本号,人员123456-78。
Solaris8使用的是*.zip格式的补丁压缩,以前使用的是*.tar.Z的格式的包。安装补丁的时候,先拷贝到/tmp下面,然后接压缩,安装之后要删除这些临时文件。解压缩办法:
zcat 123456-78.tar.Z | tar xvf -
unzip 123456-78.zip
然后使用patchadd 123456-78这样的命令安装这个补丁。使用patchadd 123456-78安装的补丁可以使用pkgrm删除(卸载),/var/sadm/patch纪录了这些安装纪录,这个目录没有的话,pkgrm就不能正常删除补丁了。
showrev -p | grep <patch number>可以查找到已经安装的补丁包。
5 X-Server和CDE用户接口
5.1 常见的需要注意的问题
X-Server或者CDE总是按照以下顺序搜索配置文件:
1. $HOME/.dt/...
2. /etc/dt/...
3. /usr/dt/...
注意,永远不要改动在整个系统范围内都生效的/usr/dt/中的内容。如果系统的X-Server或CDE出现 问题,总是使用/etc/dt/下的文件去维护或恢复设置。用户自己的配置如扩展按钮或面板的改变等,配置总是保存在$HOME/.dt/目录下。在本节以下的内容中,将用<DT>来代替这些目录($HOME/.dt, /etc/dt,/usr/dt)。
5.2 定制登陆界面
文件:<DT>/config/$LANG/Xresources
Logo(象素图或位图,24位色或以下,广泛装载时间):
Dtlogin*logo*bitmapFile: /usr/local/lib/X11/dt/bitmaps/Mylogo.bm
通用欢迎登陆语句:
Dtlogin*greeting*labelString: Here's %LcoalHost%!
输入用户名后的欢迎:
Dtlogin*greeting*persLabelString: Hello %s
5.3 从多屏幕登陆,Xinerama,和24位色
首先查看 /dev/fbs,找出有几个显示卡可用,它们是如何命名的. 确认有 /dev/fbs/ifb0和/dev/fbs/ifb1,两个 Expert 3D显示卡。
然后,把X-Server文件从/usr/dt/config复制到/etc/dt/config,编辑该文件,确认最后一行与以下内容相同:
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner
5.3.1 多屏幕
多屏幕是指CDE在每个屏幕中运行一个完整的用户面板。鼠标可以在两个屏幕间移动,而各屏幕上的窗口不能在两个屏幕间移动。ifb0的的显示屏幕被称为: :0.0, ifb1的显示屏幕被称为: :0.1
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -dev /dev/fbs/ifb0 -dev /dev/fbs/ifb1 -nobanner
5.3.2 Xinerama
Xinerama(Solaris 7 11/99 OE以后的版本有效)是一个覆盖多个显示屏幕的的虚拟显示屏幕。鼠标和程序窗口可以在多个显示屏幕之间移动, CDE只生成一个用户前端面板。只有一个显示号码: 0:0. Xinerama 只在使用相同的显示卡时才可用。
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 +xinerama -dev /dev/fbs/ifb0 -dev/fbs/ifb1 -nobanner
Xinerama 允许定义一X和Y方向的重叠,这种设置使显示画面边扩展到多个显示器上,使两个显示器显示一个图形窗口(Xoverlap=<水平解析象素>),下面是一个在1280像素的的水平分辨率,20%边缘重叠显示的配置例子:
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 = xinerama -xoverlap 256 -dev /dev/fbs/ifb0 -dev /dev/fbs/ifb1 -nobaaner
5.3.3 使用24位色深
CDE本身默认使用8位色深(256色). 不过这没有问题,因为每个窗口可以使用单独的颜色位深设置。某些显示卡只有一个颜色表,这可能导致在某些应用中出现程序窗口颜色闪烁的现象。只需要将CDE修改成使用24位色深。如果使用PGX显卡,需要使用命令
fbconfig -degth 24
将框架缓冲区切换到24位。
注意:由于某些老的应用只支持8位色深,不是24位色深,可能会出现问题。
:0 Local local_uid@concole root /usr/openwin/bin/Xsun :0 -dev /dev/fbs/ifb0 defdepth 24 -dev /dev/fbs/ifb1 defdepth 24 –nobanner
5.4 用户定制CDE面板
CDE中的应用启动机制叫做“活动”。当用户将鼠标点到一个CDE图标是,“活动”发生预定义的行为,一旦定义以后,“活动”的关联到环境变量中:Menus, file manager, MIME-types 和定义文件
5.4.1 活动(Actions)
CDE 按照以下顺序搜索*.dt-files配置文件:
$HOME/.dt/types
/etc/dt/types/$LANG/
/usr/dt/types/$LANG/
例如,StarOffice52.dt(这是在$HOME/.dt/types下安装完StarOffice之后)
ACTION StarOffice52
{
LABEL StarOffice 5.2
TYPE COMMAND
EXEC_STRING "/opt/Office52/program/soffice" "%(File)Args%"
ICON So52
WINDOW_TYPE NO_STDIO
DESCRIPTION StarOffice
}
5.4.2 图标
一个活动的的定义还包含一个图标名。图标名按照以下顺序解析:
$HOME/.dt/icons
/etc/dt/icons/$LANG/
/usr/dt/icons/$LANG/
naming scheme: <name>.<size=m|t|l>.<format=bm|pm>
例如StarOffice52的图标文件存在以下位置: $HOME/.dt/icons/So52.m.bm
5.4.3 用户前面板
通过添加*.fp-files文件到$HOME/.dt/types目录下,可以方便简单的扩展用户前面板。默认定义存储在:
. /etc/dt/types/$LANG/
. /usr/dt/types/$LANG/
例如($HOME/.dt/types/tools.fp)
CONTROL Tools (Always define the main control before sub panel)
{
TYPE icon
CONTAINER_TYPE BOX
CONTAINER_NAME Top
POSITION_HINTS first
ICON Dtagen (This is a folder icon, Icon must exist!)
LABEL Tools
}
SUBPANEL Toolspanel
{
CONTAINER_NAME Tools
TITLE My Tools
}
CONTROL StarOffice52
{
TYPE icon
CONTAINER_TYPE SUBPANEL
CONTAINER_NAME Toolpanel
ICON So52
LABEL Star Office 5.2
PUSH_ACTION StarOffice52 (compare ACTION StarOffice52)
DROP_ACTION StarOffice52
}
你可以通过在子面板(SUBPANEL)里添加额外的控制(CONTROLs),来建立整个菜单按钮
6 显示卡和OpenGL
6.1 Fbconfig
在Solaris 8 系统环境中,fbconfig是配置显示卡的唯一的程序接口,每个显示卡有自己的专用配置工具。在Solaris 8 软件中,通过有规则的命名方式来与/dev/fbs下的设备名对应。
下面是一些显示卡配置命令及对应的显示卡类型
. ffbconfig Creator, Creator3D
. afbconfig Elite3D
. ifbconfig Expert3D, Expert3Dlite
. m64config PGX24 (onboard U5, U10), PGX64
. gfxconfig PGX32
在下面的内容中,只提及fbconfig,其他命令的参数都是一样的。如果没有在配置中把某个设备指定给某个显示卡,fbconfig工作在默认的显示卡(接主屏幕的显示卡)。
可以使用 ls /dev/fbs命令查找系统中安装了哪些显示卡。另外,可以使用下列命令通过设备名直接列出系统中安装了的显示卡。
fbconfig -res /dev/fbs/afb1 -propt -prconf
这个命令可以列出第二个Elite3D显示卡的配置信息,例如显示卡的类型、分辨率等。第一个Elite3D显示卡使用的设备名是 afb0。
fbconfig -res ?
这条命令将列出该显示卡支持的分辨率,指定的分辨率可以"剪切&拷贝" 到下面命令里面:
fbconfig -res "1280x1024x86" -try -now
-try和-now都是选项。
-try将只会改变10秒钟的分辨率。可以使用这个方法测试显示器和改变之后的视频信号是否同步。-now参数使分辨率改变立即生效,不需要重启X-Server。然而,有些时候使用-now选项改变分辨率后,屏幕显示会有一点几何失真,可以用退出用户再重新登陆来重新启动X-Server的方法来解决。
fbconfig -g 1.7
命令将gamma因子设定到1.7,默认值是2.2,通常看起来可能太亮了。
新的gamma因子设定,不用重启X-Server就可以立刻生效,而且重启后依然有效。
6.2 ogl_install_check
尽管在Solaris 2.5.1以后的版本的CD中都有OpenGL软件包,但在Solaris系统安装过程中,不会自动安装。 使用以下命令检查该系统上是否正确安装了OpenGL,以及OpenGl软件的版本:
/usr/openwin/demo/GL/ogl_install_chech
注意:在正确的设置了gamma因子后,OPENGL的测试环的设置也很简单了。
推荐使用最新版本的OpenGL。 例如Xinerama只能支持OpenGL1.2.1以后的版本。OpenGL的下载地址
1.配置root用户SSH登陆
# vi /etc/ssh/sshd_config
ListenAddress 192.168.0.10
PermitRootLogin yes
# > /etc/motd
# vi /etc/default/init
LANG=zh
2.取消几个影响系统启动的TIMEOUT
# vi /etc/bootrc
set boot_timeout 0
# vi /boot/solaris/bootenv.rc
setprop auto-boot-timeout 0
setprop boottimeout '0'
# vi /boot/solaris/strap.rc
Options timeout=0
3.取消自动关机
# vi /etc/power.conf
#autoshutdown 30 9:00 9:00 default
4.设置用户的环境变量
# vi /etc/passwd
root:x:0:1:Super-User:/:/usr/bin/bash
# vi /.bashrc
PS1='[u@H W]$'
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/ucb:/usr/sbin:/etc:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/sfw/bin
MANPATH=$MANPATH:/usr/man:/usr/local/man:/opt/sfw/man
LD_LIBRARY_PATH=/usr/lib:/usr/dt/lib:/usr/openwin/lib:/usr/sfw/lib:
/usr/local/lib:/usr/local/ssl/lib
CC=gcc
export PS1 PATH MANPATH LD_LIBRARY_PATH CC
export EDITOR=vim
umask 022
TMOUT=1800
# vi .bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
5.安装常用软件包
TOP工具:
# gzip -d top-3.5beta12.5-sol9-intel-local.gz
# pkgadd -d top-3.5beta12.5-sol9-intel-local
VIM工具:
# gzip -d ncurses-5.3-sol9-intel-local.gz
# pkgadd -d ncurses-5.3-sol9-intel-local
# gzip -d vim-6.2-sol9-intel-local.gz
# pkgadd -d vim-6.2-sol9-intel-local
# mv /bin/vi /bin/vi.bak
# ln -s /usr/local/bin/vim /bin/vi
# cp /usr/local/share/vim/vim62/vimrc_example.vim /.vimrc
# vi /.vimrc
把其中的:
set backup " keep a backup file
修改为:
set nobackup " keep a backup file
# vi /etc/hosts
加一条记录:
192.168.0.15 win2k
GCC工具:
# gzip -d libiconv-1.8-sol9-intel-local.gz
# gzip -d gcc-3.3.2-sol9-intel-local.gz
# pkgadd -d libiconv-1.8-sol9-intel-local
# pkgadd -d gcc-3.3.2-sol9-intel-local
MAKE工具:
# gzip -d make-3.80-sol9-intel-local.gz
# gzip -d automake-1.7.2-sol9-intel-local.gz
# pkgadd -d make-3.80-sol9-intel-local
# pkgadd -d automake-1.7.2-sol9-intel-local
MOZILLA:
# pkgrm SUNWnsb SUNWnsm SUNWnspsm SUNWnsxp
# gzip -d mozilla-i386-pc-solaris2.8-1.6.pkg.tar.gz
# tar -vxf mozilla-i386-pc-solaris2.8-1.6.pkg.tar
# cd mozilla-1.6-x86
# pkgadd -d MOZmozilla.pkg
# gzip -d flash_player_6_solaris_intel.tar.gz
# tar vxf flash_player_6_solaris_intel.tar
# cd install_flash_player_6_solaris
# cp * /usr/local/lib/mozilla-1.6/plugins
# cd /usr/local/lib/mozilla-1.6/plugins
# ln –s /usr/j2se/jre/plugin/i386/ns610/libjavaplugin_oji.so
# /usr/local/bin/mozilla
OTHERS:
# pkgadd -d expat-1.95.5-sol9-intel-local
# pkgadd -d gdbm-1.8.3-sol9-intel-local
# pkgadd -d openssl-0.9.7d-sol9-intel-local
# pkgadd -d libgcc-3.3-sol9-intel-local
# pkgadd -d libpcap-0.8.1-sol9-intel-local
# pkgadd -d tcp_wrappers-7.6-sol9-intel-local
# pkgadd -d tcpdump-3.8.1-sol9-intel-local
# pkgadd -d zlib-1.2.1-sol9-intel-local
# pkgadd -d lsof-4.68-sol9-intel-local
6.安装APACHE-2.0.49
# pkgrm SUNWapchd SUNWapchr SUNWapchu
# gzip -d apache-2.0.49-sol9-intel-local.gz
# pkgadd -d apache-2.0.49-sol9-intel-local
# cp /usr/local/apache2/bin/apachectl /etc/rc3.d/S50apache
# chmod 744 /etc/rc3.d/S50apache
# chown root:sys /etc/rc3.d/S50apache
# 配置/usr/local/apache2/conf/httpd.conf过程略。
# SMCapach2
7.安装OPENSSH-3.8
# pkgrm SUNWsshcu SUNWsshdr SUNWsshdu SUNWsshr SUNWsshu
# gzip -d openssh-3.8p1-sol9-intel-local.gz
# pkgadd -d openssh-3.8p1-sol9-intel-local
# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
# groupadd sshd
# useradd -g sshd -c "arthur sshd privsep" -d /var/empty -s /bin/false sshd
# ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
# ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
# ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
# vi /etc/init.d/sshd
===========================sshd============================
#!/sbin/sh
#
# Copyright (c) 2001 by Sun Microsystems, Inc
# All rights reserved.
#
#ident "@(#)sshd 1.1 01/09/24 SMI"
case "$1" in
start)
/usr/local/sbin/sshd
;;
stop)
pkill sshd
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
===========================sshd============================
# chmod 750 /etc/init.d/sshd
# chown root:sys /etc/init.d/sshd
# ln –s /etc/init.d/sshd /etc/rc2.d/S98sshd
# vi /etc/hosts.deny
sshd:ALL
# vi /etc/hosts.allow
sshd:192.168.0.15
# rm /.ssh/*
8.安装SAMBA-3
# cp /etc/rc3.d/S90samba bak.S90samba
# pkgrm SUNWsmbac SUNWsmbar SUNWsmbau
# gzip -d samba-3.0.2a-sol9-intel-local.gz
# gzip -d popt-1.7-sol9-intel-local.gz
# pkgadd -d popt-1.7-sol9-intel-local
# pkgadd -d samba-3.0.2a-sol9-intel-local
# cd /usr/local/samba/doc/samba/examples/
# cp smb.conf.default /usr/local/samba/lib/smb.conf
# 设置smb.conf文件过程略
# mv /etc/rc3.d/bak.S90samba S90samba
# chown root:sys /etc/rc3.d/S90samba
# vim /etc/rc3.d/S90samba
=======================S90samba========================
#!/sbin/sh
#
# Copyright (c) 2001 by Sun Microsystems, Inc
# All rights reserved.
#
#ident "@(#)samba 1.1 01/09/24 SMI"
case "$1" in
start)
[ -f /usr/local/samba/lib/smb.conf ] || exit 0
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
;;
stop)
pkill smbd
pkill nmbd
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
=======================S90samba========================
9.初步的系统安全设置
为安全起见在/etc/inetd.conf中注释掉除下列服务的所有服务
ftp
echo
echo
discard
discard
rstatd/2-4
fs
100083/1
在只需要不多图形操作的服务器或是要保证相当的安全,你也许应该关掉字体服务fs,也可以关掉系统性能监视器rstatd和tooltalk服务器ttdbserverd(100083/1),查找剩下需要关闭的端口的进程用这个命令:
# /usr/local/bin/lsof -i | grep port
为安全起见在防止堆栈溢出
# cp /etc/system /etc/system.BACKUP
# vi /etc/system
在文件的最后,加上以下两行:
set noexec_user_stack=1
set noexec_user_stack_log=1
禁用自动启动DESKTOP
# /usr/dt/bin/dtconfig –d
为安全起见停掉几个系统服务:
卸载SENDMAIL:
# pkgrm SUNWsndmr SUNWsndmu
卸载TELNET:
# pkgrm SUNWtnetc SUNWtnetd SUNWtnetr
# cd /etc/rc2.d
# mv S71ldap.client _S71ldap.client
# mv S72inetsvc _S72inetsvc
# mv S74autofs _S74autofs
# mv S74xntpd _S74xntpd
# mv S80lp _S80lp
# mv S71rpc _S71rpc
# mv S73nfs.client _S73nfs.client
# cd /etc/rc3.d
# mv S34dhcp _S34dhcp
# mv S15nfs.server _S15nfs.server
# mv S76snmpdx _S76snmpdx
卸载PCMCIA支持:
# pkgrm SUNWpcelx SUNWpcmci SUNWpcmcu SUNWpcmem SUNWpcser SUNWpsdpr
安装PORT扫描工具NMAP
# gzip -d nmap-3.50-sol9-intel-local.gz
# gzip -d pcre-4.5-sol9-intel-local.gz
# pkgadd -d nmap-3.50-sol9-intel-local
# pkgadd -d pcre-4.5-sol9-intel-local
扫描本机端口:
# nmap -P0 -sT localhost
安装网络漏洞扫描工具NESSUS:
# gzip -d nessus-2.0.9-sol9-intel-local.gz
# pkgadd -d nessus-2.0.9-sol9-intel-local
建立SSL证书:
# nessus-mkcert
添加NESSUS用户:
# nessus-adduser
以ROOT启动NESSUS服务器:
# nessus –D
启动NESSUS的GUI客户端:
# nessus