`

OpenSolaris/Solaris中文FAQ

 
阅读更多

转自:http://bbs.chinaunix.net/thread-1236511-1-1.html

注:
1.本文档只覆盖Solaris 9及以后的平台上的常见问题
2.S9/10/11 分别对应目前Solaris的发行版本9/10/11
3.x86/x32/x64/Sparc 分别对应x86包括32和64位/IA32专有/AMD64或EMT64位专有/Sparc等特定平台
目录
1 一般讨论
2 系统安装
3 使用/管理/配置
4 应用程序开发
5 内核和驱动程序开发
6 其他
一般讨论
1.1 OpenSolaris和Solaris的区别?
1.2 Solaris有那些主要版本?
1.3 Sun OS和Solaris有什么区别?
1.4 OpenSolaris的版本有哪些?
1.5 OpenSolaris是GPL的吗?
1.6 学习OpenSolaris/Solaris有哪些可用的资源?
1.7 哪里能够得到OpenSolaris的源代码?
1.8 Solaris是免费的吗?

系统安装
2.1 如何得到和安装Solaris?
2.2 哪里下载64位的Solaris?
2.3 安装Solaris对硬件有什么要求?
2.4 安装Solaris X86不能识别网卡怎么办?
2.5 安装Solaris X86不能识别声卡怎么办?
2.6 如何安装一个Solaris/Windows XP/Linux共存的操作系统?
2.7 VMware 5.5版本上,Solaris安装停止在skipped interface pcn0就不动了?
2.8 安装后,显示分辨率太低,如何调整分辨率啊?
2.9 安装后想添加新的语言支持怎么办?
2.10 如何网络安装Solaris?
2.11 如何从硬盘安装Solaris?
2.12 安装Solaris失败怎么办?
2.13 如何知道我的硬件Solaris是否支持?
2.14 在安装的过程中出现“不能发现硬盘”的错误,该怎么解决?
2.15 Solaris支持双核吗?
使用/管理/配置
3.1 系统启动和关闭
3.1.1 重装 Windows后Grub失效,如何重新安装Grub?
3.1.2 bootblk损坏,如何修复?
3.1.3 系统启动报错,进入单用户模式?
3.1.4 如何重新启动系统?
3.1.5 如何关闭系统?
3.1.6 如何用命令关闭系统并断电?
3.2 系统基本操作
3.2.1 如何虚拟光驱,读取iso中的文件?
3.2.2 如何安装软件包(Package)?
3.2.3 如何打Patch?
3.2.4 如何去掉文本中^M?
3.2.5 如何运行Linux下的程序?
3.2.6 如何打开压缩的文件?
3.2.7 为什么不能在/home下创建目录?
3.2.8 怎么让Solaris默认不启动X window?
3.2.9 如何添加用户?
3.2.10 忘记了root密码,如何解决?
3.2.11 如何使用串口做系统控制台?
3.2.12 根目录的空间满了,怎么扩容?
3.2.13 如何配置Xorg的配置文件?
3.2.14 从桌面方式下如何打开一个终端(即命令行输入窗口)?
3.2.15 如何查看某一个命令的使用方法?
3.2.16 为什么在用man命令查看某一个命令的使用方法时提示“没有用于xxx命令的手册”?
3.2.17 在运行一个可执行的程序的时候被提示“权限被否定”是怎么回事?
3.2.18 在solaris中如何对文件进行常规的操作?
3.2.19 如何创建目录?
3.2.20 如何删除一个目录?
3.2.21 如何设定文件或目录的拥有者?
3.2.22 如何添加一个用户组?
3.2.23 如何添加一个用户?
3.2.24 如何修改一个用户的密钥?
3.2.25 用户的缺省profile文件是哪一个?
3.2.26 如何切换用户?
3.2.27 如何查看当前用户的id?
3.2.28 怎么解压缩zip文件?
3.2.29 怎么解压缩gz文件?
3.2.30 怎么解压缩tar文件?
3.2.31 怎样在命令提示符前随着目录的改变一直显示当前所在的目录或路径呢?
3.2.32 为什么在Login图形界面中登陆失败?
3.2.33 怎样才能使用中文输入法呢?
3.2.33 在Solaris中如何打开Winrar文件?
3.3 Shell操作和使用
3.3.1 如何设置Shell环境变量?
3.3.2 Shell的配置文件和读取顺序?
3.3.3 如何设置当前会话中的环境变量?
3.3.4 在会话过程中如何取消已经设置好的环境变量?
3.3.5 如何查看当前用户的缺省SHELL?
3.2.6 如何更改某用户的默认Shell?
3.4 系统基本配置(系统,CPU,内存,网络)
3.4.1 如何查看OpenSolaris/Solaris的版本信息?
3.4.2 如何查看系统内核是32位的还是64位的?
3.4.3 如何查看系统中CPU的数目?
3.4.4 如何修改主机名?
3.2.5 如何查看ip地址?
3.4.6 如何修改IP地址?
3.4.7 DNS客户端的设置?
3.4.8 DHCP客户端设置?
3.4.9 网络配置生效的问题?
3.4.10 Solaris下如何修改mac地址?
3.4.11 如何察看Solaris系统的内存大小及使用情况?
3.4.12 Solaris下如何给机器添加一个新硬件?
3.4.13 Solaris下如何修改网卡的传输模式呢?
3.4.14 Solaris如何设置ADSL拨号上网?
3.4.15 如何设置域名?
3.4.16 如何设置两个网关?
3.4.16 如何修改默认locale?
3.2.17 如何查看网关信息?
3.5 存储设备使用(硬盘,USB硬盘,CD, DVD等)
3.5.1 如何查看solaris下安装了有几块硬盘?
3.5.2 如何在Solaris下使用USB存储设备?
3.5.3 如何mount上文件系统为FAT32/PCFS/DOS的硬盘?
3.5.4 如何检查硬盘坏道,修复硬盘坏道?
3.5.5 如何刻录光盘?
3.5.6 如何制作光盘镜像iso文件?
3.5.7 如何mount上文件系统为FAT32/PCFS/DOS的硬盘显示中文文件和文件夹?
3.5.8 如何mount上EXT文件系统?
3.5.9 如何mount上NTFS文件系统(read-only)?
3.6 系统软件使用
3.6.1 常用软件下载
3.6.2 Solaris软件下载站点
3.6.3 Solaris下有PDF阅读器吗?
3.6.4 Solaris有电子词典吗?
3.7 系统常用服务管理(Telnet,FTP, SSH等)
3.7.1 使用FTP时,不能以root用户登录系统,应修改什么配置文件?
3.7.2 使用Telnet时,不能以root用户登录系统,应修改什么配置文件?
3.7.3 使用SSH时,不能以root用户登录系统,应修改什么配置文件?
3.7.4 使用Samba,如何在客户机上显示中文?
3.7.5 如何使用Samba实现Solaris10与Windows间的文件共享?
3.7.6 如何限制用户可使用FTP不能用Telnet?
3.7.7 如何限制用户FTP只能使用指定目录?
3.8 ZFS
3.9 Container and Zone
3.10 DTrace
3.11 Oracle
3.11.1 Oracle能安装在Solaris 10 x86-32上吗?
3.11.2 在Solaris 10下如何安装Oralce?
3.11.3 在Solaris 10下如何安装Oralce 10g RAC?
3.12 系统安全管理
3.12.1 如何修改登陆系统记录
[编辑]应用程序开发
4.1 Sun Studio
4.1.1 Sun Studio是免费的吗?
4.1.2 哪里可以下载到Sun Studio?
4.1.3 Sun Studio和GCC相比有什么优势?
4.1.4 用dbx打开core文件后,敲入where命令后dbx崩溃?
4.1.5 如何卸载Sun Studio?
4.2 Java
4.2.1 Solaris10在安装完成后是否已经预装了JDK?
4.2.2 JDK安装在什么目录下?
4.2.3 如何查看当前java的版本?Solaris10默认的版本是哪一个?
4.2.4 如果想把Solaris10中的缺省JDK从1.5改变为1.4,如何操作?
4.2.5 如何设置java环境变量?
4.2.6 如何查看java进程是否已经启动?
4.3 Solaris下如何安装gcc编译器?
4.4 Solaris下cc为什么不能用?
4.5 在Solaris下编译socket程序时发生“符号参照错误”提示?
4.6 Python在Solaris下是默认安装的吗?
4.7 如何修改文件描述符限制?
4.8 如何获取Solaris系统信息(磁盘动态使用,内存的使用,文件系统,网卡信息和IP地址)?
4.9 使用Sunfreeware的gcc33编译,报signal.h解析错误parse error?
4.10 在Solaris下如何检查应用程序内存泄漏的问题?
4.11 如何让普通用户能够使用1024号以下的端口?
4.12 哪里有Solaris平台输入法程序编程的相关资料?
4.13 为什么程序会出现Bus Error?
4.14 如何在Solaris下通过ODBC连接Windows的MS SQL Server?
4.15 如何在Solaris下安装lxrun?
[编辑]内核和驱动程序开发
5.1 Solaris是微内核操作系统吗?
5.2 Solaris上有什么样的内核级调试器?
5.3 哪里可以找到Solaris下的usb驱动程序的开发资料?
5.4 Solaris默认内核栈大小是多少?
5.5 OpenSolaris的内核源码中的assert()函数起什么作用?
5.6 如何用savecore产生live dump?
5.7 哪里可以找到Solaris下的驱动开发资料?
[编辑]其他
6.1 VMWare
6.1.1 在VMWare下能使用Solaris吗?
6.1.2 在VMWare下有针对Solaris使用的VM Tools吗?
6.1.3 在VMWare下,Solaris如何上网?
6.1.4 有没有Solaris 10的VMWare虚拟机映像文件下载?
6.2 Solaris老版本8,9的程序能够直接在Solaris10中跑吗?
6.3 QEMU
6.3.1 在solaris中如何使用qemu安装windows操作系统
取自"http://wiki.gceclub.sun.com.cn/index.php/OpenSolaris/Solaris%E4%B8%AD%E6%96%87FAQ"

     //




[ 本帖最后由 云杉上的蝴蝶 于 2008-3-25 20:08 编辑 ]
       
云杉上的蝴蝶 2008-3-24 21:03
        一般讨论1.1 OpenSolaris和Solaris的区别?
简单说,所谓OpenSolaris是一个Sun的开源项目,而Solaris是Sun公司的基于OpenSolaris推出的一个自己的产品。
Solaris和OpenSolaris的关系与Redhat和Fedora的关系是类似的。
OpenSolaris是一个开源项目包括了以CDDL为License的OpenSolaris代码,OpenSolaris开发组织,还有OpenSolaris网站。
而Solaris操作系统是Sun公司的一个产品,Solaris从Solaris 10(2005)后的以后版本都将基于OpenSolaris的代码和技术。
Solaris也是免费下载,Sun公司提供相应的service packages和regular updates。
1.2 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也出现了很多衍生版本,如Polaris、Nexenta、Schillix和Belenix。其中Polaris已经支持了IBM的PowerPC平台。
1.3 Sun OS和Solaris有什么区别?
简单得说,Sun OS是Solaris的其中一个部分。
Solaris是SOE - Solaris Operating Environment的缩写,它包括以下主要部件:
1.SunOS - 系统内核 (版本号是5.x)
2.Windowing - 桌面环境JDS/CDE
1.4 OpenSolaris的版本有哪些?
OpenSolaris出现了很多衍生版本,如Polaris、Nexenta、Schillix和Belenix。其中Polaris已经支持了IBM的PowerPC平台。
1.5 OpenSolaris是GPL的吗?
OpenSolaris和GNU/Linux不同,它是以CDDL License发布的。
CDDL是一种新的Open Source的License,与GPL相比,它的条款更宽松,更具有优越性。
关于CDDL的细节,你可以访问:CDDL License FAQ
1.6 学习OpenSolaris/Solaris有哪些可用的资源?
OpenSolaris中文wiki社区有专门的文档项目来收录OpenSolaris学习和研究的相关资源:
1.7 哪里能够得到OpenSolaris的源代码?
有两种方式可以访问OpenSolaris的源代码:
1.基于WEB的源代码交叉引用
http://cvs.opensolaris.org/source/
2.下载tar包,或者有版本管理工具mercurial的版本管理信息的档案文件:
http://dlc.sun.com/osol/on/downloads/current
1.8 Solaris是免费的吗?
Solaris 10是完全免费,而且开源的:免费下载;免费使用, 不管你是开发还是商业应用,也没有什么CPU使用限制。
当你从Sun官方网站上免费注册,将会获得Entitlement(授权书),就可以免费使用Solaris。该Entitlement含有
Solaris OS Software License Agreement (SLA for Solaris 10) and Solaris
OS Binary Code License (BCL for Solaris 8 and 9),免费获得。
如果没有Entitlement,则可以使用Solaris 10自带的Evalucation License完全免费,可以使用90天。
详细请看该网址: http://www.sun.com/software/solaris/binaries_program.xml
       
云杉上的蝴蝶 2008-3-24 21:34
        系统安装2.1 如何得到和安装Solaris?
Sun的官方站点提供Solaris 10 免费下载,有DVD和CD格式:http://www.sun.com/software/solaris/get.jsp (服务器在国外),
需要Sun Online Account账号(免费注册)。
安装方法参考这个网页http://blog.gceclub.sun.com.cn/i ... Id=121&blogId=4
你可以选择中文安装。
如果你是X86机器,也可以考虑使用SAID(Solaris Automation Installation DVD),即Solaris自动安装DVD,
是为方便Solaris的安装和使用而制作的一张可引导的DVD安装光盘。SAID的实现主要基于 Solaris提供的
Flash Archive和JumpStart技术。具体见SAID
2.2 哪里下载64位的Solaris?
在Sun的官方站点提供Solaris 10 免费下载,有DVD和CD格式:http://www.sun.com/software/solaris/get.jsp
(服务器在国外), 需要Sun Online Account账号(免费注册)。
Solaris 10的安装盘含有32位和64位的kernel,会根据安装的CPU自动适应。也就是说如果是64位的芯片直接安装,
就可以得到一个64位的Solaris操作系统。
2.3 安装Solaris对硬件有什么要求?
Solaris 10的对硬件配置最低标准是:
256MB的内存 (如果使用PXE启动,需要512MB)
2G的硬盘空间
120MHZ的X86(X64)的芯片或者250MHZ的SPARC芯片
DVD或者CD-ROM驱动
2.4 安装Solaris X86不能识别网卡怎么办?
1.确认你的网卡型号,从而得到网卡的vendor id:
主板/硬件手册或者windows设备管理器都能得到设备的厂商名称,然后到PCI设备的数据库去搜索相应的vendor id。
推荐站点:http://pci-ids.ucw.cz
2.通过vendorid确认网卡的devide id:
# prtconf -vp | grep
得到可能的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/
2) 另一个第三方网卡驱动列表:http://sol-enet.sourceforge.net/
3)HCL的network列表:http://www.sun.com/bigadmin/hcl/data/sol/
4) 网卡厂家的网站。例如,Broadcom的网站就有其Solaris平台的驱动下载
5) Solaris x86驱动的资源:http://solaris-x86.org/software/drivers/
6)Sun DryDog参考:http://www.sun.drydog.com/faq/6.html#6.7
5. 提交bug到OpenSolaris社区
1)到http://bugs.opensolaris.org/
2)用英文填写好问题描述,最好提供prtconf -vp的输出和具体声卡型号
2.5 安装Solaris X86不能识别声卡怎么办?
.确定你的声卡型号:通过主板/硬件手册或者windows设备管理器。
2.寻找第三方驱动:
1) OSS的OpenSound for Solaris,支持大多数主流声卡:http://www.4front-tech.com/download.cgi
2) 第三方声卡驱动列表:http://www.tools.de/solaris/audio/beta/
3)HCL的声卡列表:http://www.sun.com/bigadmin/hcl/data/sol/
4) Solaris x86驱动的资源:http://solaris-x86.org/software/drivers/
5)Sun DryDog参考:http://www.sun.drydog.com/faq/6.html#6.7
3. 提交bug到OpenSolaris社区
1)到http://bugs.opensolaris.org/
2)用英文填写好问题描述,最好提供prtconf -vp的输出和具体声卡型号
2.6 如何安装一个Solaris/Windows XP/Linux共存的操作系统?
.安装Windows XP 如果对Solaris不了解,建议只分配格式化系统盘。待所有系统完全安装完后,再另行分配。
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
2.7 VMware 5.5版本上,Solaris安装停止在skipped interface pcn0就不动了?
[x86]: 大概是Solaris显卡检测的问题,引导的时候,安装方式那里选择文本方式安装即可。
[s10&Vmware5.5]: 那一步时间有点长,等一下就过去了,不超过5分钟。
2.8 安装后,显示分辨率太低,如何调整分辨率啊?
[X86] 可以使用kdmconfig. 如果你不熟悉Xorg的Xserver,你可以选择使用Xsun,接着该命令会引导你设置显卡,分辨率等。
Xorg的Xserver,就需要你另外配置xorg.conf或者通过使用xorgconfig命令来配置。
如何用xorgconfig命令配置,详见如何配置Xorg的配置文件?
2.9 安装后想添加新的语言支持怎么办?
[S10] Solaris 10以后,可以使用localeadm工具来添加语言的支持,例如添加中文支持zh_CN:
# localeadm -a zh_CN -d /net/sparc_images/export/pkgs
其他的语言有:zh_TW, zh_HK, hi_IN, th_TH, ko_KR, ja等, “/net/sparc_images/export/pkgs” 应该换成你的cd/dvd
安装包位置。
2.10 如何网络安装Solaris?
请参阅本论坛的相关帖子。
2.11 如何从硬盘安装Solaris?
如何从硬盘安装Solaris?
Wikipedia,自由的百科全书
来自feel2008, http://gceclub.sun.com.cn/NASApp ... 13&thread=40792 , 有修正
硬盘安装Solaris 10
1. 分区简介:(以我的硬盘为例,只做参考)
  第一主分区   10G   C盘  NTFS格式  安装Windows XP
  第二主分区   15G   空闲未分配  准备留给Solaris 10
  扩展分区分为三个逻辑盘:
      D盘     24G   NTFS格式
      E盘     26G   FAT32格式
      F盘     3G    FAT32格式
2. 准备过程:
  在E盘建一个solaris的文件夹,然后用WinRAR或者虚拟光驱打开sol-10-u2-ga-x86-dvd.iso,
  将里面boot目录下的multiboot和x86.miniroot这两个文件提取出来,放在solaris文件夹中,
  然后把sol-10-u2-ga-x86-dvd.iso镜像文件也放在solaris文件夹中。(其实这三个文件放在任何地方都可以,
  但必须是在FAT32分区中)
3. 用grub引导:
  用grub或grub for dos引导,在命令提示符下键入以下命令:
  find /solaris/multiboot
  会显示hd(0,5),这里的hd(0,5)即我的E盘。注意,你的硬盘分区可能和我的不同,因此显示也会不同,请参考grub的相关资料。
  然后再键入以下命令进行引导:
  kernel hd(0,5)/solaris/multiboot kernel/unix -B install_media=dsk
  module hd(0,5)/solaris/x86.miniroot
  boot
  如果一切顺利的话,应该就可以进入引导画面。
4. 利用安装过程中出现的shell进行虚拟光驱
  正确引导以后,首先会出现6个安装模式选项,选择1或者等待超时(默认是1)。这时屏幕上会出现类似的如下提示:
  NOTICE: rtls0 -- link down
  ERROR: Unbale to configure network inteface
         Exiting to shell
  # NOTICE: rtls0 -- link up 100Mbps Full_puplex
  这时候安装程序会停止,光标会停止不动。这时敲一下回车,会出现shell提示符 #
  这个shell是可以用的,敲几个简单的命令试试。
  有了这个shell就好办了,我们可以用它进行虚拟光驱。
  首先要知道E盘在Solaris中是怎么表示的:
  cd /dev/dsk
  然后ls看一下,里面有类似c0d0p0,c0d0p1,c0d0p2,c0d0p3,c0d0p4的设备。这里c0d0p0对应我的硬盘,
  c0d0p1至c0d0p4分别对应4个主分区,可是,Solaris没有设备符号用来对应扩展分区中的逻辑分区。
  我们该如何mount扩展分区中的E盘、F盘呢?Solaris用了一种很奇怪的设备符号来表示硬盘中的FAT32分区:c0d0p0:x,
  这儿x的取值为:1,2,3...,分别表示硬盘中的第1个、第2个、第3个FAT32分区,依此类推。
  即我的硬盘中的第1个FAT32分区(E盘)可以表示为c0d0p0:1、第2个FAT32分区(F盘)可以表示为c0d0p0:2。
  注意,不要用诸如c0d0p3:x(这儿c0d0p3对应我的扩展分区,x表示扩展分区中的第x个FAT32分区)
  这种方式来表示扩展分区中的FAT32分区,当扩展分区的最后一个分区是FAT32、以c0d0p3:x这种设备符号mount它时会出错,
  使用c0d0p0:x这种方式表示FAT32分区则没有任何问题。
  赶紧把E盘mount上去吧:
  mount -F pcfs /dev/dsk/c0d0p0:1 /mnt
  然后进入mnt目录下去看看吧,应该可以看到E盘的文件了。这时候就可以用Solaris的DVD镜像做虚拟光驱了。
  lofiadm -a /mnt/solaris/sol-10-u2-ga-x86-dvd.iso
  mount -F hsfs /dev/lofi/1 /cdrom (必须mount在/cdrom目录中)
  再进入cdrom里面去看看吧,应该成功了。这时系统会认为光驱里面有光盘了。
  等这一切做完之后,然后键入 exit ,就会退出shell,安装程序会自动继续进行下去。
5. 进入图形化安装界面后,我就不再多说了吧........ ^_^
2.12 安装Solaris失败怎么办?
1. 先参考HCL(Hardware Compatible List)看一下:http://www.sun.com/bigadmin/hcl 机器是不是在这个列表里,
2. 如果有的话,请确认以下你的安装介质,是不是X86版本或者SPARC版本?md5的值是不是正确?
如果没有的话用Solaris x86 Installation Check Tool看看是不是什么硬件有问题?如果自己比较清楚,
可以看看自己主要的硬件有没有在HCL支持。
http://www.sun.com/bigadmin/hcl/hcts/install_check.html
3. 还可以参考本FAQ中其他条款或者Google搜索。
4. 如果你的机器比较高级(设备比较新;或者支持一些特别的功能,比如一些笔记本,BIOS里有一些高级设置,
很有可能会影响Solaris的识别),建议用户需要自己摸索一下,在BIOS里设设看。
比如,Toshiba Pro M10笔记本,就有一项BIOS关于PCI设置,一定要设为Set by OS,才可以安装Solaris 10
2.13 如何知道我的硬件Solaris是否支持?
1. Sun Device Detection Tool
这是一个基于Java的工具,在现有的操作系统上可以直接运行(前提有JRE),察看你的机器硬件Solaris有没有支持。
优点:方便,简单,最快速;适合DIY的机器。
缺点:由于依赖现有操作系统的功能,某些现有的操作系统不能使用。对显卡的分析不是好。针对X86/X64机器。
具体下载和使用方式见:http://www.sun.com/bigadmin/hcl/hcts/device_detect.html
2. Sun Intall Check
需要刻录成光盘,然后以这个光盘来启动,最终会出一个报告,哪些设备支持,哪些设备有问题。
优点:比较准确;适合DIY的机器;可以批量使用。
缺点:需要刻盘; 针对X86/X64机器。
具体下载和使用方式见:http://www.sun.com/bigadmin/hcl/hcts/install_check.html
3. HCL 列表(Hardware Compatibility List)
列出了所有Sun,其他公司认证或者第三方宣称支持的机器,单个硬件设备,比如网卡,显卡等。
优点:比较适合品牌PC,尤其是笔记本;非常准确;并提供了可能需要额外操作配置。
缺点:需要自己察看。
如果以上没有找到你的硬件,你可以参考本FAQ其他条目,比如:安装Solaris X86不能识别网卡怎么办?,
安装Solaris X86不能识别声卡怎么办?。最后可以考虑Google搜索一下。
2.14 在安装的过程中出现“不能发现硬盘”的错误,该怎么解决?
如果硬盘是在solaris当前版本的HCL(硬件适配列表)中,那么一般都是BIOS设置引起的,
需要将BIOS系统设置页中的“SATA Native Support”选项设置成“Disabled”即可。
2.15 Solaris支持双核吗?
支持
       
云杉上的蝴蝶 2008-3-24 21:40
        使用/管理/配置 part 13.1 系统启动和关闭
3.1.1 重装 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。
3.1.2 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
3.1.3 系统启动报错,进入单用户模式?
公司的sun 280R,重启时报以下错误:
/sbin/rcs: /etc/vfstab cannot open INIT :cannot creat /var/adm/utmpx INIT : fail write of utmpx entry :" "
然后就提示,过入单用户模式。但进入单用户模式后,什么命令都运不了。怎么办呀?
lxf: 是不是文件系统坏了或满了?应该是/var 没有mount 上。 用全路径/usr/bin/cat /etc/vfstab 看看。
用全路径/usr/sbin/mount 去把/var 手工mount 上看看。若有必要运行一下/usr/sbin/fsck看看。
wanglp2000 : 一般也有两种情况: 1 就是楼上说的,/var系统慢了 2 另外一种就是你的文件系统有问题,对根系统等做fsck
http://gceclub.sun.com.cn/NASApp ... 14&thread=38567
3.1.4 如何重新启动系统?
一般有两种方式,一种是在终端方式是输入reboot命令。另一种是在桌面方式下通过鼠标
选取相应的选择项来完成,例如在JDS方式下可以选取java启动-->注销xxx-->重启动计算机

或者使用
# init 6
3.1.5 如何关闭系统?
关闭solaris系统有这里提供两种方式,一种是在终端方式下输入shutdown命令来完成,
另一种方式是在桌面方式下通过选取相应的选项来完成的。例如在JDS环境下可以选取
java 启动-->注销xxx-->关闭系统
3.1.6 如何用命令关闭系统并断电?
可以在终端方式下使用poweroff命令来完成。或者使用
# init 5
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-24 21:55 编辑 ]
       
云杉上的蝴蝶 2008-3-24 21:54
        使用/管理/配置 part 23.2 系统基本操作
3.2.1 如何虚拟光驱,读取iso中的文件?
# lofiadm -a xxx.iso
在系统目录/dev/lofi/中会自动多出一个目录(累计)。然后使用mount命令将给目录映射到一个本地目录,比如/mnt
# mount -F hsfs /dev/lofi/1 /mnt
3.2.2 如何安装软件包(Package)?
安装#pkgadd -d
察看#pkginfo #pkgchk #prodreg
删除#pkgrm  
3.2.3 如何打Patch?
安装#patchadd
察看#patchchk
showrev -p
删除#patchrm
3.2.4 如何去掉文本中^M?
# dos2unix a.txt b.txt,
dos2unix会去掉a.txt中的^M,生成b.txt文件。
3.2.5 如何运行Linux下的程序?
这里指的是C/C++应用程序。如果你是Java或者类似的解释型语言,都没有问题。只需要安装相应的解释器就可以了。
Java程序默认在Solaris中安装好了。
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/i ... =943&blogId=520
5. 通过开源Xen技术:http://xen.sourceforge.net/
6. 通过CPU模拟器 - QEMU, 可以在Solaris的qemu上安装Linux: http://www.blastwave.org/packages.php/qemu
3.2.6 如何打开压缩的文件?
在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来解压。
3.2.7 为什么不能在/home下创建目录?
Solaris的用户目录应该创建在/export/home下,不建议直接使用/home。
这是因为Solaris的/home目录是由automounter控制的,只有automounter可以在这个目录下创建文件。
如果不希望automounter管理/home目录,可以在删除/etc/auto_master文件中包含"/home"的那行,
并且运行automount -v让设置生效,当然reboot也可以。
3.2.8 怎么让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)
3.2.9 如何添加用户?
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
3.2.10 忘记了root密码,如何解决?
[S10u1|S11]:新版本的Solaris系统采用grub作为引导程序,因此不需要光盘引导:
首先,在grub的菜单中选择fail safe的选项引导系统
引导后,系统会提问是否mount根分区到/a上,选择是
按照前面的方法编辑/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用户的密码删除,保存文件、重新启动后,就不会有口令了。
3.2.11 如何使用串口做系统控制台?
1. 使用串口线连接两台机器A和B, 使用A做为监视用的机器,获取从B的输出;
2. 修改机器A的/etc/remote文件:
hardwire:\
       :dv=/dev/term/X:br#9600...
把上面的"X"改成实际使用的串口标识,第一个串口是"a",第二个是"b"
3. 在机器A上运行"tip hardwire"
4. 在机器B上运行
eeprom console=ttyX
上面的"X"应该是实际使用的串口标识,第一个串口是"a",第二个是"b"
5. 重启机器B, 就可以在机器A上获得机器B的控制台输出
3.2.12 根目录的空间满了,怎么扩容?
这个比较麻烦.如果没有引入卷管理方式的话,扩容/一般认为不能这样做. 因为在分配柱面的地址没有办法做到.
SDS上增加可以用growfs veritas上:vxresize 或者vxassist
3.2.13 如何配置Xorg的配置文件?
参见附件 如何配置Xorg的配置文件
3.2.14 从桌面方式下如何打开一个终端(即命令行输入窗口)?
在JDS桌面环境下和CDE环境下分别由下面的方式进入。
JDS桌面:  方法1.屏幕空白处右击,从菜单中选择“打开终端”。
            方法2.启动 应用程序 实用程序 终端
CDE桌面:  方法1.屏幕空白处右击,从工具菜单中选择“终端”或者从主机菜单中选择“本主机”,“终端控制台”都可以进入命令窗口。
            方法2.从屏幕底端的菜单条的右数第三格(点击其上面的上三角打开选项)选择“本主机”,“控制台”。
            
3.2.15 如何查看某一个命令的使用方法?
只要在命令行下面输入“ man 命令”就可以查看这个命令的使用方式了。
3.2.16 为什么在用man命令查看某一个命令的使用方法时提示“没有用于xxx命令的手册”?
有两种情况,一种是这个命令不存在。另一种情况是这个命令的使用手册的文档没有被包含在MANPATH中,
将命令的man目录添加到MANPATH环境变量中就可以了。
3.2.17 在运行一个可执行的程序的时候被提示“权限被否定”是怎么回事?
这是因为虽然他是个可执行的程序但是没有被赋予执行权限。可以使用chmod +x 文件名 将这个文件设置成可以执行的文件。
3.2.18 在solaris中如何对文件进行常规的操作?
针对与文件的操作提供下面的信息供参考
   a.创建文件:可以使用touch ,vi ,gedit,mkfile等命令来完成,以可以使用桌面方式下提供
   的菜单快捷方式。例如在JDS方式鼠标右击并选择创建文档。
   b.删除文档:可以使用 rm 命令,也可以使用桌面方式提供的菜单项。终端方式下可以带
   通配符进行批量删除操作。
   c.修改文档:使用vi,gedit等修改。在桌面方式下扩展名与应用进行了关联的情况下,
   双击即可打开修改。
    d.拷贝:可以使用“cp 源文件 目标文件”命令来完成,桌面方式也提供了菜单选项。
    e.移动:可以使用“mv 源文件 目标文件”命令完成。
3.2.19 如何创建目录?
可以用mkdir –p 完整目录名 (适用于目标目录不在当前目录或者非单层目录)
       mkdir  目录名    (适用于目标目录在当前目录且是单层目录)
3.2.20 如何删除一个目录?
可以使用“rm -R 目录”来完成此操作。
3.2.21 如何设定文件或目录的拥有者?
使用“chown 用户:用户组 文件名”来为单个文件设定拥有者。
用“chown –R 用户:用户组 目录”为一个目录设定拥有者。其中用户组为可选项。
如果给出了用户组,那么这个文件将被这个组所拥有。文件名和目录可以使用通配符。

3.2.22 如何添加一个用户组?
在命令行下以“groupadd 用户组名” 就可以了。详细信息可以用man groupadd 查看。
3.2.23 如何添加一个用户?
用命令“useradd –d 用户的home目录 –s 用户的缺省shell类型 –g 用户所属组 用户”
3.2.24 如何修改一个用户的密钥?
可以使用“passwd 用户名” 就可以了。需要注意的是必须有相应的权限。一般情况下用户都有修改自己密码的权限。
超级用户有修改其他用户的权限。
3.2.25 用户的缺省profile文件是哪一个?
这个由用户的缺省SHELL决定的。不同的SHELL对应的缺省profile是不一样的。
与Bourne shell 或者 Kron shell 对应的profile是用户home目录下的.profile文件
与C shell对应的profile是用户home目录下的.login文件
与Bash 对应的profile 是用户home目录下的.bash_profile文件
3.2.26 如何切换用户?
可以使用“su – 用户名” 来进行切换。用exit退出切换用户。
3.2.27 如何查看当前用户的id?
在命令行下面输入“id 用户名”就可以看到了。如果想看当前用户信息只要用“id”就可以了。
3.2.28 怎么解压缩zip文件?
用命令“unzip zip文件包”。
3.2.29 怎么解压缩gz文件?
用命令“gunzip gz文件包”。
3.2.30 怎么解压缩tar文件?
用命令“tar xvf tar文件包”。
3.2.31 怎样在命令提示符前随着目录的改变一直显示当前所在的目录或路径呢?
编辑HOME/.profile文件
PS1="[\u@\h]:\$PWD>$"
export PS1
或者:
PS1='[\u@\h]:$PWD>$'
export PS1
也可以直接
export PS1="[\u@\h]:\$PWD>$"
或者:
export PS1='[\u@\h]:$PWD>$'
但是只对当前操作有效。
3.2.32 为什么在Login图形界面中登陆失败?
创建一个新用户,尝试登陆,如果可以,那把原来用户目录下的隐含目录,和桌面相关的全部删除,
比如.dt, .gconf, .gnome等,再次尝试
from vincentzhang
3.2.33 怎样才能使用中文输入法呢?
在系统登陆窗口中,选择中文方式,比如 中文UTF-8,然后输入用户名,密码登陆。
这时候就可以用Ctrl + Sparce调出中文输入法
3.2.33 在Solaris中如何打开Winrar文件?
需要安装unrar工具打开Winrar文件。
下载地址: http://www.rarlab.com/rar/unrar-sol-intel.gz
安装:
gunzip unrar-sol-intel.gz
chmod +x unrar
mv unrar /usr/bin
使用方法:
unrar filename.rar
       
云杉上的蝴蝶 2008-3-24 22:17
        使用/管理/配置 part 33.3 Shell操作和使用
3.3.1 如何设置Shell环境变量?

3.3.2 Shell的配置文件和读取顺序?

3.3.3 如何设置当前会话中的环境变量?
参考如何设置Shell环境变量?
3.3.4 在会话过程中如何取消已经设置好的环境变量?
参考如何设置Shell环境变量?
3.3.5 如何查看当前用户的缺省SHELL?
用命令“echo $SHELL”可以查看。
/bin/bash  ------------------- Bash Shell
/bin/csh   ------------------- C Shell
/bin/ksh   ------------------- Kron Shell
/sbin/sh   ------------------- Bourne Shell
3.2.6 如何更改某用户的默认Shell?
更改用户Shell
先创建一个用户test01
useradd -m -d /export/home/test01 test01
passwd test01
登录上去查看
echo $SHELL
确认用户logout并执行用户Shell的更改
usermod -s /bin/bash test01
确定是否更改
echo $SHELL
3.4 系统基本配置(系统,CPU,内存,网络)
3.4.1 如何查看OpenSolaris/Solaris的版本信息?
通常的“uname -a"命令就可以知道Solaris的版本:
想知道是哪一个Solaris Update版本,可以查看/etc/release文件。
对于曾经使用过Opensolaris的BFU升级的用户,应该查看/etc/motd文件。
3.4.2 如何查看系统内核是32位的还是64位的?
isainfo -b
3.4.3 如何查看系统中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个。  
3.4.4 如何修改主机名?
新手可以使用sys-unconfig
请慎用这个命令,因为运行这个命令后,会关机,同时启动后,你不能通过远程连接到服务器,只能通过控制台配置好主机名,IP等信息后才可以用的。
也可以修改以下文件:
/etc/inet/hosts
/etc/hostname.xxx(xxx代表你的网卡的名称)
/etc/nodename
/etc/inet/ipnodes(ipv6协议使用的主机文件)
然后重新启动即可。
3.2.5 如何查看ip地址?
可以用ifconfig –a来查看。
3.4.6 如何修改IP地址?
新手可以使用sys-unconfig
(不推荐使用这个命令)
也可以修改以下文件:
/etc/hosts
/etc/hostname.xxx
/etc/defaultrouter(默认网关)
/etc/netmasks(掩码)
/etc/inet/ipnodes
然后重新启动系统,或者用ifconfig 来添加临时的IP地址.用route add default xxx.xxx.xxx.xxx来添加临时的默认网关,用这些命令更改的设置,在系统重启后就不会保存的。
3.4.7 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
3. 最后我们可以通过nslookup来确认,设置是否正确。例如,如果设置的是Internet的DNS服务器的话,我们就可以:
nslookup www.sun.com
3.4.8 DHCP客户端设置?
创建两个空文件,是网卡适配器的名字,这两个文件用于系统启动时自动启动dhcp。
# touch /etc/hostname.
# touch /etc/dhcp.
网卡适配器的名字的我们可以通过ifconfig -a 或者文件/etc/path_to_inst得到。如果需要立即使用dhcp的话,可以执行一下命令:
# ifconfig  dhcp start
3.4.9 网络配置生效的问题?

3.4.10 Solaris下如何修改mac地址?
用ifconfig 命令即可修改mac地址,假设接口名为nge0,要将mac地址修改为aa:bb:cc:dd:ee:ff,可以运行如下命令:
# ifconfig nge0 ether aa:bb:cc:dd:ee:ff
要永久生效,在/etc/hostname.nge0添一行
ether aa:bb:cc:dd:ee:ff
3.4.11 如何察看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
就可以看你真实的物理内存的占用情况了。
3.4.12 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
3.4.13 Solaris下如何修改网卡的传输模式呢?
用ndd /dev/hme \? 看到的link_mode是只读的不能修改.但是可以观看.
ndd -get /dev/hme link_mode 1 = Full Duplex (FDX) 0 = Half Duplex (HDX)
3.4.14 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)
3.4.15 如何设置域名?
A.可以通过下面的几个步骤设置域名。
1) 创建/etc/defaultdomain文件
用vi或者gedit编辑 /etc/defaultdomain,在该文件中加入domainname, 比如prc.sun.com,保存退出。
该配置重启后有效,可以通过domainname命令动态修改。
# domainname prc.sun.com
可以通过domainname来再次确认是否修改成功。
# domainname
prc.sun.com
2) 在/etc/hosts加入一行新的记录(格式为 .)用vi或者gedit编辑 /etc/hosts
加入一行新的记录,比如129.158.2.104 myhostname.prc.sun.com,保存退出即可。
可以通过ping命令来确认是否有效。
3.4.16 如何设置两个网关?
来自lxf在SDN China论坛的回答:
http://gceclub.sun.com.cn/NASApp ... 14&thread=41005
不要用静态路由,把/etc/defaultrouter 干掉。
用动态路由(通过路由协议自动发现路由)。
先确认动态路由是否激活:
#routeadm 回车,如果发现没有,则:
#routeadm -e ipv4-routing
#routeadm -u
如果你非要自己指定网关,则创建/etc/gateways文件,里面加上:
net  gateway  metric  passive
(passive表示尽量用静态配置,不交换路由协议的信息)
3.4.16 如何修改默认locale?
修改文件/etc/default/init,添加或者修改行(其中locale用实际要设定的locale替代)
      LANG=locale
也可以用命令sys-unconfig重新设置系统默认语言网络。
3.2.17 如何查看网关信息?
可以使用“ netstat -r”命令进行查看。
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-24 22:34 编辑 ]
       
云杉上的蝴蝶 2008-3-24 22:50
        使用/管理/配置 part 43.5 存储设备使用(硬盘,USB硬盘,CD, DVD等)
3.5.1 如何查看solaris下安装了有几块硬盘?
format命令可以看有几块物理盘
Searching for disks...done
AVAILABLE DISK SELECTIONS:
      0. c0t0d0
         /pci@1f,4000/scsi@3/sd@0,0
      1. c0t1d0
         /pci@1f,4000/scsi@3/sd@1,0
      2. c0t2d0
         /pci@1f,4000/scsi@3/sd@2,0
      3. c0t3d0
         /pci@1f,4000/scsi@3/sd@3,0
      4. c2t0d0
         /pci@6,4000/scsi@4/sd@0,0
      5. c2t1d0
         /pci@6,4000/scsi@4/sd@1,0
      6. c2t2d0
         /pci@6,4000/scsi@4/sd@2,0
Specify disk (enter its number): 0
selecting c0t0d0
[disk formatted]
随便选一个盘 再按Q退出菜单。也可直接按Ctrl+D的组合键退出
3.5.2 如何在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该设备(以FAT32,即PCFS格式为例):
# mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt
卸载U盘前,需要确保该mount目录没有正在使用:
   # umount /mnt
   # eject rmdisk0
或者,
   # umount /mnt
   # eject  /dev/rdsk/c3t0d0p0
需要注意的是,Solaris现在支持的硬盘文件系统格式只有:ufs,hsfs(用于光盘),pcfs(就是DOS,Windows用的FAT32)和udfs。如果你用的USB设备是FAT或者NTFS,现在还不能使用。
3.5.3 如何mount上文件系统为FAT32/PCFS/DOS的硬盘? \
如何mount上文件系统为FAT32/PCFS/DOS的硬盘?
Wikipedia,自由的百科全书
先创建加载点,这个目录将用于加载后加载系统的主目录。
# mkdir /mount-point
# mount -F pcfs [-o rw | ro] /dev/dsk/: /mount-point
是指硬盘的设备名。可以参考format命令的。在Solaris X86中硬盘的设备名的通常命名方式是含有
Controller,Target,Disk和Partition的信息。举个例子/dev/dsk/c0t0d0p0
是指在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加载时候的参数。
3.5.4 如何检查硬盘坏道,修复硬盘坏道?
先把硬盘unmount
# unmount /dev/dsk/disk-name
# format
先选择硬盘,接着选择键入analyze,然后选择键入read。
要修复的话,就在选择硬盘后,不选择analyze,选择repair。
或者:
# iostat -En
3.5.5 如何刻录光盘?
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
3.5.6 如何制作光盘镜像iso文件?
这反而成了麻烦事,要创建iso文件:
# mkisofs -o xxx.iso -J -R /full-path-data/
或者直接从光驱抓取iso文件
#dd if=/device-path of=/full-path-data/disk1.iso
(比如我的光驱路径为/vol/dev/rdsk/c1t0d0/tlw7_disk1,相应的命令为
#dd if=/vol/dev/rdsk/c1t0d0/tlw7_disk2 of=/export/home/share/tlw7_disk2.iso
建议使用-J -R 选项以同时支持Windows下的长文件名格式(Joliet)和Unix下的长文件名格式(Rock Ridge).
然后再从iso文件刻录:
# cdrw -i /full-path/xxx.iso
3.5.7 如何mount上文件系统为FAT32/PCFS/DOS的硬盘显示中文文件和文件夹?
这基本上就没办法了。放弃吧。如果有高手知道请说出来。

3.5.8 如何mount上EXT文件系统?
来自saky 的 http://bbs.chinaunix.net/viewthr ... &extra=page%3D1
Usage: Mounting EXT2FS
--------------------------------------------------------------------------------
To mount an EXT2FS partition you first need to identify logical device
name of the partition. Execute /usr/bin/prtpart without arguments to
see the physical device name of your harddisk. It will be of the form:
/dev/rdsk/cNdNp0. This will also display information about the entire
partition table.
Note: For more info on prtpart execute prtpart -help
Now execute: /usr/bin/prtpart /dev/rdsk/cNdNp0 -ldevs
to list out all the logical devices and the partition types. Your Linux partitions will be listed as "Linux Native".
Now execute: mount -F ext2fs   
to mount the EXT2FS partition.
主要命令: prtpart /dev/dsk/c0d0p0 -ldevs
输出 : bash-3.00# prtpart /dev/rdsk/c0d0p0 -ldevs
Fdisk information for device /dev/rdsk/c0d0p0
NOTE
/dev/dsk/c0d0p0 - Physical device referring to entire physical disk
/dev/dsk/c0d0p1 - p4 - Physical devices referring to the 4 primary partitions
/dev/dsk/c0d0p5 ... - Virtual devices referring to logical partitions
Virtual device names can be used to access EXT2 and NTFS on logical partitions
/dev/dsk/c0d0p1 IFS: NTFS
/dev/dsk/c0d0p2 WIN95 Extended(LBA)
/dev/dsk/c0d0p5 WIN95 FAT32(Upto 2047GB)
/dev/dsk/c0d0p6 IFS: NTFS
/dev/dsk/c0d0p7 Linux native
/dev/dsk/c0d0p8 Linux swap
/dev/dsk/c0d0p3 Solaris x86
然后:
bash-3.00# mount -F ext2fs /dev/dsk/c0d0p7 /mnt
bash-3.00# xlsmounts
PHYSICAL DEVICE                 LOGICAL DEVICE      FS    PID         ADDR Mounted on
/dev/dsk/c0d0p0                /dev/dsk/c0d0p7  ext2fs   1661  127.0.0.1:/ /mnt
bash-3.00#
大功告成!用了我一个多小时的时间找这个东西,特此分享!
测试平台:Sun Solaris 10 X86, OpenSUSE 10.0.2
HOW TO Install
--------------------------------------------------------------------------------
1) Install the FSWpart package
  Download http://www.belenix.org/binfiles/FSWpart.tar.gz
  Uncompress:  gunzip -c FSWpart.tar.gz | tar xvf -
  Install:  pkgadd -d . FSWpart
2) Install the FSWfsmisc package
  Download http://www.belenix.org/binfiles/FSWfsmisc.tar.gz
  Uncompress:  gunzip -c FSWfsmisc.tar.gz | tar xvf -
  Install:  pkgadd -d . FSWfsmisc
3.5.9 如何mount上NTFS文件系统(read-only)?
Download the binaries from http://sourceforge.net/project/showfiles.php?group_id=169514
Warning You use this program on your own risk !!! *
For mounting a NTFS filesystem. Follow the below procedure.
bash-3.00~# fdisk /dev/rdsk/c1d0s0
Below is the sample output for the disk c1d0s0
            Total disk size is 38765 cylinders
            Cylinder size is 4032 (512 byte) blocks
                                             
Cylinders
     Partition             Status         Type         Start       End         Length       %
     ====================== ======================================
        1                                Diagnostic       0        1525         1526        4
        2                                 IFS:NTFS     1526      7769          6244      16 dump
2.然后修改其中不需要的记录
vi dump
3.最后把修改后的文件转化为二进制格式
/usr/lib/acct/fwtmp -ic /var/adm/wtmpx
4.执行last命令查看修改后的记录
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-25 17:17 编辑 ]
       
云杉上的蝴蝶 2008-3-24 22:59
        占位待编辑!~~
       
云杉上的蝴蝶 2008-3-24 23:00
        应用程序开发4.1 Sun Studio
4.1.1 Sun Studio是免费的吗?
Sun Studio是一个C/C++, Fortan的IDE开发环境,含有C/C++, Fortan编译器。
可以在Solaris平台(SPARC,X86)和Linux平台上使用。
Sun Studio最新版本是11,是完全免费下载,免费使用的。下载地址是:http://developers.sun.com/sunstudio/downloads/index.jsp
4.1.2 哪里可以下载到Sun Studio?
http://developers.sun.com/sunstudio/downloads/index.jsp
需要Sun SDN(Sun Developer Network)账号,可以免费注册获得。
4.1.3 Sun Studio和GCC相比有什么优势?
主要是在性能Performance, 并行运算Parallelism,和工作效率Productivity
性能
打破多项世界纪录,具体可以参考http://developers.sun.com/sunstudio/products/benchmarks.html
特别是在SPARC平台,对SPARC芯片支持的更好,性能比GCC表现更加出色。
含有特别优化的Sun Performance Library。
并行运算
支持目前主流的多核CPU: UltraSPARC IV+(双核), UltraSPARC T1(8核),AMD Opteron(双核), Intel Xeon。
并能够充分发挥其硬件优势。
能够支持Automatic Parallelization,支持MT模型,自动优化程序。
提供OpenMP 2.5 API。
提供MPI库。
提供Thread Local Storage。
工作效率
是基于Netbeans,是一个图形化的IDE工具。
调试器:dbx,可以支持图形化和控制台模式的调试。
具有性能检测器Performance Analyzer,可以帮助你发现程序的热点(hotspot)。
具有Data Race检测器(Data Race Detection Tool)。
具有lock_int工具帮助你检测多线程情况下的锁。
具有dmake,可以充分利用现有多cpu或者集群,更快地编译你的代码。
4.1.4 用dbx打开core文件后,敲入where命令后dbx崩溃?
先确保Sun Studio的patch都已经到上。Patch下载地址:
http://developers.sun.com/prodtech/cc/downloads/patches/index.jsp
如果需要看堆栈,往往这个对大家比较重要,我们可以用pstack命令察看core文件的堆栈。
4.1.5 如何卸载Sun Studio?
需要root权限。
# cd /var/sadm/prod/com.sun.studio_11
# ./batch_uninstall_all
4.2 Java
4.2.1 Solaris10在安装完成后是否已经预装了JDK?
Solairs10在安装完成后会预装JDK的。一般会有两个版本的JDK,一个是1.4.2,另一个是1.5.0。
4.2.2 JDK安装在什么目录下?
在solaris10中JDK被安装的总目录是/usr/jdk,在这个目录下具体版本的JDK有其各自的目录。例如:j2sdk1.4.2_08或者jdk1.5.0_04等。
4.2.3 如何查看当前java的版本?Solaris10默认的版本是哪一个?
在命令行下面使用 java -fullversion 可以对当前版本的。
Solaris10中以1.5.0作为缺省的版本。
4.2.4 如果想把Solaris10中的缺省JDK从1.5改变为1.4,如何操作?
请用下面的命令完成,(其中的jdk目录要根据实际的情况填写)
            #rm /usr/java
            #ln –s /usr/jdk/j2sdk1.4.2_08 /usr/java
4.2.5 如何设置java环境变量?
一般有这么两种方式。
临时用:在命令行下面用用命令设置即可,见第二部分中对“如何设置当前会话中的
环境变量”的解答。
         用户级:在用户的缺省profile中进行设置。
4.2.6 如何查看java进程是否已经启动?
可以用命令ps -ef|grep java来查看。
4.3 Solaris下如何安装gcc编译器?
[S10|S11] Solaris10以后,gcc缺省安装在/usr/sfw/bin目录下。因此,只需要设置好环境变量即可:
PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH; export PATH
需要不同版本的gcc,可以从Sun官方网站上下载Companion CD或者单个包:
http://www.sun.com/software/solaris/freeware/ 也有Solaris 8,9的Companion CD.
[S9] 另外,还可以到大名鼎鼎的sunfreeware或者blastwave.org去直接下载二进制文件来安装
4.4 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公司的编译器:Sun Studio 11,它也是免费的。
下载地址:http://developers.sun.com/prodtech/cc/products/get.html
4.5 在Solaris下编译socket程序时发生“符号参照错误”提示?
需要确保头文件包含正确,并且指定-lsocket选项如下:
    cc [ flag ... ] file ... -lsocket -lnsl [ library ... ]
    #include
    #include
Linux下socket调用是在libc中实现的,因此不需要指定-lsocket;但Solaris下,由于存在两套socket库的实现:
3SOCKET - BSD风格socket库,大多数GNU/Linux软件使用这个库
3XNET - 标准socket库
因此Solaris socket库并不包含在libc中,需要给链接器指定-lsocket参数。
4.6 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
4.7 如何修改文件描述符限制?
Solaris有两个参数控制进程可打开的文件描述符:rlim_fd_max,rlim_fd_cur。前者修改是个硬设置,
修改需要权限,后者是个软设置,用户可以limit或者setrlimit() 修改,该值最大不能超过前者。
一般我们在/etc/system里修改这两个参数
set rlim_fd_max = 65535
set rlim_fd_cur = 65535
4.8 如何获取Solaris系统信息(磁盘动态使用,内存的使用,文件系统,网卡信息和IP地址)?
来自xinfeng blog http://blog.gceclub.sun.com.cn/i ... 1222&blogId=520
(一)获取磁盘的动态使用状况
--------------------------------------------------------------------------------
其实系统的动态信息都可以从Solaris里的kstat工具得到。vmstat之类的工具都是基于kstat。有一篇很好的文章讲了kstat的基本知
识和数据结构,要想写出适合自己要求的系统监控代码,应该先看看这篇文章:http:
//developers.sun.com/solaris/articles/kstatc.html

以下的例子就是根据这篇文章里的代码改写的。
#include  
#include
#include
#include
#define SLEEPTIME 5
unsigned int sleep(unsigned int);
void my_io_display(char *, char *, kstat_io_t);
main(int argc, char *argv[])
{
                kstat_ctl_t *kc;
                kstat_t *ksp;
                kstat_io_t kio;
               
                kc = kstat_open();
               
               
                while(1) {
                                if(kstat_chain_update(kc))
                                fprintf(stderr, ">n");
                                for (ksp = kc->kc_chain; ksp != NULL; ksp = ksp->ks_next) {
                                                if (ksp->ks_type ==
KSTAT_TYPE_IO && strcmp(ksp->ks_class,"disk") == 0) {
                                                                kstat_read(kc, ksp, &kio);
                                                                my_io_display(ksp->ks_name, ksp->ks_class, kio);
                                                }
                                }
                                sleep(SLEEPTIME);
                } /* while(1) */
}
void my_io_display(char *devname, char *class, kstat_io_t k)
{
printf("Name: %s Class: %sn",devname,class);
printf("tnumber of bytes read %lldn", k.nread);
printf("tnumber of bytes written %lldn", k.nwritten);
printf("tnumber of read operations %dn", k.reads);
printf("tnumber of write operations %dn", k.writes);
}
(二)获取内存的动态使用状况
--------------------------------------------------------------------------------
这个稍微麻烦点儿,因为kstat的vminfo保存的是自系统启动以来累计信息,因此要计算两次采样时间之间的差值。
#include  
#include
#include
#include
#include
#define SLEEPTIME 5
#define pgtok(a) ((a) * (pagesize >> 10))
unsigned int sleep(unsigned int);
main(int argc, char *argv[])
{
          kstat_ctl_t *kc;
        kstat_t *ksp;
        vminfo_t vminfo, old_vminfo;
        int pagesize = sysconf(_SC_PAGESIZE);
               
        kc = kstat_open();
        ksp = kstat_lookup(kc, NULL, -1,"vminfo");
        kstat_read(kc, ksp, &old_vminfo);
        sleep(SLEEPTIME);
               
        while(1) {
                        if(kstat_chain_update(kc))
                        fprintf(stderr, ">n");
                        ksp = kstat_lookup(kc, NULL, -1,"vminfo");
                        kstat_read(kc, ksp, &vminfo);
                                
                                
                        printf("Free memory: %uKBn", pgtok((vminfo.freemem - old_vminfo.freemem)/SLEEPTIME));
                        printf("Swap allocated: %uKBn", pgtok((vminfo.swap_alloc - old_vminfo.swap_alloc)/SLEEPTIME));
                        printf("Swap available: %ukBn", pgtok((vminfo.swap_avail - old_vminfo.swap_avail)/SLEEPTIME));
                                
                        kstat_read(kc, ksp, &old_vminfo); /* you can use memcpy instead to store the old value */
                        printf("n");
                        sleep(SLEEPTIME);
                } /* while(1) */
               
}
你还可以用kstat写一个cpu使用状况的程序,这个就交给你自己去联系了,呵呵。如果想不出来,就去看看mpstat的源码。
(三)获取物理内存信息。
--------------------------------------------------------------------------------
这很简单,参考opensolaris里的prtconf.c。用sysconf系统调用。
#include
#include
#include
main()
{
                uint32_t pagesize;
                uint64_t phy_pages;
                pagesize = (uint32_t) sysconf (_SC_PAGE_SIZE);
                phy_pages = (uint64_t) sysconf (_SC_PHYS_PAGES);
                printf("Physical memory: %lu MBn", (pagesize * phy_pages) >> 20);
}
(四)获取文件系统的使用情况。
--------------------------------------------------------------------------------
这个就用不到kstat了。需要读取mount table, 结合statvfs调用。
#include
#include
#include
#include
#include
#include
#define MNTTAB "/etc/mnttab"
main()
{
                struct statvfs fsstat;
                struct mnttab my_mnttab;
                FILE *fp;
               
                fp = fopen(MNTTAB, "r");
                if (fp == NULL) {
                        printf("Unable to open mount table.n");
                        exit(-1);
                }
          while (getmntent(fp, &my_mnttab) == 0){
                if (strncmp(my_mnttab.mnt_fstype, "ufs", 3) != 0)
                continue;
               
                memset(&fsstat, 0, sizeof(struct statvfs));
                                if (statvfs(my_mnttab.mnt_mountp, &fsstat) == 0) {
                                printf("File System: %sn", my_mnttab.mnt_mountp);
                                printf("tSpace Total: %lu KBn",
                                fsstat.f_blocks * (fsstat.f_frsize >> 10) );
                                printf("tSpace Available: %lu KBn",
                                fsstat.f_bavail * (fsstat.f_frsize >> 10) );
                                printf("n");
                                }
                } /* end of while */
}
(五)获取网卡信息和IP地址
--------------------------------------------------------------------------------
这个嘛,开个socket,再用ioctl把有关的信息拿到。opensolaris里有个程序,现成的,连测试的main函数都替你写好了:
http://cvs.opensolaris.org/sourc ... ce/lib/interfaces.c
4.9 使用Sunfreeware的gcc33编译,报signal.h解析错误parse error?
直接下载使用sunfreeware的gcc33编译,如没有做额外的处理,编译程序会出如下关于signal.h解析错误:
# --
/usr/include/sys/siginfo.h:259: error: parse error before "ctid_t"
/usr/include/sys/siginfo.h:292: error: parse error before '}' token
/usr/include/sys/siginfo.h:292: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:294: error: parse error before '}' token
/usr/include/sys/siginfo.h:294: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:390: error: parse error before "ctid_t"
/usr/include/sys/siginfo.h:392: error: conflicting types for `__proc'
/usr/include/sys/siginfo.h:261: error: previous declaration of `__proc'
/usr/include/sys/siginfo.h:398: error: conflicting types for `__fault'
/usr/include/sys/siginfo.h:267: error: previous declaration of `__fault'
/usr/include/sys/siginfo.h:404: error: conflicting types for `__file'
/usr/include/sys/siginfo.h:273: error: previous declaration of `__file'
/usr/include/sys/siginfo.h:420: error: conflicting types for `__prof'
/usr/include/sys/siginfo.h:287: error: previous declaration of `__prof'
/usr/include/sys/siginfo.h:424: error: conflicting types for `__rctl'
/usr/include/sys/siginfo.h:291: error: previous declaration of `__rctl'
/usr/include/sys/siginfo.h:426: error: parse error before '}' token
/usr/include/sys/siginfo.h:426: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:428: error: parse error before '}' token
/usr/include/sys/siginfo.h:428: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:432: error: parse error before "k_siginfo_t"
/usr/include/sys/siginfo.h:437: error: parse error before '}' token
/usr/include/sys/siginfo.h:437: error: ISO C forbids data definition
with no type or storage class
In file included from /usr/include/signal.h:26,
这是因为sunfreeware发布的这个版本的gcc是针对比较早,为正式版的的Solaris10,需要更新一下头文件:
cd /usr/local/lib/gcc-lib/i386-pc-solaris2.10/3.3.2/install-tools/
在mkheaders.conf文件前加入SHELL=/bin/sh
并执行
./mkheaders
具体见http://www.sunfreeware.com/programlistintel10.html#gcc33
最好建议大家使用Sun官方的gcc,在/usr/sfw/bin/gcc,版本3.4.3
如果这个版本不行的话,还可以从http://www.sun.com/software/solaris/freeware/
网页上有官方的Solaris Companion CD中选择。建议大家使用,毕竟Sun官方软件在性能上一定会有所优化。
4.10 在Solaris下如何检查应用程序内存泄漏的问题?
可以参考Sun公司MDE的工程师写的文章: http://blog.csdn.net/laoeyu/archive/2006/06/07/777930.aspx
4.11 如何让普通用户能够使用1024号以下的端口?
[S10] 假设用户名为appuser
1. vi /etc/user_attr。
2. 增加“appuser::::defaultpriv=basic,net_privaddr”至最后一行。
3. 重新使用appuser登录,运行应用即可。
[S8] [S9]不支持以上的方法,使用setuid或直接用root运行应用。
来自Hunter Li。
4.12 哪里有Solaris平台输入法程序编程的相关资料?
www.openi18.org 网站。
其中有个IIIMF - Internet Intranet Input Method Framework Project 项目有多个Unix/Linux输入法,包括Solaris的。
http://www.openi18n.org/modules. ... rticle&artid=30
4.13 为什么程序会出现Bus Error?
最近在论坛上看到一个程序员在询问Bus Error的问题。他有一个非常简单的测试程序,
将一个short数组中第二个成员变量的地址附给一个int型的指针,接着给该指针赋值,大致代码如下:
short array[10];
int * p = (int *) &array[1];
*p = 1;
运行的平台是Solaris for SPARC,使用的编译器是GCC,程序执行到指针赋值的时候的出现Bus Error出错信息,
程序coredump。他觉得非常奇怪,代码在X86平台运行的很好。其实这个问题完全是由于CPU硬件不同所造成的。
Bus Error通常都是因为非对齐访问造成的。CPU在设计上为了性能上的考虑,要求待访问,操作的数据地址都要对齐。
如果发现没有对齐的访问,就会向当前进程发出SIGBUS信号,使程序崩溃。RISC包括SPARC都是这种类型的芯片。
而X86架构就没有这种对齐要求。所以这段代码在Solaris 10 for X86下面没有问题,当然这是有性能的代价。
Bus Error也有可能是因为机器物理问题或者访问无效物理地址,但这种情况非常少见。
上面的代码正是这种非对齐访问造成的Bus Error。short是两个字节,其地址偏移量必是2的倍数。而对于int指针来说,
需要偏移量地址是4的倍数的数据,所以直接用int指针来操作地址,就很有可能导致系统发出SIGBUS信号,程序崩溃。
这段程序如果用Sun Studio编译器的话,运行就没有问题。这是因为Sun Studio默认对32位编译使用的参数是-xmemalign=8i,
其中i选项设置明确不会产生这种SIGBUS信号。不过如果编译成64位程序,Sun Studio使用的-xmemalign=8s,其中s选项设置
意味对这种非对齐访问产生SIGBUS信号,仍旧会遇到这个错误。
当然你也可以坚持在SPARC上使用GCC去编译这种代码。GCC有一个Type Attributes特性,在需人工对齐的变量后加上:
__attribute__ ((aligned (4))); 4就是指定偏移量。比如:
short array[10] __attribute__ ((aligned (4)));
不过这个属性只对Linker连接器可见的变量有效,也就是说对local variable无效。而且这种特性只能照顾到该数组,
即第一个元素,并不为数组的每个成员设置偏移量。
如果一定要针对local variable或者数组的每个成员进行偏移量设置,可以考虑定义一个union的类型:
union {
   short s;
   int i;
}
参考:
http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Type-Attributes.html
http://docs.sun.com/source/819-3688/cc_ops.app.html#32726
4.14 如何在Solaris下通过ODBC连接Windows的MS SQL Server?
http://www.unixodbc.org 下载最新版本,然后安装上
www.freetds.org 这是Unix下的SQL Server ODBC驱动,下载stable版本,安装上
这两个软件都是免费的,有帮助文档
来自wtogether:http://community.csdn.net/Expert/topic/5196/5196263.xml
4.15 如何在Solaris下安装lxrun?
lxrun官方网页是: http://www.ugcs.caltech.edu/~steven/lxrun/.
lxrun是一个让用Linux程序运行在Solaris for X86的平台上运行的软件。Sun公司和Steven H. Ginzburg紧密合作,
目前验证过可以运行的程序有:
KDE
Gnome
WordPerfect 7
WordPerfect 8
Applix
Quake2
GIMP
Netscape Navigator
Netscape Communicator
可以从lxrun官方网站下载也可以通过Sun的Companion CD中获取,Companion CD的下载地址:
http://www.sun.com/software/solaris/freeware/
除了lxrun,Solaris还有其他方式运行Linux: 如何运行Linux下的程序?
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-25 18:03 编辑 ]
       
云杉上的蝴蝶 2008-3-24 23:00
        内核和驱动程序开发5.1 Solaris是微内核操作系统吗?
Solaris不是微内核操作系统。现代操作系统可以划分为 monolithic kernel和microkernel, Solaris和Linux一样,
属于 monolithic内核。尽管如此,Solaris仍然是模块化的操作系统,内核模块可以按照需要动态装入和卸载。
5.2 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操作系统自带,不需要额外安装。
有了这些工具,动态观察内核的状态、设置断点,修改内核数据都成为可能。
5.3 哪里可以找到Solaris下的usb驱动程序的开发资料?
Solaris 下的有USB DDK,具体可以参考下面的地址:
http://developers.sun.com/solari ... ort/driver/usb.html
站点上面有文档,还有USB DDK下载地址,还有USB skeleton drivers。
另外,还有一个介绍ugen的白皮书:
http://developers.sun.com/solari ... ups_whitepaper.html
From Colin Zou
> USB overview
Solaris USB FAQ: http://www.sun.com/io_technologies/usb/USB-Faq.html
Lists of USB devices verified on Solaris: http://www.sun.com/io_technologies/usb/USB0.html
USB in the future -- Wireless USB technology: http://opensolaris.org/os/project/wusb/
> Using USB devices on Solaris
Use USB devices on Solaris 10: http://docs.sun.com/app/docs/doc/817-5093/6mkisoput
Use USB devices on Solaris Express:
http://docs.sun.com/app/docs/doc ... vices%22&a=view
Use USB printers on Solaris 10: http://docs.sun.com/app/docs/doc/816-1387/6m7qdms6q?a=view
USB Security Script for USB device access control:
http://developers.sun.com/prodte ... security/index.html
> Develop USB device drivers
Develop USB drivers on Solaris: http://docs.sun.com/app/docs/doc/819-3196/6n5ed4gt2?a=view
USB project page on opensolaris.org: http://opensolaris.org/os/community/device_drivers/projects/usb/
Documents for USB driver development on Solaris:
http://developers.sun.com/solari ... ort/driver/usb.html
> Mail lists for Solaris USB user/developers
usb-help@sun.com
driver-usb@opensolaris.org
driver-discuss@opensolaris.org
wusb-discuss@opensolaris.org
5.4 Solaris默认内核栈大小是多少?
amd64的默认内核栈尺寸是5*PAGESIZE(20k),i386的是2*PAGESIZE(8k),在uts/i86pc/sys/machparam.h中定义;
sparc的默认内核栈尺寸是3*PAGESIZE(24k),在uts/sun4u/sys/machparam.h中定义;
5.5 OpenSolaris的内核源码中的assert()函数起什么作用?
assert()就是断言函数。
Solaris内核可以编译成debug版和非debug版。
assert()只在debug版起作用,如果assert()返回失败,系统会强制因为assertion failed而panic,
并将内存映象存入crash dump文件。
这样程序员可以通过mdb来检查crash dump文件,来分析问题。
5.6 如何用savecore产生live dump?
默认的,系统是用swap分区做dump设备的,系统panic或者reboot -d后,在系统重启时利用swap分区来保存dump的内容。
而savecore -L是live dump,swap分区作为内存的一部分被dump出来,所以,用-L参数是不能使用swap做dump device的。
# dumpadm
     Dump content: kernel pages
      Dump device: /dev/dsk/c0d0s1 (swap)
Savecore directory: /var/crash/boltx-2
Savecore enabled: yes
因此,首先要有一个空闲的设备或者文件,然后用dumpadm设置这个设备或者文件为dedicated的dump设备,
关于dumpadm请看手册man dumpadmin(1M):
# mkfile 1g /export/home/dump
# dumpadm -d /export/home/dump
     Dump content: kernel pages
      Dump device: /export/home/dump (dedicated)
Savecore directory: /var/crash/boltx-2
Savecore enabled: yes
然后,再运行savecore:
# savecore -v -L
dumping to /export/home/dump, offset 65536, content: kernel
100% done: 41184 pages dumped, compression ratio 2.97, dump succeeded
System dump time: Tue Jul 25 18:10:27 2006
Jul 25 18:10:31 unknown savecore: saving system crash dump in /var/crash/boltx-2/*.1
Constructing namelist /var/crash/boltx-2/unix.1
Constructing corefile /var/crash/boltx-2/vmcore.1
100% done: 41184 of 41184 pages saved
5.7 哪里可以找到Solaris下的驱动开发资料?
驱动开发手册
http://gceclub.sun.com.cn/solaris/sddt/index.html (中文)
http://docs.sun.com/app/docs/doc/817-5789?l=zh (英文)
OpenSolaris 驱动开发社区
http://www.opensolaris.org/os/community/device_drivers
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-25 18:09 编辑 ]
       
云杉上的蝴蝶 2008-3-24 23:00
        其它6.1 VMWare
6.1.1 在VMWare下能使用Solaris吗?
[s10]:从5.5.2版本开始,VMWare Workstation开始正式支持Solaris 10 for X86版本,包括32-bit和64-bit。
安装虚机的环境要求和安装Solaris 10一样。
[s10]|[s9]: VMWare Workstation从5.5就开始Experimental支持Solaris 10和Solaris 9。
VMWare Workstation还是收费的,不过VMWare还有一个VMWare Player是免费的,大家在从网上下载一个Solaris 10的VMWare虚拟机映像文件,就可以直接体验Solaris 10了。
VMWare Player的官方网站下载:http://www.vmware.com/download/player/
6.1.2 在VMWare下有针对Solaris使用的VM Tools吗?
VMWare Workstation 5.5.2开始有了针对Solaris使用的VM Tools。可以像其他Guest操作系统一样,
整个桌面显示会自动调节和操作系统之间的切换也是无缝的。
6.1.3 在VMWare下,Solaris如何上网?
VMWare Workstation对虚机Solaris支持有NAT方式,HOST-ONLY方式和Bridge方式。
NAT方式
NAT方式是一种相当简单的方式 仔细看了VM的帮助后我的理解是在VM下solaris是在内网下的 所以考虑用NAT模式 这样可以通过XP 将内网IP翻译为合法的IP。
具体操作:
1 将VM1网卡设置为自动获取IP地址 以启动DHCP
2 在solaris下启动DHCP服务 REBOOT
3 重起后发现DHCP自动加载了IP地址和defaultrouter 地址
但是没有创建/ect/netmasks文件自己根据IP地址创建(it's easy) 但是是发现hostname为UNKNOWN
说明DHCP没有分配给本机名还好我是solaris10 只要在/etc/nodename下写如自己的本机名及可 REBOOT
4 重起后 YEAH 可以看见本机名了 用nslookup可以运行 浏览器也不需要设置代理 呵呵 想来如此简单 搞我这么久 太菜了
HOST-ONLY方式
host-only是另外一种网络方式 相当于这两台机器通过双绞线互连 solaris的TCP/IP配置信息都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的 但是此时solaris是作为内网机与其他机器相隔离的
操作我就简单说一下了
1 把XP的网卡设置为共享给VM1
2 在solaris下将网卡IP地址设置为192.168.0.2 defaultrouter设置为192.168.0.1
3 DNS设置为真实的地址 比如我的是61.139.2.56 REBOOT
也可以上网的
Bridge方式
是ADSL+无线局域网。
1 分配好地址(文件或者命令)
2 然后设置好Gateway
3 接着配置nsswitch.conf
4 最后将nameserver(包括gateway)在resolv.conf 就可以了。
具体设置每一步可以参考OpenSolaris/Solaris中文FAQ
6.1.4 有没有Solaris 10的VMWare虚拟机映像文件下载?
Sun公司已经做好一个VMWare虚拟机映像文件,预装Solaris 10 X86 1/06, Sun Java Enterprise System 2005Q4 (JES),
Sun Studio 11 Integrated Development Environment for C, C++, and Fortran的环境。
整个虚拟机映像文件总共大小将近2.5G。
具体下载地址在:http://developers.sun.com/solari ... aris_apps/index.jsp
将来Sun公司还会出一个简装版的,只预装Solaris 10的VMWare虚拟机映像文件。
除了这个,国外有人还做了一个Solaris 10的VMWare虚拟机映像文件,里面除了Solaris 10,还预装了3个Container,
分别作为Web,Application,Database服务器。
如果想体验Solaris的Container虚拟技术,可以下载下来直接体验。总共大小1956 MB,不过它是个bt种子,
具体见 http://www.vmware.com/vmtn/appliances/directory/227
6.2 Solaris老版本8,9的程序能够直接在Solaris10中跑吗?
Solaris 从2.6一直到10将近10多年时间,它一直保持了很好的兼容性,因为它的Binary Interface没有改变,二进制是兼容的。
所以Solaris 2.6以上(含2.6),上的程序可以直接运行到10上。
Sun有这个承诺Guarantee: http://www.sun.com/software/solaris/popup.jsp?info=45
Solaris虽然提供了二进制是兼容的,但是我们有时候还需要考虑一些二进制下面的问题,比如一些程序,
有可能需要依赖某些非官方的或者非文档化的操作系统实现,C程序库实现,这就难以保证。这个非常少见。
还有一个需要考虑的就程序所些依赖的库。需要确保这些库在Solaris 10下也有。
当然Solaris有分不同平台的版本:SPARC和X86的。因为SPARC和X86的CPU指令不一样,跑在不同版本的本地程序
(不算这种解释性语言Perl, PHP, Java等)不能相互直接复制运行,需要重新编译。即Solaris for SPARC平台的本地程序,不管什么版本都不能运行在Solaris for X86。
6.3 QEMU
6.3.1 在solaris中如何使用qemu安装windows操作系统
下载qemu
wget
http://www.opensolaris.org/os/pr ... l10-i386-opt.pkg.gz
解压
gunzip SUNWqemu-0.8.2_cvs20070120_REV_2007.01.24-sol10-i386-opt.pkg.gz
安装
pkgadd -d SUNWqemu-0.8.2_cvs20070120_REV_2007.01.24-sol10-i386-opt.pkg
创建qemu使用的虚拟磁盘
mkdir /windows
cd /windows
/opt/SUNWqemu/bin/qemu-img create windows.img 3G
/opt/SUNWqemu/bin/qemu -hda windows.img -cdrom /vol/dev/dsk/c1t0d0/xrmpvol_cn -boot d -m 128 -localtime
解释下上面的语法: -hda 是指定硬盘,在本文里我们使用的是刚才创建的/windows/windows.img
-cdrom 指定使用光驱,这个参数后面必须要跟个文件名,在上面的例子里我用的是我的物理光驱
/vol/dev/dsk/c1t0d0/xrmpvol_cn,如果你要使用ISO文件,那就写上文件的路径,xrmpvol_cn是光盘文件夹的名字
(用 df -h 显示)
-m 是指定虚拟机使用的内存大小,后面的数字即是你要指定的内存数,我的是128M
-boot当然就是指定虚拟机启动用的设备,-boot后可以选择的参数是 a ,c ,d .其中a 是指从软盘启动,
c 就是用硬盘启动,d 当然就是光驱启动了。 -localtime 就是说要使用你的实际主板bios上的时间。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics