关闭

Solaris中文FAQ

标签: solarissuninterfacewindowslinuxaudio
22653人阅读 评论(1) 收藏 举报
分类:
最近花了一些时间在写Solaris中文FAQ,现在补充的差不多,总共有60多条,涵盖了新手以及一些我们常见的问题。基本上我的补充告了一个段落,复制一份在此,作为一个milestone。

首先感谢oliver, 他先开始了这个项目,并是主要的创作者。用wiki的方式来维护FAQ,非常合适,一个很好点子。同时也欢迎大家一同创作,和大家分享使用Solaris的经验和技巧。




OpenSolaris/Solaris中文FAQ

Wikipedia,自由的百科全书

维护者: oliver laoeyu 


本文来自: OpenSolaris中国社区

URL: Solaris中文FAQ

声明: 本文可自由拷贝、分发、修改及再创作;

任何问题/回答/建议/勘误请mail至讨论组以帮助和回馈社区;

讨论组: opensolaris-chinese-faq AT googlegroups.com

注:

  1. 本文档只覆盖Solaris 9及以后的平台上的常见问题
  2. S9/10/11 分别对应目前Solaris的发行版本9/10/11
  3. x86/x32/x64/Sparc 分别对应x86包括32和64位/IA32专有/AMD64或EMT64位专有/Sparc等特定平台


目录

[隐藏]

一般讨论

OpenSolaris和Solaris的区别?

简单说,所以OpenSolaris是一个的开源项目,而Solaris是Sun公司的基于OpenSolaris推出的一个自己的产品。

Solaris和OpenSolaris的关系和Redhat和Linux的是类似的。

OpenSolaris是一个开源项目包括了以CDDL为License的OpenSolaris代码,OpenSolaris开发组织, 还有OpenSolaris网站。 而Solaris操作系统是Sun公司的一个产品,Solaris从Solaris 10(2005)后的以后版本都将基于OpenSolaris的代码和技术。Solaris也是免费下载,Sun公司提供相应的service packages和regular updates。

Solaris有那些主要版本?

Solaris最新正式版本是10。以前的还有2.5/2.6/7/8/9等。

类似于Windows的Service pack,Sun还会定期推出基于主板本之上的Update版本。例如,Solaris 10的第一个Update版本是Solaris 10 update 1。

Solaris按支持平台可分为x86和Sparc版本,其中x86版本支持32位和64位。Sparc也有32(较早的机器)和64位之分。

Sun公司还推出Solaris Enterprise System。Solaris Enterprise System是一个免费企业级解决方案套件:除了包含Solaris 10,还有Java Enterprise System,开发工具(Sun Studio, Netbeans, Sun Java Studio Creator, Sun Java Studio Enterprise), 桌面软件和N1管理软件。

目前Solaris开发版本是11,项目代号是Nevada,(美国西部内陆州-内华达州)。

每月5号,Sun会发布一个当前Solaris开发版本叫做Solaris Express。目前的Solaris Express来自于Solaris 11最新的较稳定的版本,其中包含了Solaris最新的功能和特性。该产品主要针对合作伙伴、开发者和希望使用最新技术的用户。Sun公司也对该产品提 供一定支持。

Solaris Nevada的核心部分,ON(即OS&Network)和JDS(Java Desktop System)也作为OpenSolaris开放,目前OpenSolaris和Nevada的代码保持同步。

OpenSolaris也出现了很多衍生版本,如PolarisNexentaSchillixBelenix。其中Polaris已经支持了IBM的PowerPC平台。

Sun OS和Solaris有什么区别?

简单得说,Sun OS是Solaris的其中一个部分。
Solaris是SOE - Solaris Operating Environment的缩写,它包括以下主要部件:

1.SunOS - 系统内核 (版本号是5.x)
2.Windowing - 桌面环境JDS/CDE

OpenSolaris的版本有哪些?

OpenSolaris出现了很多衍生版本,如PolarisNexentaSchillixBelenix。其中Polaris已经支持了IBM的PowerPC平台。

OpenSolaris是GPL的吗?

OpenSolaris和GNU/Linux不同,它是以CDDL License发布的。
CDDL是一种新的Open Source的License,与GPL相比,它的条款更宽松,更具有优越性。
关于CDDL的细节,你可以访问:CDDL License FAQ

学习OpenSolaris/Solaris有哪些可用的资源?

OpenSolaris中文wiki社区有专门的文档项目来收录OpenSolaris学习和研究的相关资源:

http://wiki.gceclub.sun.com.cn/index.php/Opensolaris_resource

系统安装

如何得到和安装Solaris?

Sun的官方站点提供Solaris 10 免费下载,有DVD和CD格式:http://www.sun.com/software/solaris/get.jsp (服务器在国外), 需要Sun Online Account账号(免费注册)。

Sun的中国技术社区gceclub也提供Solaris 10 免费下载http://gceclub.sun.com.cn/download.html (服务器在国内),需要gceclub Account账号(免费注册)。

安装方法参考这个网页http://blog.gceclub.sun.com.cn/index.php?op=ViewArticle&articleId=121&blogId=4 你可以选择中文安装。

安装Solaris对硬件有什么要求?

Solaris 10的对硬件配置最低标准是:

256MB的内存 (如果使用PXE启动,需要512MB)

2G的硬盘空间

120MHZ的X86(X64)的芯片或者250MHZ的SPARC芯片

DVD或者CD-ROM驱动器


安装Solaris X86不能识别网卡怎么办?

1.确认你的网卡型号,从而得到网卡的vendor id:

主板/硬件手册或者windows设备管理器都能得到设备的厂商名称,然后到PCI设备的数据库去搜索相应的vendor id。

推荐站点:http://pci-ids.ucw.cz

2.通过vendorid确认网卡的devide id:

# prtconf -vp | grep <网卡的vendor id>

得到可能的devideid后到PCI设备的数据库得到准确的设备型号。

推荐站点:http://pci-ids.ucw.cz/


3.确认vendorid和deviceid后,尝试Solaris系统自带的驱动

寻找和系统内和自己device id近似的驱动名:

# grep vendorid /etc/driver_aliases

需要确认设备的厂商和型号是否与找到的驱动相近,可以再次利用PCI设备的数据库。

如果可以确认,可以尝试加载该驱动:

# devfsadm
# add_drv -i '"vendorid,deviceid"' <驱动名>


4.寻找其它网卡驱动

1) 第三方网卡驱动列表:http://homepage2.nifty.com/mrym3/taiyodo/eng/index.htm
2)HCL的network列表:http://www.sun.com/bigadmin/hcl/data/sol/
3) 网卡厂家的网站。例如,Broadcom的网站就有其Solaris平台的驱动下载
4) Solaris x86驱动的资源:http://solaris-x86.org/software/drivers/
5)Sun DryDog参考:http://www.sun.drydog.com/faq/6.html#6.7
6) Google
7) 发邮件到OpenSolaris社区求助,最好提供prtconf -vp的输出和具体网卡型号

安装Solaris X86不能识别声卡怎么办?

1.确定你的声卡型号:通过主板/硬件手册或者windows设备管理器。

2.Solaris10目前支持audioi810和audiovia823x:

audioi810:主板集成AC97的音频控制器,包括Intel ICH/ICH0/ICH2/ICH4/ICH5芯片组(i810/i815/i845e/i850/i855pm/i865/440mx)或者兼容芯片 组(nVidia nForce MCP, SiS7012, AMD-768, AMD-8111).

audiovia823x:主板集成AC97音频控制器,包括VIA芯片组(VT8233/VT8235,Apollo KT266/ KT266A, Apollo Pro266/ Pro266T).

目前可自动识别的vendorid,deviceid如下:

# grep audio810 /etc/driver_aliases
audio810 "pci1022,746d"
audio810 "pci8086,2485"
audio810 "pci8086,24c5"
audio810 "pci8086,24d5"
audio810 "pci8086,266e"
audio810 "pci10de,6a"
audio810 "pci10de,da"
audio810 "pci10de,ea"
audio810 "pci10de,59"
# grep audiovia823x /etc/driver_aliases
audiovia823x "pci1106,3059"

如果你的声卡属于audioi810和audiovia823x类型,但是没有自动被识别出来,则可以通过prtconf -vp找到声卡的vendorid,deviceid,然后尝试以下命令:

# devfsadm
# add_drv -i '"vendorid,deviceid"' <audio810|audiovia823x>

3.寻找其它声卡驱动

如果不属于udioi810和audiovia823x,请查看第三方驱动:

1) 第三方声卡驱动列表:http://www.tools.de/solaris/audio/beta/
2)HCL的声卡列表:http://www.sun.com/bigadmin/hcl/data/sol/
3) Solaris x86驱动的资源:http://solaris-x86.org/software/drivers/
4)Sun DryDog参考:http://www.sun.drydog.com/faq/6.html#6.7
5) Google
6) 发邮件到OpenSolaris社区求助,最好提供prtconf -vp的输出和具体网卡型号

如何让安装一个Solaris/Windows XP/Linux共存的操作系统?

1.安装Windows XP

2.安装Linux

安装完Linux后,Grub一般都会自动设置好启动选项,达到Windows和Linux双系统。 察看/boot/grub/menu.lst,找到启动Linux的几行配置,类似如下:

title           Ubuntu, kernel 2.6.12-10-386
root (hd0,1)
kernel /vmlinuz-2.6.12-10-386 root=/dev/hda3 ro quiet
initrd /initrd.img-2.6.12-10-386]]

记下这几行

3.安装Solaris 10 1/06 x86

Soalris 10 1/06也用grub引导,但安装好后自动的配置只有Solaris和Windows的选项,不能引Linux,需手工修改grub的配置文件。

4.修改grub的配置文件

进入Soalris系统,编辑/boot/grub/menu.lst,将第3步中记下的几行加入,保存。 重新启动,grub即可引导Solaris,Linux和WindowsXP。


参考于Multi-Booting the Solaris 10 OS, Linux, and Microsoft Windows on a Laptop

VMware 5.5版本上,Solaris安装停止在skipped interface pcn0就不动了?

[x86]: 大概是Solaris显卡检测的问题,引导的时候,安装方式那里选择文本方式安装即可。

安装后,显示分辨率太低,如何调整分辨率啊?

[X86] 可以使用kdmconfig. 如果你不熟悉Xorg的Xserver,你可以选择使用Xsun,接着该命令会引导你设置显卡,分辨率等。 Xorg的Xserver,就需要你另外配置xorg.conf或者通过使用xorgconfig命令来配置。

使用/管理/配置

Solaris下有PDF阅读器吗?

Solaris Express on sparc集成了Acrobat Reader,但是最新的Acrobat Reader目前不支持Solaris x86。

不过有一个4.05版 可以在Solaris x86上,看一般的PDF文档和中文都没有问题:

http://download.adobe.com/pub/adobe/acrobatreader/unix/4.x/sunx86-ar-405.tar.gz

http://download.adobe.com/pub/adobe/acrobatreader/unix/4.x/chsfont.tar.gz


Solaris有电子词典吗?

如果有SUNWstardict,就运行:

/usr/bin/stardict

更多中文词典:http://stardict.sourceforge.net/Dictionaries_zh_CN.php

如何查看OpenSolaris/Solaris的版本信息?

通常的“uname -a"命令就可以知道Solaris的版本:
想知道是哪一个Solaris Update版本,可以查看/etc/release文件。
对于曾经使用过Opensolaris的BFU升级的用户,应该查看/etc/motd文件。


如何查看系统内核是32位的还是64位的?

isainfo -b


如何查看系统中CPU的数目?

用psrinfo(1M)就可以查看。由于多内核/多线程技术的广泛采用,要查出物理CPU的数目可以使用-vp参数,例如:

# psrinfo -vp
The physical processor has 32 virtual processors (0-31)
UltraSPARC-T1 (cpuid 0 clock 1000 MHz)

UltraSPARC-T1的CPU共有8内核,每内核4个线程,因此如果单用-v参数看到的CPU数目是32个,而不是1个。


为什么不能在/home下创建目录?

Solaris的用户目录应该创建在/export/home下,不建议直接使用/home。

这是因为Solaris的/home目录是由automounter控制的,只有automounter可以在这个目录下创建文件。如果不 希望automounter管理/home目录,可以在删除/etc/auto_master文件中包含"/home"的那行,并且运行 automount -v让设置生效,当然reboot也可以。


如何查看solaris下安装了有几块硬盘?

format命令可以看有几块物理盘

Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,4000/scsi@3/sd@0,0
1. c0t1d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,4000/scsi@3/sd@1,0
2. c0t2d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,4000/scsi@3/sd@2,0
3. c0t3d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,4000/scsi@3/sd@3,0
4. c2t0d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@6,4000/scsi@4/sd@0,0
5. c2t1d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@6,4000/scsi@4/sd@1,0
6. c2t2d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@6,4000/scsi@4/sd@2,0
Specify disk (enter its number): 0
selecting c0t0d0
[disk formatted]

随便选一个盘 再按Q退出就可以了


如何在Solaris下使用USB存储设备?


[S11|S10]: Solaris可以自动检测并mount USB存储设备上的文件系统,在CDE和JDS下会自动在桌面上给出U盘的文件夹,不过要等一会儿,大概半分钟的时间不到。

如果系统没有自动识别,主要有以下2种情况:

1.较早版本的Solaris的vold不能立即检测热插拔,需要重新启动vold才可以识别:

将U盘插入USB口,再重新启动vold,vold会自动mount usb设备:

# /etc/init.d/volmgt stop
# /etc/init.d/volmgt start

/rmdisk/rmdisk0可能就是被mount上的U盘,如果不是,请依次检查/rmdisk/rmdisk1,/rmdisk/rmdisk2...

2.直接查询设备路径,mount该设备:

如果该USB设备已经存在文件系统,且Solaris支持该文件系统,可以直接mount该文件系统。 以FAT32文件系统为例,首先要了解USB设备的路径:

# rmformat
Looking for devices...
1. Logical Node: /dev/rdsk/c3t0d0p0
Physical Node: /pci@0,0/pci1028,151@1d,7/storage@4/disk@0,0
Connected Device: HTS42404 0M9AT00
Device Type: Removable

然后,直接mount该设备:

# mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt

卸载U盘前,需要确保该mount目录没有正在使用:

   # umount /mnt
# eject rmdisk0

或者,

   # umount /mnt
# eject /dev/rdsk/c3t0d0p0


如何察看Solaris系统的内存大小及使用情况?

[S9|S10|S11]: 看物理内存用prtconf,在x86和sparc都通用的:

   # prtconf -vp | grep Mem
Memory size: 2047 Megabytes

再有就是vmstat了:

   # vmstat 1

看vmstat的输出时,从第2行开始看,如果sr列数值比较大,就表明内存紧张。

Solaris 9开始,可以使用mdb来查看内存:

   # echo ::memstat | mdb -k

如需要看具体那个进程占用内存的情况可以使用:prstat -a 另外还有GNU的top命令(top需要从www.sunfreeware.com上下载安装)

[S8]:Solaris 8的mdb命令没有::memstat命令,需要从www.solarisinternals.com下载,然后运行如下命令装入::memstat:

   # mdb -k 
>::load memory
>::memstat

就可以看你真实的物理内存的占用情况了。


如何修改主机名?

新手可以使用sys-unconfig

也可以修改以下文件:

/etc/inet/hosts
/etc/hostname.xxx(xxx代表你的网卡的名称)
/etc/nodename
/etc/inet/ipnodes(ipv6协议使用的主机文件)

然后重新启动即可。


如何修改IP地址?

新手可以使用sys-unconfig

也可以修改以下文件:

/etc/hosts
/etc/hostname.xxx
/etc/defaultrouter(默认网关)
/etc/netmasks(掩码)

然后重新启动系统,或者用ifconfig 来添加临时的IP地址.用route add default xxx.xxx.xxx.xxx来添加临时的默认网关.


DNS客户端的设置

1. /etc/resolv.conf文件,用于记录DNS服务器的地址和域名

若文件不存在就创建一个新文件。

# vi /etc/resolv.conf
nameserver 192.168.2.1

2./etc/nsswitch.conf文件,用于记录主机名的搜索顺序等信息

找到hosts:起始的行,将其修改为:

vi /etc/nsswitch.conf
................
hosts: files dns


DHCP客户端设置

创建两个空文件,<interface>是网卡适配器的名字,这两个文件用于系统启动时自动启动dhcp。

# touch /etc/hostname.<interface>
# touch /etc/dhcp.<interface>

网卡适配器的名字的我们可以通过ifconfig -a 或者文件/etc/path_to_inst得到。 如果需要立即使用dhcp的话,可以执行一下命令:

# ifconfig <interface> dhcp start


网络配置生效的问题

配置项 临时使用重启失效 永久生效需要重启
主机名 hostname <new name>
不要在Window(CDE, JDS)界面中使用
/etc/nodename
/etc/hostname.<Interface>
/etc/inet/hosts
IP地址 ifconfig <Interface> plumb
ifconfig <Interface> <IP> up
/etc/inet/hosts
网络掩码 ifconfig <Interface> <netmask> up /etc/netmasks
Gateway网关 route add default <IP Gateway> /etc/defaultrouter
DHCP 客户端 ifconfig <Interface> plumb
ifconfig <Interface> dhcp start
touch /etc/hostname.<Interface>
touch /etc/dhcp.<Interface>

Solaris下如何修改mac地址?

用ifconfig 命令即可修改mac地址,假设接口名为nge0,要将mac地址修改为0:1:2:3:4:5,可以运行如下命令:

# ifconfig nge0 ether 0:1:2:3:4:5

Solaris下如何给机器添加一个新硬件?

[Sparc|X86]:添加好新硬件后,启动系统后,执行drvconfig或者devfsadm即可检测到新硬件。例如,添加新的硬盘,在硬盘加好后,执行一下drvconfig disks或者devfsadm。

另外,可以在关机或重启系统时,设置开机检测新硬件,然后关闭电源,再添加或更换硬件。

   # touch /reconfigure;init 0

任何时候,给重启命令制定-r选项,即可在启动时检测硬件。

   # reboot -- -r

第三方的设备是需要相应厂家的驱动程序,可以读设备的说明书进行安装.


[Sparc]:关掉电源添加SUN相应的设备后,启动时按住stop+A(SUN键盘),ctrl+break(PC键盘)进入OBP提示符ok下,然后boot -r
某些支持动态配置和热插拔的硬件的Sparc服务器,可以用cfgadm和devfsadm在不停机状态下增加硬件,详见手册。

[X86]:关掉电源添加相应的设备后,启动时输入b -r


忘记了root密码,如何解决?

[S10u1|S11]:新版本的Solaris系统采用grub作为引导程序,因此不需要光盘引导:

  1. 首先,在grub的菜单中选择fail safe的选项引导系统
  2. 引导后,系统会提问是否mount根分区到/a上,选择是
  3. 按照前面的方法编辑/a/etc/shadow文件,保存、重启系统。


[S9|S10]:用solaris的software1/2光盘引导系统,修改口令即可。

  • 首先要用光盘引导系统:
[X86]:x86没有OBP,只需要设置BIOS或者通过引导菜单,选择从CDROM上引导系统。
[Sparc]:任何时候通过Stop+a(SUN键盘)或者ctrl+break(PC键盘)进入到OBP提示符下输入:
   ok boot cdrom -s
  • 然后,mount根分区,打开shadow文件:
   mount /dev/dsk/c0t0d0s0 /mnt (这里假设你的硬盘上的/区是/dev/dsk/c0t0d0s0)
vi /mnt/etc/shadow
  • 最后,编辑shadow文件,把root用户的密码删除,保存文件、重新启动后,就不会有口令了。


使用FTP时,不能以root用户登录系统,应修改什么配置文件?

打开文件 /etc/ftpusers,如果有root,注释掉就可以了。


使用Telnet时,不能以root用户登录系统,应修改什么配置文件?

将/etc/default/login把CONSOLE=/dev/console该行注释掉,就可以用root远程telnet本机。


Solaris下如何修改网卡的传输模式呢?

用ndd /dev/hme /? 看到的link_mode是只读的不能修改.但是可以观看. ndd -get /dev/hme link_mode 1 = Full Duplex (FDX) 0 = Half Duplex (HDX)


如何使用串口做系统控制台?


/目录的空间满了,怎么扩容?

这个比较麻烦.如果没有引入卷管理方式的话,扩容/一般认为不能这样做. 因为在分配柱面的地址没有办法做到. SDS上增加可以用growfs veritas上:vxresize 或者vxassist


Solaris如何设置ADSL拨号上网?

一、系统基本设置

# touch /etc/ppp/pppoe.if        

重启系统后会创建拨号相关的文件

# touch /etc/gateways                

重启后会添加IP路由功能

# touch /etc/hostname.hme1        

重启后会添加上第二块网卡,该网卡如果已经添加,那么可省去此步。通过ifconfig -a可以查看该网卡是否启用。该网卡hme1是和adsl modem相连的网卡。

# echo "nameserver 202.96.134.133"  >; /etc/resolv.conf        

添加上离你最近的DNS服务器,重启生效,可以在此文件中添加多个DNS server。

# cp /etc/nsswitch.dns /etc/nsswitch.conf        

此步骤的目的是修改/etc/nsswitch.conf,当然直接改动/etc/nsswitch.conf。

二、PPPOE基本设置

确认系统中已经安装上如下的软件:

SUNWpppd - Solaris PPP Device Drivers
SUNWpppdr - Solaris PPP configuration files
SUNWpppdt - Solaris PPP Tunneling
SUNWpppdu - Solaris PPP daemon and utilities
SUNWpppdx - Solaris PPP 64-bit (ONLY needed for SPARC's with 64-bit kernels)

如果没有,那么从solaris的第二张安装光盘盘中进行补装。有两个ppp的大软件包,选上即可。

# reboot -- -r

重新进入系统之后,going on.......

# ls /dev | grep ppp           确认存在sppp和sppptun
# grep sppp /etc/name_to_major
sppp 146
sppptun 147

编辑拨号配置文件

# vi /etc/ppp/peers/bohao        添加如下几行
sppptun
plugin pppoe.so
connect "/usr/lib/inet/pppoec hme1" #hme1是与MODEM相连的网卡
persist #自动重播
user "USERNAME" # username
noauth
noipdefault
noccp
novj
noaccomp
nopcomp
defaultroute

存盘退出 由于你的ISP需要对你进行密码验证,所以你还要编辑一下密码文件,但是ISP可能用到的文件是/etc/ppp/chap-secrets和/etc/ppp/pap-secrets 因此分别要到这两个文件中的最后一行中追加: username * password 我要提醒的是:上行中的字段之间是TAB键分割的,而不是空格。 到此为止,配置已经结束了,接下来就是拨号。 绑定网卡

# sppptun plumb pppoed hme1
# sppptun plumb pppoe hme1
# sppptun query 检查是否绑定成功
# /usr/lib/inet/pppoec -i hme1 探测与hme1相连的ISP网卡的MAC地址信息,主要是确保物理线路是否存在问题。
# /usr/bin/pppd call bohao bohao为/etc/ppp/peers的一个拨号配置文件。
# ifconfig -a 验证是否出现sppp0的网口,如果网络不畅,此处可能需要等一段时间。

可以把上述的操作简单的写成一个教本,开机自动执行。

# vi /etc/rc2.d/S48bohao        添加如下几行
sppptun plumb pppoed hme1
sppptun plumb pppoe hme1
/usr/bin/pppd call bohao

存盘退出

# chmod u+x /etc/rc2.d/S48bohao

到此,服务器的拨号设置告一段落。 (转自CU网友nimysun)


怎么让Solaris默认不启动X window?

关闭X window自动启动

# /usr/dt/bin/dtconfig -d

恢复X window自动启动

# /usr/dt/bin/dtconfig -e

其它选项:

# /usr/dt/bin/dtconfig --help
Usage:
CDE configuration utility
/usr/dt/bin/dtconfig -d (disable auto-start)
/usr/dt/bin/dtconfig -e (enable auto-start)
/usr/dt/bin/dtconfig -kill (kill dtlogin)
/usr/dt/bin/dtconfig -reset (reset dtlogin)
/usr/dt/bin/dtconfig -p (printer action update)
/usr/dt/bin/dtconfig -inetd (inetd.conf /usr/dt daemons)
/usr/dt/bin/dtconfig -inetd.ow (inetd.conf /usr/openwin daemons)


如何mount上文件系统为FAT32/PCFS/DOS的硬盘

先创建加载点,这个目录将用于加载后加载系统的主目录。

# mkdir /mount-point
# mount -F pcfs [-o rw | ro] /dev/dsk/<device-name>:<logical-drive> /mount-point

<device-name>是指硬盘的设备名。可以参考format命令的。 在Solaris X86中硬盘的设备名的通常命名方式是含有Controller,Target,Disk和Partition的信息。举个例子/dev/dsk/c0t0d0p0

<logical-drive>是指在DOS中硬盘有英文盘符(从c到z)来区别,也可以用数字(从1到24)代表。即C盘对应1,即D盘对应2,依此类推。

其中参数rw是指read,write,即可读写。也可用ro, o;对应只读,

给出两个例子

# mount -F pcfs /dev/dsk/c0t0d0p0:c /pcfs/c
# mount -F pcfs -o ro /dev/dsk/c0t0d0p0:2 /mnt

检查是否成功mount,可以同过mount命令直接得到所有加载的系统

# mount

unmount该文件系统,则用命令umount /mount-point
系统关机时,会自动umount该文件系统。所以系统再次启动后,需要通过mount再次加载。不过我们可以让系统自动加载,自动加载的定义文件:/etc/vfstab 加入相应的纪录,例如

/dev/dsk/c0d0p2:c /dev/rdsk/c0d0p2:c /wind pcfs 2 yes -

第一项说明要加载的硬盘设备名。第二项说明相应的硬盘裸设备名,用于fsck使用。第三项说明加载点目录。第四项说明文件系统的类型。第五项用于fsck的参数。第六项说明是否在启动时候加载。最后一项定义系统mount加载时候的参数。


如何检查硬盘坏道

# format

先选择硬盘,接着选择键入analyze,然后选择键入read。 或者:

# iostat -En

如何刻录光盘?

Solaris 自带的cdrw工具既支持cd刻录也支持dvd刻录。常见用法:


  • 从iso文件刻录。从网上下载的光盘映象文件一般为iso格式.
# cdrw -i /full-path/xxx.iso
  • 复制光盘:
# cdrw -c [-m tmpdir]  会提示你换盘的。
  • 刻录一些目录文件到CD/DVD:

这反而成了麻烦事,要创建iso文件:

# mkisofs -o xxx.iso -J -R /full-path-data/

建议使用-J -R 选项以同时支持Windows下的长文件名格式(Joliet)和Unix下的长 文件名格式(Rock Ridge). 然后再从iso文件刻录:

# cdrw -i /full-path/xxx.iso
  • 抹除CD-RW的内容
# cdrw -b fast


如何制作光盘镜像iso文件?

这反而成了麻烦事,要创建iso文件:

# mkisofs -o xxx.iso -J -R /full-path-data/

建议使用-J -R 选项以同时支持Windows下的长文件名格式(Joliet)和Unix下的长 文件名格式(Rock Ridge). 然后再从iso文件刻录:

# cdrw -i /full-path/xxx.iso


如何虚拟光驱,读取iso中的文件

# lofiadm -a xxx.iso

在系统目录/dev/lofi/中会自动多出一个目录(累计)。然后使用mount命令将给目录映射到一个本地目录,比如/mnt
# mount -F hsfs /dev/lofi/1 /mnt


重装 Windows后Grub失效,如何重新安装Grub

[S10u1]: 在同一台X86机器上即安装了Solaris 1/06, 又安装了Windows,并且使用 Solaris的Grub作为引导程序。 由于某些原因不得不重装Windows,会重新覆盖 MBR,导致Grub不能使用,不能直接启动Solaris。 我们只需要 Solaris 1/06的第一张CD光盘或者DVD光盘,就可以重新安装Grub 步骤:

1 设置机器并从Solaris 1/06光盘启动

2 在出现Grub界面的时候,按c进入grub命令模式

3 找到硬盘上已安装的Solaris系统的


grub>find /platform/i86pc/multiboot

(hd0,2,a)

我们也可以查找另一个文件:find /boot/grub/menu.lst

4 得到硬盘编号,将它设为root device

例子里的(hd0,2,a),指的是第1块硬盘第三个fdisk分区中的第一个slice。

grub>root(hd0,2,a)

Filesystem type is ufs, partition type 0x000000bf


5 指定boot和archive文件,启动Solaris

grub>kernel /platform/i86pc/multiboot

grub>module /platform/i86pc/boot_archive

grub>boot

如果记不住这些命令,我们可以借助menu.lst文件,其实这个文件是原grub用于启动的菜单,并含有这些启动命令,可供我们参考。 一般这个文件的位置在/boot/grub/menu.lst,我们可以使用cat显示内容。 grub>cat /boot/grub/menu.lst


6 进入Solaris后,使用root身份安装grub

# /usr/sbin/installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0d0s0

其中c0d0s0是指一块硬盘,该命令会将Grub文件安装到该硬盘的MBR。


bootblk损坏,如何修复

bootblk损坏,系统启动的时候会报出这样的错误"The file just loaded does not appear to be executable."。

[S10]: 从光盘启动,在ok模式下输入boot cdrom -s

ok boot cdrom -s

[S10u1]: 从光盘启动,选择6, Single User Shell

# mount /dev/dsk/c1t0d0s0 /a (将损坏硬盘映射成目录a, 为了版本问题,必须使用原来根系统里面的bootblk块)
# installboot /a/usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t0d0s0


如何添加用户

[S10]' Solaris 10带有smc的图形化工具,含有用户管理。

# smc

Solaris也同时提供命令用于用户管理

添加组

# groupadd -g 102 testgroup

-g,指定组id,102。testgroup是组名。

添加用户

# useradd -g 102 -d /export/home/user1 -s /bin/bash -m user1

配置用户密码:

# passwd user1


如何设置Shell环境变量

Shell 设置 添加 显示当前值 注解
sh NAME=value1
export NAME
NAME=value2:$$NAME set(internal)或者env(exported) 如果需要子进程也看到该环境变量,需要使用export
ksh NAME=value1
export NAME
NAME=value2:$NAME set(internal)或者env(exported) 如果需要子进程也看到该环境变量,需要使用export
csh setenv NAME value1 setenv NAME value2:$NAME set 不需要使用export
bash NAME=value1 NAME=value2:$NAME set或者env 不需要使用export


Shell的配置文件和读取顺序

前提 Shell 配置文件1 配置文件2 配置文件3 配置文件4
Subshell
(直接输入sh,ksh,csh,bash命令
或者su)
sh        
ksh        
csh ~/.cshrc      
bash ~/.bashrc ~/.inputrc /etc/inputrc  
su -
telnet
ssh
rlogin
sh /etc/profile ${HOME}/.profile    
ksh /etc/profile ~/.profile    
csh ~/.cshrc ~/.login    
bash ~/.bash_profile ~/.bash_login /etc/profile ~/.profile

参考Rolf Kersten的Solaris OE Guide for New System Administrators


如何安装软件包软(Package)?

安装#pkgadd -d <pkg绝对路径名>
察看#pkginfo #pkgchk #prodreg
删除#pkgrm <软件包pkg名>


如何打Patch?

安装#patchadd
察看#patchchk #showrev -p
删除#patchrm


如何打开压缩的文件?

在solaris下,会有这么几种格式的软件:
1) .gz结尾的文件,用gunzip或者gzip -d来解压,再用tar来解压。推荐使用GNU的gtar,/usr/sfw/bin/gtar zxvf。gtar支持长文件名,bug也较少。
2) .tar结尾的文件,用tar xvf的格式来解压。推荐使用GNU的gtar,/usr/sfw/bin/gtar xvf。
3) .zip结尾的文件,用unzip。
4) .Z结尾的文件,一般用uncompress来解压。


如何去掉文本中^M?

# dos2unix a.txt b.txt,

dos2unix会去掉a.txt中的^M,生成b.txt文件。


如何运行Linux下的程序?

Linux下的程序是不能直接运行,这是由于可执行文件格式不同。解决办法由大概有下面几种方法:

1. 因为Linux的程序大多都是开源的,有很多社区包括Sun公司都提供Solaris平台下编译好的软件包,可以通过google搜索一下。

2. 直接获得Linux程序的源文件,在solaris下直接编译。

3. 通过软件虚拟,Sun提供一个lxrun软件作为中间层,来满足程序所需的linux的API,该lxrun软件含在Companion CD中, 也可免费单独下载:

http://www.sun.com/software/solaris/freeware/

4. OpenSolaris的BrandZ技术,通过Solaris的Container技术虚拟Linux,这个已经在OpenSolaris开源,现在这个技术还没有产品化,不过我们可以试先体验一下:

http://www.sun.com/download/products.xml?id=44247cfd

这里还有一个中文安装实例 http://blog.gceclub.sun.com.cn/index.php?op=ViewArticle&articleId=943&blogId=520

5. 通过开源Xen技术:http://xen.sourceforge.net/

6. 通过CPU模拟器 - QEMU, 可以在Solaris的qemu上安装Linux: http://www.blastwave.org/packages.php/qemu

常用软件使用

常用软件下载

Web浏览器:
Mozilla FireFox: ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.1/contrib/

邮件客户端:
Mozilla Thunderbird: ftp://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5/contrib/

Acrobat: Solaris下有PDF阅读器吗?

办公软件:
Solaris 10自带StarOffice 7。也选择高版本的OpenOffice 2.0,该版本对应于StarOffice 8.0。

多媒体播放器:
RealPlayer:http://forms.helixcommunity.org/helix/builds/?category=realplay-stable

聊天工具:
gaim

Solaris软件下载站点

Sun Solaris Companion CD

Sunfreeware

BlastWave

Solaris Packages Archive

应用程序开发

Solaris下如何安装gcc编译器?

[S10|S11] Solaris10以后,gcc缺省安装在/usr/sfw/bin目录下。因此,只需要设置好环境变量即可:

PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH; export PATH

[S9] 另外,还可以到大名鼎鼎的sunfreeware或者blastwave.org去直接下载二进制文件来安装


Solaris下cc为什么不能用?

当运行里面的/usr/ucb/cc时,提示“language optional software package not installed”。 那个cc是为了编译BSD兼容的程序的准备的脚本

可以直接使用solaris自带的编译器:/usr/sfw/bin/gcc

如果想要其他的版本的gcc可以到Sun的官方站点免费下载http://www.sun.com/software/solaris/freeware/

Sun Studio 11可以免费下载 http://developers.sun.com/prodtech/cc/products/get.html


在Solaris下编译socket程序时发生“符号参照错误”提示?

需要确保头文件包含正确,并且指定-lsocket选项如下:

    cc [ flag ... ] file ... -lsocket -lnsl [ library ... ]
#include <sys/types.h>
#include <sys/socket.h>

Linux下socket调用是在libc中实现的,因此不需要指定-lsocket;但Solaris下,由于存在两套socket库的实现:

3SOCKET - BSD风格socket库,大多数GNU/Linux软件使用这个库

3XNET - 标准socket库

因此Solaris socket库并不包含在libc中,需要给链接器指定-lsocket参数。


Python在Solaris下是默认安装的吗?

[S10] Python在含在Solaris 10光盘中,安装的时候可以选择是否安装。

可以通过以下方式察看是否安装:

# pkginfo | grep Python
GNOME2 SUNWPython The Python interpreter, libraries and utilities
GNOME2 SUNWPython-devel The Python interpreter, libraries and utilities - develper files - platform dependent, /usr filesystem
GNOME2 SUNWPython-share The Python interperer, libraries and utilities - platform independent files, /usr/sfw/share


如何修改文件描述符限制?

Solaris有两个参数控制进程可打开的文件描述符:rlim_fd_max,rlim_fd_cur。前者修改是个硬设置,修改需要权限,后者 是个软设置,用户可以limit或者setrlimit() 修改,该值最大不能超过前者。一般我们在/etc/system里修改这两个参数

set rlim_fd_max = 65535

set rlim_fd_cur = 65535

内核和驱动程序开发

Solaris是微内核操作系统吗?

Solaris上有什么样的内核级调试器?

[S10|S11]:主要有mdb、kmdb和dtrace。

Solaris较早版本的内核调试器是adb和kadb。Solaris 8开始,有了mdb,Solaris 10后,kadb被kmdb取代。 除了mdb和kmdb以外,内核开发人员还可以利用强大的dtrace来调试内核。
mdb和kmdb类似于windows的ICE或者linux的kdb。不同的是,这些都是solaris操作系统自带,不需要额外安装。
有了这些工具,动态观察内核的状态、设置断点,修改内核数据都成为可能。

哪里可以找到Solaris下的usb驱动程序的开发资料?

Solaris 下的有USB DDK,具体可以参考下面的地址:

http://developers.sun.com/solaris/developer/support/driver/usb.html

站点上面有文档,还有USB DDK下载地址,还有USB skeleton drivers。

另外,还有一个介绍ugen的白皮书:

http://developers.sun.com/solaris/developer/support/driver/docs/usbups_whitepaper.html

Solaris默认内核栈大小是多少?

amd64的默认内核栈尺寸是5*PAGESIZE(20k),i386的是2*PAGESIZE(8k),在uts/i86pc/sys/machparam.h中定义;
sparc的默认内核栈尺寸是3*PAGESIZE(24k),在uts/sun4u/sys/machparam.h中定义;

OpenSolaris的内核源码中的assert()函数起什么作用?

assert()就是断言函数。

Solaris内核可以编译成debug版和非debug版。

assert()只在debug版起作用,如果assert()返回失败,系统会强制因为assertion failed而panic,并将内存映象存入crash dump文件。

这样程序员可以通过mdb来检查crash dump文件,来分析问题。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:235065次
    • 积分:2512
    • 等级:
    • 排名:第14618名
    • 原创:48篇
    • 转载:2篇
    • 译文:0篇
    • 评论:67条
    文章分类
    最新评论