首先感謝oliver, 他先開始了這個項目,並是主要的創作者。用wiki的方式來維護FAQ,非常合適,一個很好點子。同時也歡迎大家一同創作,和大家分享使用Solaris的經驗和技巧。
OpenSolaris/Solaris中文FAQ
Wikipedia,自由的百科全書
本文來自: OpenSolaris中國社區
URL: Solaris中文FAQ
聲明: 本文可自由拷貝、分發、修改及再創作;
- 任何問題/回答/建議/勘誤請mail至討論組以幫助和回饋社區;
討論組: opensolaris-chinese-faq AT googlegroups.com
注:
- 本文檔只覆蓋Solaris 9及以後的平臺上的常見問題
- S9/10/11 分別對應目前Solaris的發行版本9/10/11
- 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也出現了很多衍生版本,如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賬號(免費註冊)。
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。
2.通過vendorid確認網卡的devide id:
# prtconf -vp | grep <網卡的vendor id>
得到可能的devideid後到PCI設備的數據庫得到準確的設備型號。
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作爲引導程序,因此不需要光盤引導:
- 首先,在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用戶的密碼刪除,保存文件、重新啓動後,就不會有口令了。
使用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軟件下載站點
應用程序開發
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文件,來分析問題。