发新话题
打印

Solaris 10 安装及SVC管理及X及Vmware及一些问题

Solaris 10 安装及SVC管理及X及Vmware及一些问题
说明:虽然这篇文章存在若干谬误,但是仍不失一篇好文,如果有时间的话,我会写一篇关于SMF的东西。

先说一下安装

准备
Solaris 10我下载的是DVD正式版,包含6个>=420M的zip分包。
安装媒体的DVD iso需要先把6个zip包解包,然后合并成一个单独的ISO文件,然后刻录为DVD
或使用虚拟光驱安装。
C:> unzip *.zip
C:> copy /B sxxxxx-a+sxxxxx-b+......e solaris10.iso
在windows下可以用copy /B a+b+c...e solaris.iso的命令把各部分合并;如果在
Unix下则是cat *[a-e] >>solaris.iso 。
注意这个过程必须在支持>2G文件的文件系统分区上执行,例如大多数的现代Unix,以及使用
NTFS的Windows 2000等。


安装
我是在Vmware GSX 3.1下测试安装的,和以前一样,选定Guest OS: Solaris 10(exp),
设定网络为Bridge模式,12G IDE VirtualDisk。

安装引导过程和以前基本类似,在进入安装程序加载时多了几个选择,除了Interactive之外
还有Text模式的Interactive安装,这避免了以前很可能遇到的一个变态问题--就是假如你的
显卡不在Solaris支持之列的话,将无法或很难完成安装过程,或者只能忍受640x480分辨率的
折磨。

选择Interactive继续,之后系统会自动开始硬件检测;在Solaris 10种不但能够检测单独的
硬件信息,还根据厂商的OEM体系,内置了一系列的硬件profile,这就意味着,假如你的服务
器是某大厂的畅销产品的话,那么一整套硬件都会得到系统完整的支持,这其中也包含Vmware
虚拟的硬件体系。

检测完成后,按照现在默认的Interactive模式将会进入图形界面,之后的安装过程都会在一个
X-Window终端窗口中完成,当然,步骤和以前还是一样的。依次是:
网络设定
主机信息设定
软件发布选择
分区
开始安装。


安装进行时
现在,Solaris 10内置了一大堆乱七八糟的东西,Sun的,Gnu的,Linux的支持环境的,以及
各种老的新的兼容的杂烩软件,所以完全安装已经膨胀到了3.8G左右,加上components组件将
更大;最小化安装也有800M之多;大家自己看着办吧。


一点Tips: Solaris 10是越来越大,包含的东西也越来越多,很多命令都放在了不同的目录中,
为了方便使用,安装完成后可以先进行一下系统命令查找路径的初始化设定,修改/etc/profile
文件,在最后添加上如下两行,例如我的:
PATH=/sbin:/usr/sbin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/X11/bin:\
/usr/X11R6/bin:/usr/dt/bin:/usr/openwin/bin:/usr/sfw/bin:/usr/net/bin:\
/usr/proc/bin:/usr/local/sbin:/usr/local/bin
export PATH
也算是包含了大多数常用命令的路径吧。


初始化设定
接下来就让我进入了好半天摸不着头脑的部分了。
Solaris 10中系统管理部分引入了最变态的新特性之一 -- SVC管理模式。Solaris 10几乎
完全摒弃了原来传统的SVR4 Runlevel进程服务模式,而使用了新的SVC模式进行管理,有点
类似AIX的Sub-System和Sub-Service。在SMF中,把各项系统服务进程分成一系列组,然后
通过一套全新的svc系列命令进行管理,用起来非常得不爽,老管理员们估计会很痛苦一段时间。

在现在的Solaris 10环境下,刚完成安装你将什么都看不到 -- 没有Telnet,没有ssh...
假如在Vmware下安装,由于一个莫名其妙的bug?你还将没有X-Window。我刚进入系统时,还
以为安装过程出了什么错,导致系统初始化进入single-user mode,然后看了下/etc/rc*.d
东西少得可怜,连sshd都没有...再看看/etc/inittab,竟然只有三四行内容...害得我差点
就马上重装一遍......

后来决定,还是先把X-Window和ssh弄好再说。


先看看SSH的问题。

先看看ssh的问题。新安装完成进入系统之后,我还以为是到了单用户模式下,who -r一看发现
确实是在init 3。再一看系统中,除了rpc(tcp:111)什么服务都没有开,没有X-Window没有
telnet没有ssh没有inetd,这是Solaris 么?我几乎要怀疑Sun是不是改变了他的系统初装策
略,要培养一下广大SA们的动手能力。没有sshd,传文件多不方便,于是我只好手工把sshd翻
出来启动... 说到这里我又想骂... btbt的Solaris 10,sshd竟然不在标准目录下,而是放
在了/usr/lib/ssh/sshd下,害得我还find /usr -name sshd -print了一下才找到。
然后启动sshd:
========================================================================
# svcadm enable -t svc:/network/ssh
========================================================================
竟然不成功!

我只好更原始一点:
========================================================================
# /lib/svc/method/sshd start
========================================================================

这下倒是启动起来了,可是不久之后我发现,无论如何系统启动时ssh是不会自动运行的!其他
的几乎所有系统服务也一样;问题根源在哪儿呢?我只好回到eeprom启动模式下:
========================================================================
boot -m verbose
========================================================================

开启内核引导过程的冗余模式,这样会显示出启动过程中的更多信息;这时我发现,这些系统
服务并不是没有启动,而是启动过程中失败了。
再运行一次服务诊断命令:
========================================================================
# svcs -x -v
========================================================================

这下问题全都暴露出来了,原来是因为我新装的系统中没有建立系统DNS解析配置文件/etc/resolv.conf
导致系统dns client服务启动失败,而dns client则是许多服务的依赖前置服务,包括inetd、
sshd、sendmail等几乎所有的网络服务,如果它启动失败则整个服务树中后继的一系列服务都将
无法自动运行!然后inetd则影响则gss-api等一系列服务,而gss-api这个服务又影响了十多个
后继服务。最后因为一个小小的疏漏--没有手工建立/etc/resolv.conf文件,就导致整个Solaris 10
系统中的所有网络服务启动失败。(Solaris 2系列历史上遗留下来的毛病,即安装过程中你可以
指定 DNS服务器 和 默认路由,但他不会自动保存。必须在安装完成系统之后手工建立和设定
/etc/resolv.conf 和 /etc/defaultrouter 两个文件)

发现原因,问题就好解决,首先建立缺少的文件,然后依次按照dependent树启用一系列服务。
========================================================================
# echo "202.96.209.6">/etc/resolv.conf
# svcadm enable -t svc:/network/dns/client
# svcadm enable -t svc:/network/inetd
# sync && reboot
========================================================================


几条小tips:
1. Solaris 10启动过程中不会在控制台上显示太多信息,可以在eeprom或boot模式下输入
boot -m verbose来开启冗余信息模式,对于系统错误诊断有很大帮助。

2. 如果你的系统安装时选择的是中文环境的话,那么安装完成后,在终端(非X-Window)环境
下可能所有的命令提示和输出信息都是乱码,那么可以用如下命令回到英文的环境:
$ LANG=""
$ export LANG
以上为默认的ksh

% setenv LANG zh
以上为csh

$ LANG=""
以上为bash

3. Solaris 10中采用了新的SMF体系来控制系统服务和守护进程,比原来的SVR4 RC要复杂
多了:_< 类似AIX和Windows NT的体系。 很多原来的rc脚本现在都由SMF/SVC来控制。
SMF的基本体系:
管理命令 svcadm(服务状态管理,启动、停止等)
svcs(服务信息和诊断)
svccfg(服务参数配置)
配置文件 在/etc/svc目录下,似乎使用了sqllite数据库格式,因此只能用svccfg命令
管理
启动 在/etc/inittab中,启动smf::sysinit:/lib/svc/bin/svc.startd一行
然后由svc.startd来替代原来init和rc所作的一系列工作
一些启动脚本 在/lib/svc/method目录下,替代了部分/etc/rc*.d中的启动脚本作用
也可以直接手工运行这些脚本来强制启动某个服务(不根据依赖树关系)
关于SMF,也许过几天再写一篇文章来详细讲一下他的体系吧。

4. 一条有用的命令
# svcs -x -v
可以检查当前系统中的服务状况,并自动诊断出服务出错的原因。

5. 一些可以代替以前/etc/rc*.d/S**的命令:
# svcs
查看当前所有的服务状态,可以使用|管道符重定向作更个性化的查找;如
# svcs |grep online 查看当前运行服务
# svcs |grep offline 查看当前停止服务
# svcs |grep inetd 查看inetd服务状态

# svcadmin enable svc:network/finger
启用一个服务,本例是finger,在原来的rc体系中相当于配置/etc/inetd.conf开启finger

#svcadm disable svc:network/ssh
仅用一个服务,本例中是禁用sshd服务,在原来的rc体系中相当于执行了
mv /etc/rc2.d/S55sshd /etc/rc2.d/x.S55sshd

如果要立刻停止或启动服务,那么可以使用svcadm的-t参数:
# svcadm disable -t network/ssh
停止sshd服务,相当于 /etc/init.d/sshd stop
# svcadm enable -t network/ssh
启动sshd服务,相当于 /etc/init.d/sshd start
# svcadm restart network/ssh
重启(停止并启动)sshd服务,相当于 /etc/init.d/sshd stop; /etc/init.d/sshd start
# svcadm refresh network/ssh
刷新sshd(重新读取配置文件),相当于 kill -HUP `cat /var/run/sshd.pid`

6. Solaris 10默认安装配置下是不允许root用户远程通过ssh登录的,这样也许不太方便,那么
可以修改 /etc/ssh/sshd_config 文件中 PermitRootLogin no 一行为yes,然后重新
启动sshd服务。

7. 最后,现在大家安装完成Solaris 10之后,可千万不要在忘记手工建立:
/etc/resolv.conf 和 /etc/defaultrouter
了,现在的后果可不像以前仅仅不能解析DNS那么简单:_< 该死的SMF。


解决了网络服务和sshd的问题,再来看看X-Window和Dtlogin吧。

开始安装过程中,系统是能够很好的识别Vmware的虚拟硬件,并且支持到1024x760x24bpp的
分辨率的,但是安装完成之后,使用kdmconfig配置Xsun,无论如何都无法正常地运行X-window
dtlogin的窗口总是一闪而过,而手工运行X却正常,直到现在仍然让我困惑的问题。所幸的是,
在Solaris 10当前的正式发布版本中,配置了老的Xsun和OpenSource的X.org两个X服务器,
那么我们可以试试看X.org。 在Vmware里使用Xorg和Xorg -configure也无法正常运行。
查找资料发现Solaris 10中所带的Xorg版本应该是可以支持Vmware的,经过一番测试,
配置过程如下:

0、执行/usr/X11/bin/xorgconfig开始字符界面的Xorg Server配置;
========================================================================
# /usr/X11/bin/xorgconfig
========================================================================
1、如下屏幕,回车确定;
========================================================================
This program will create a basic xorg.conf file, based on menu selections
you make. This program will ask for a pathname when it is ready to write
the file.

The xorg.conf file usually resides in /etc/X11. If no xorg.conf file
is present there, Xorg will probe the system to autoconfigure itself.
You can run Xorg -configure to generate a xorg.conf file based on
the results of autoconfiguration, or let this program produce a base
xorg.conf file for your configuration and fine-tune it.

Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card, as well as the specifications of your monitor.

Press enter to continue, or ctrl-c to abort.
========================================================================
2、选择鼠标,1或5都可以;
========================================================================
First specify a mouse protocol type. Choose one from the following list:

1. Auto
2. VUID
3. SysMouse
4. MouseSystems
5. PS/2
6. Microsoft
7. Busmouse
8. IMPS/2
9. ExplorerPS/2
10. GlidePointPS/2
11. MouseManPlusPS/2
12. NetMousePS/2
13. NetScrollPS/2
14. ThinkingMousePS/2

The recommended protocol is Auto. If you have a very old mouse
or don't want OS support or auto detection, and you have a two-button
or three-button serial mouse, it is most likely of type Microsoft.

Enter a protocol number:
========================================================================
2.1、是否模拟三键鼠标,是;
========================================================================
If your mouse has only two buttons, it is recommended that you enable
Emulate3Buttons.

Please answer the following question with either 'y' or 'n'.
========================================================================
2.2、选择鼠标设备,回车使用默认的/dev/mouse(或/dev/kdmouse);
========================================================================
Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.

Mouse device:
========================================================================
3、选择键盘设备,5678均可,建议选7;
========================================================================
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

1 Sun Type 6 USB
2 Sun Type 6 USB (European layout)
3 Sun Type 6 USB (Japanese layout)
4 Sun Type 6 USB (Unix layout)
5 Generic 101-key PC
6 Generic 102-key (Intl) PC
7 Generic 104-key PC
8 Generic 105-key (Intl) PC
9 Sun Type 4
10 Sun Type 4 (Canadian layout)
11 Sun Type 4 (Japanese layout)
12 Sun Type 4 (European layout)
13 Sun Type 5
14 Sun Type 5 (European layout)
15 Sun Type 5 (Japanese layout)
16 Sun Type 5 (Unix layout)

Enter a number to choose the keyboard.

Press enter for the next page
========================================================================
3.1、选择键盘布局,选1;
========================================================================
1 U.S. English
2 U.S. English w/ ISO9995-3
3 U.S. English w/ deadkeys
4 Albanian
5 Arabic
6 Armenian
7 Azerbaijani
8 Belarusian
9 Belgian
10 Bengali
11 Bosnian
12 Brazilian
13 Bulgarian
14 Burmese
15 Canadian
16 French Canadian
17 Croatian
18 Croatian (US)

Enter a number to choose the country.
Press enter for the next page
========================================================================
3.2、回车确认;
========================================================================
Please enter a variant name for 'us' layout. Or just press enter
for default variant
========================================================================
3.3、是否使用XKB管理键盘输入,建议选是;
========================================================================
Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)?

Enter your choice:
========================================================================
4、显示器(Monitor)设置,回车继续;
========================================================================
Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
the whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11/share/doc/Monitors to see if your monitor is there.

Press enter to continue, or ctrl-c to abort.
========================================================================
4.1、选择显示器类型,(800x600建议选2,1024x768建议选6-7);
========================================================================
You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.

It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

hsync in kHz; monitor type with characteristic modes
1 31.5; Standard VGA, 640x480 @ 60 Hz
2 31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
3 31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
4 31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
5 31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
6 31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
7 31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
8 31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
9 31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10 31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11 Enter your own horizontal sync range

Enter your choice:
========================================================================
4.2、选择显示器刷新频率,建议选2;
========================================================================
You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

1 50-70
2 50-90
3 50-100
4 40-150
5 Enter your own vertical sync range

Enter your choice:
========================================================================
5、选择显卡类型,输入一个描述符,可以直接回车继续;
========================================================================
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition:
========================================================================
5.1、是否查看显卡模块数据库选择一个合适的模块,是(输入yes);
========================================================================
Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

Do you want to look at the card database?
========================================================================
5.2、回车到第二页,找到Vmware一项,或直接输入对应序号 "29" ;
========================================================================
18 ** NVIDIA (generic) [nv] -
19 ** NeoMagic (generic) [neomagic] -
20 ** Number Nine I128 (generic) [i128] -
21 ** Rendition (generic) [rendition] -
22 ** S3 (not ViRGE or Savage) (generic) [s3] -
23 ** S3 Savage (generic) [savage] -
24 ** S3 ViRGE (generic) [s3virge] -
25 ** SiS (generic) [sis] -
26 ** Silicon Motion (generic) [siliconmotion]-
27 ** Trident (generic) [trident] -
28 ** Tseng Labs (generic) [tseng] -
29 ** VMWare guest OS (generic) [vmware] -
30 2 the Max MAXColor S3 Trio64V+ -
31 2-the-Max MAXColor 6000 ET6000
32 3DLabs Oxygen GMX PERMEDIA 2
33 928Movie S3 928
34 AGX (generic) AGX-014/15/16
35 ALG-5434(E) CL-GD5434
========================================================================
5.3、确认选择的Xorg显示驱动模块"Vmware",直接回车继续;
========================================================================
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

Your selected card definition:

Identifier: ** VMWare guest OS (generic) [vmware]
Chipset: -
Driver: vmware

Press enter to continue, or ctrl-c to abort.
========================================================================
5.4、再次要求输入显卡描述符(将记录在配置文件中),输入"vmware";
========================================================================
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is ** VMWare guest OS (generic) [vmware].

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:
========================================================================
5.5、选择显存大小,任意(测试1\5\6均可);
========================================================================
Now you must give information about your video card. This will be used for
the "Device" section of your video card in xorg.conf.

It is probably a good idea to use the same approximate amount as that detected
by the server you intend to use. If you encounter problems that are due to the
used server not supporting the amount memory you have, specify the maximum
amount supported by the server.

How much video memory do you have on your video card:

1 256K
2 512K
3 1024K
4 2048K
5 4096K
6 8192K
7 16384K
8 32768K
9 65536K
10 131072K
11 262144K
12 Other

Enter your choice:
========================================================================
6、配置显示分辨率模式段,Xorg允许指定一个色彩模式下的多种分辨率,并在运行时自动匹配;
默认设置如下面显示的,如果不想使用那么大的分辨率必须手工设定分辨率模式;例如希望使用
800x600x24bpp,则需选择"3",配置24-Bit模式下的期望分辨率;
========================================================================
For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"1280x1024" "1024x768" "800x600" "640x480" for 8-bit
"1280x1024" "1024x768" "800x600" "640x480" for 16-bit
"1280x1024" "1024x768" "800x600" "640x480" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.

Enter your choice: 3
========================================================================
6.1、选择对应色彩模式下的分辨率,可以使用多个数字一次选择,则自动匹配分辨率时会根据
硬件情况由最前面的往后依次测试选择最合适的分辨率;如例中选择"432",则默认分辨率为
1024x768,不成功则自动匹配800x600... 推荐选择固定值"3"或"4";
========================================================================
Select modes from the following list:

1 "640x400"
2 "640x480"
3 "800x600"
4 "1024x768"
5 "1280x1024"
6 "320x200"
7 "320x240"
8 "400x300"
9 "1152x864"
a "1600x1200"
b "1800x1400"
c "512x384"
d "1400x1050"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? 3
========================================================================
6.2、X允许使用大于真实分辨率的虚拟桌面,使用鼠标在边缘平移来滚动桌面,建议选否 "n";
========================================================================
You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen

Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n
========================================================================
6.3、依次选取各显示模式的分辨率后,选择"4"确认;
========================================================================
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.

Enter your choice: 4
========================================================================
6.4、选择默认的色彩深度,根据我们期望的显示模式,选择 "5",24Bit显示;
========================================================================
Please specify which color depth you want to use by default:

1 1 bit (monochrome)
2 4 bits (16 colors)
3 8 bits (256 colors)
4 16 bits (65536 colors)
5 24 bits (16 million colors)

Enter a number to choose the default depth.
========================================================================
7、"y"保存。(如果不想直接保存到系统配置文件,可以选择"n"然后在下一步中保存到其它路径。)
========================================================================
I am going to write the xorg.conf file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/xorg.conf? y
========================================================================
8、重新启动系统,或直接启动图形界面。
========================================================================
# sync && reboot

or

# /etc/rc2.d/S99dtlogin stop && /etc/rc2.d/S99dtlogin start
========================================================================

一点Tips:

虽然Solaris 10的dtlogin换了新look--有点像gdm,但是Linux的手用万足们一样可以用gdm
来彻底替换掉他,比较dirty的方法,只要修改/etc/rc2.d/S99dtlogin中的如下行:
if [ -x /usr/dt/bin/dtlogin ] ; then
/usr/dt/bin/dtlogin -daemon &
fi
;;
把/usr/dt/bin/dtlogin -daemon & 改为/usr/bin/gdm & 就可以自动运行gdm了。
当然,要完全一点最好还是手工写一个rc脚本,来替换dtlogin这个。

另外,dtlogin默认是可以远程xdmcp登录的,而gdm出于安全原因考虑默认则不允许远程登录,
可以修改/etc/X11/gdm/gdm.conf文件中的
#Port=177
一行,取消掉#注释,然后重新启动gdm即可。

TOP

发新话题