Solaris中文FAQ

最近花了一些時間在寫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等特定平臺


目錄

[隱藏]

<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "顯示"; var tocHideText = "隱藏"; showTocToggle(); } </script>

一般討論

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文件,來分析問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章