OpenSolaris/Solaris中文FAQ - OpenSolaris

来源:百度文库 编辑:神马文学网 时间:2024/04/29 11:59:00

OpenSolaris/Solaris中文FAQ

Wikipedia,自由的百科全书

(重定向自Opensolaris chinese faq)

维护者: Oliver Adamzhang


本文来自: OpenSolaris中国社区

URL: http://wiki.gceclub.sun.com.cn/index.php/Opensolaris_chinese_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等特定平台


目录

[隐藏]
  • 1 一般讨论
    • 1.1 OpenSolaris和Solaris的区别?
    • 1.2 Solaris有那些主要版本?
    • 1.3 Sun OS和Solaris有什么区别?
    • 1.4 OpenSolaris的版本有哪些?
    • 1.5 OpenSolaris是GPL的吗?
    • 1.6 学习OpenSolaris/Solaris有哪些可用的资源?
  • 2 系统安装
    • 2.1 如何得到和安装Solaris?
    • 2.2 安装Solaris对硬件有什么要求?
    • 2.3 安装Solaris X86不能识别网卡怎么办?
    • 2.4 安装Solaris X86不能识别声卡怎么办?
    • 2.5 如何让安装一个Solaris/Windows XP/Linux共存的操作系统?
    • 2.6 VMware 5.5版本上,Solaris安装停止在skipped interface pcn0就不动了?
    • 2.7 安装后,显示分辨率太低,如何调整分辨率啊?
  • 3 使用/管理/配置
    • 3.1 Solaris下有PDF阅读器吗?
    • 3.2 Solaris有电子词典吗?
    • 3.3 如何查看OpenSolaris/Solaris的版本信息?
    • 3.4 如何查看系统内核是32位的还是64位的?
    • 3.5 如何查看系统中CPU的数目?
    • 3.6 为什么不能在/home下创建目录?
    • 3.7 如何查看solaris下安装了有几块硬盘?
    • 3.8 如何在Solaris下使用USB存储设备?
    • 3.9 如何察看Solaris系统的内存大小及使用情况?
    • 3.10 如何修改主机名?
    • 3.11 如何修改IP地址?
    • 3.12 DNS客户端的设置
    • 3.13 DHCP客户端设置
    • 3.14 网络配置生效的问题
    • 3.15 Solaris下如何修改mac地址?
    • 3.16 Solaris下如何给机器添加一个新硬件?
    • 3.17 忘记了root密码,如何解决?
    • 3.18 使用FTP时,不能以root用户登录系统,应修改什么配置文件?
    • 3.19 使用Telnet时,不能以root用户登录系统,应修改什么配置文件?
    • 3.20 Solaris下如何修改网卡的传输模式呢?
    • 3.21 如何使用串口做系统控制台?
    • 3.22 /目录的空间满了,怎么扩容?
    • 3.23 Solaris如何设置ADSL拨号上网?
    • 3.24 怎么让Solaris默认不启动X window?
    • 3.25 如何mount上文件系统为FAT32/PCFS/DOS的硬盘
    • 3.26 如何检查硬盘坏道
    • 3.27 如何刻录光盘?
    • 3.28 如何制作光盘镜像iso文件?
    • 3.29 如何虚拟光驱,读取iso中的文件
    • 3.30 重装 Windows后Grub失效,如何重新安装Grub
    • 3.31 bootblk损坏,如何修复
    • 3.32 如何添加用户
    • 3.33 如何设置Shell环境变量
    • 3.34 Shell的配置文件和读取顺序
    • 3.35 如何安装软件包软(Package)?
    • 3.36 如何打Patch?
    • 3.37 如何打开压缩的文件?
    • 3.38 如何去掉文本中^M?
    • 3.39 使用Samba,如何在客户机上显示中文
    • 3.40 如何运行Linux下的程序?
  • 4 常用软件使用
    • 4.1 常用软件下载
    • 4.2 Solaris软件下载站点
  • 5 应用程序开发
    • 5.1 Solaris下如何安装gcc编译器?
    • 5.2 Solaris下cc为什么不能用?
    • 5.3 在Solaris下编译socket程序时发生“符号参照错误”提示?
    • 5.4 用dbx打开core文件后,敲入where命令后dbx崩溃?
    • 5.5 Python在Solaris下是默认安装的吗?
    • 5.6 如何修改文件描述符限制?
  • 6 内核和驱动程序开发
    • 6.1 Solaris是微内核操作系统吗?
    • 6.2 Solaris上有什么样的内核级调试器?
    • 6.3 哪里可以找到Solaris下的usb驱动程序的开发资料?
    • 6.4 Solaris默认内核栈大小是多少?
    • 6.5 OpenSolaris的内核源码中的assert()函数起什么作用?

[编辑]

一般讨论

[编辑]

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也出现了很多衍生版本,如Polaris、Nexenta、Schillix和Belenix。其中Polaris已经支持了IBM的PowerPC平台。

[编辑]

Sun OS和Solaris有什么区别?

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

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

OpenSolaris的版本有哪些?

OpenSolaris出现了很多衍生版本,如Polaris、Nexenta、Schillix和Belenix。其中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账号(免费注册)。

安装方法参考这个网页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_aliasesaudio810 "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_aliasesaudiovia823x "pci1106,3059"

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

# devfsadm# add_drv -i '"vendorid,deviceid"' 

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-386root            (hd0,1)kernel          /vmlinuz-2.6.12-10-386 root=/dev/hda3 ro quietinitrd          /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 -vpThe 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...doneAVAILABLE DISK SELECTIONS:0. c0t0d0 /pci@1f,4000/scsi@3/sd@0,01. c0t1d0 /pci@1f,4000/scsi@3/sd@1,02. c0t2d0 /pci@1f,4000/scsi@3/sd@2,03. c0t3d0 /pci@1f,4000/scsi@3/sd@3,04. c2t0d0 /pci@6,4000/scsi@4/sd@0,05. c2t1d0 /pci@6,4000/scsi@4/sd@1,06. c2t2d0 /pci@6,4000/scsi@4/sd@2,0Specify disk (enter its number): 0selecting c0t0d0[disk formatted]

随便选一个盘 再按Q退出菜单。也可直接按Ctrl+D的组合键退出

[编辑]

如何在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设备的路径:

# rmformatLooking for devices...1. Logical Node: /dev/rdsk/c3t0d0p0Physical Node: /pci@0,0/pci1028,151@1d,7/storage@4/disk@0,0Connected Device: HTS42404 0M9AT00Device 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 MemMemory 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.confnameserver 192.168.2.1

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

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

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

3. 最后我们可以通过nslookup来确认,设置是否正确。例如,如果设置的是Internet的DNS服务器的话,我们就可以:

nslookup www.sun.com

[编辑]

DHCP客户端设置

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

# touch /etc/hostname.# touch /etc/dhcp.

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

# ifconfig  dhcp start


[编辑]

网络配置生效的问题

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

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)


[编辑]

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

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的控制台输出

[编辑]

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

这个比较麻烦.如果没有引入卷管理方式的话,扩容/一般认为不能这样做. 因为在分配柱面的地址没有办法做到. 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_majorsppp 146sppptun 147

编辑拨号配置文件

# vi /etc/ppp/peers/bohao        添加如下几行sppptunplugin pppoe.soconnect "/usr/lib/inet/pppoec hme1"        #hme1是与MODEM相连的网卡persist                                        #自动重播user "USERNAME"                                # usernamenoauthnoipdefaultnoccpnovjnoaccompnopcompdefaultroute

存盘退出由于你的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 hme1sppptun 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 --helpUsage: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/: /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加载时候的参数。


[编辑]

如何检查硬盘坏道

# 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
察看#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文件。


[编辑]

使用Samba,如何在客户机上显示中文

你是指的solaris自带的samba3.0.4吗?我前两天看了一下,用/etc/sfw缺省配置,在WinXP下去访问没甚么问题,只是用telnet终端去看发现是乱码。查了以下man samba, 发现unix charset 缺省是UTF-8编码的。因此修改 smb.conf的[global]节,加上: unix charset = GBK dos charset = GBK display charset = GBK 重启samba即O.K. 注意不要写成zh.GBK, zh_CN.GBK, zh.UTF-8, ASCII,都没用。另外sunsolve.sun.com上有新的samba patch,可以让你升级到3.0.11.

Solaris 9上没问题可能是因为solaris 9上自带的samba是2.x版本的,好想你以zh.GBK的locale起动samba不需要特别的设置,中文都能正常显示 http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=14&thread=33758


[编辑]

如何运行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 #include 

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

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

3XNET - 标准socket库

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


[编辑]

用dbx打开core文件后,敲入where命令后dbx崩溃?

先确保Sun Studio的patch都已经到上。Patch下载地址:http://developers.sun.com/prodtech/cc/downloads/patches/index.jsp
如果需要看堆栈,往往这个对大家比较重要,我们可以用pstack命令察看core文件的堆栈。

[编辑]

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

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

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

# pkginfo | grep PythonGNOME2      SUNWPython                       The Python interpreter, libraries and utilitiesGNOME2      SUNWPython-devel                 The Python interpreter, libraries and utilities - develper files - platform dependent, /usr filesystemGNOME2      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文件,来分析问题。

取自"http://wiki.gceclub.sun.com.cn/index.php/OpenSolaris/Solaris%E4%B8%AD%E6%96%87FAQ"
Views
  • 条目
  • 讨论
  • 编辑
  • History
Personal tools
  • 用户登录
导航
  • 首页
  • 社区
  • 新闻动态
  • 最近更改
  • 随机页面
  • 帮助
  • Donations
 
工具
  • 链入页面
  • 链出更改
  • 特殊页面
  • 可打印版
  • 最后更改03:19 2006年7月3日.
  • 本页面已经被浏览24,264次。
  • 关于OpenSolaris中文wiki
  • Disclaimers