OpenSolaris/Solaris中文FAQ
生活随笔
收集整理的這篇文章主要介紹了
OpenSolaris/Solaris中文FAQ
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉載于 http://blog.chinaunix.net/uid-11193716-id-2896321.html
?
?
OpenSolaris/Solaris中文FAQ (2008-08-04 19:30) 分類: Solaris注:
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"
[attach]496142[/attach]
[attach]496143[/attach]? ???// [attach]496144[/attach]
[attach]496588[/attach]
[attach]496589[/attach]
[attach]496590[/attach]
[attach]496596[/attach]
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-25 20:08 編輯 [/i]]
云杉上的蝴蝶 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的源代碼交叉引用
[url]http://cvs.opensolaris.org/source/[/url]
2.下載tar包,或者有版本管理工具mercurial的版本管理信息的檔案文件:
[url]http://dlc.sun.com/osol/on/downloads/current[/url]
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天。
詳細請看該網址: [url]http://www.sun.com/software/solaris/binaries_program.xml[/url]
云杉上的蝴蝶 2008-3-24 21:34
系統安裝
2.1 如何得到和安裝Solaris?Sun的官方站點提供Solaris 10 免費下載,有DVD和CD格式:[url]http://www.sun.com/software/solaris/get.jsp[/url] (服務器在國外),
需要Sun Online Account賬號(免費注冊)。
安裝方法參考這個網頁[url]http://blog.gceclub.sun.com.cn/index.php?op=ViewArticle&articleId=121&blogId=4[/url]
你可以選擇中文安裝。
如果你是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格式:[url]http://www.sun.com/software/solaris/get.jsp[/url]
(服務器在國外), 需要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。
推薦站點:[url]http://pci-ids.ucw.cz[/url]
2.通過vendorid確認網卡的devide id:
# prtconf -vp | grep <網卡的vendor id>
得到可能的devideid后到PCI設備的數據庫得到準確的設備型號。
推薦站點:[url]http://pci-ids.ucw.cz/[/url]
3.確認vendorid和deviceid后,嘗試Solaris系統自帶的驅動
尋找和系統內和自己device id近似的驅動名:
# grep vendorid /etc/driver_aliases
需要確認設備的廠商和型號是否與找到的驅動相近,可以再次利用PCI設備的數據庫。
如果可以確認,可以嘗試加載該驅動:
# devfsadm
# add_drv -i '"vendorid,deviceid"' <驅動名>
4.尋找其它網卡驅動
1) 第三方網卡驅動列表:[url]http://homepage2.nifty.com/mrym3/taiyodo/eng/[/url]
2) 另一個第三方網卡驅動列表:[url]http://sol-enet.sourceforge.net/[/url]
3)HCL的network列表:[url]http://www.sun.com/bigadmin/hcl/data/sol/[/url]
4) 網卡廠家的網站。例如,Broadcom的網站就有其Solaris平臺的驅動下載
5) Solaris x86驅動的資源:[url]http://solaris-x86.org/software/drivers/[/url]
6)Sun DryDog參考:[url]http://www.sun.drydog.com/faq/6.html#6.7[/url]
5. 提交bug到OpenSolaris社區
1)到[url]http://bugs.opensolaris.org/[/url]
2)用英文填寫好問題描述,最好提供prtconf -vp的輸出和具體聲卡型號
2.5 安裝Solaris X86不能識別聲卡怎么辦?
.確定你的聲卡型號:通過主板/硬件手冊或者windows設備管理器。
2.尋找第三方驅動:
1) OSS的OpenSound for Solaris,支持大多數主流聲卡:[url]http://www.4front-tech.com/download.cgi[/url]
2) 第三方聲卡驅動列表:[url]http://www.tools.de/solaris/audio/beta/[/url]
3)HCL的聲卡列表:[url]http://www.sun.com/bigadmin/hcl/data/sol/[/url]
4) Solaris x86驅動的資源:[url]http://solaris-x86.org/software/drivers/[/url]
5)Sun DryDog參考:[url]http://www.sun.drydog.com/faq/6.html#6.7[/url]
3. 提交bug到OpenSolaris社區
1)到[url]http://bugs.opensolaris.org/[/url]
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, [url]http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=13&thread=40792[/url], 有修正
硬盤安裝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)看一下:[url]http://www.sun.com/bigadmin/hcl[/url] 機器是不是在這個列表里,
2. 如果有的話,請確認以下你的安裝介質,是不是X86版本或者SPARC版本?md5的值是不是正確?
如果沒有的話用Solaris x86 Installation Check Tool看看是不是什么硬件有問題?如果自己比較清楚,
可以看看自己主要的硬件有沒有在HCL支持。
[url]http://www.sun.com/bigadmin/hcl/hcts/install_check.html[/url]
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機器。
具體下載和使用方式見:[url]http://www.sun.com/bigadmin/hcl/hcts/device_detect.html[/url]
2. Sun Intall Check
需要刻錄成光盤,然后以這個光盤來啟動,最終會出一個報告,哪些設備支持,哪些設備有問題。
優點:比較準確;適合DIY的機器;可以批量使用。
缺點:需要刻盤; 針對X86/X64機器。
具體下載和使用方式見:[url]http://www.sun.com/bigadmin/hcl/hcts/install_check.html[/url]
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 1
3.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
[url]http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=14&thread=38567[/url]
3.1.4 如何重新啟動系統?
一般有兩種方式,一種是在終端方式是輸入reboot命令。另一種是在桌面方式下通過鼠標
選取相應的選擇項來完成,例如在JDS方式下可以選取java啟動-->注銷xxx-->重啟動計算機
或者使用
# init 6
3.1.5 如何關閉系統?
關閉solaris系統有這里提供兩種方式,一種是在終端方式下輸入shutdown命令來完成,
另一種方式是在桌面方式下通過選取相應的選項來完成的。例如在JDS環境下可以選取
java 啟動-->注銷xxx-->關閉系統
3.1.6 如何用命令關閉系統并斷電?
可以在終端方式下使用poweroff命令來完成?;蛘呤褂?
# init 5
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-24 21:55 編輯 [/i]]
云杉上的蝴蝶 2008-3-24 21:54
使用/管理/配置 part 2
3.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 <pkg絕對路徑名>
察看#pkginfo #pkgchk #prodreg
刪除#pkgrm <軟件包pkg名>
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中,
也可免費單獨下載:
[url]http://www.sun.com/software/solaris/freeware/[/url]
4. OpenSolaris的BrandZ技術,通過Solaris的Container技術虛擬Linux,這個已經在OpenSolaris開源,
現在這個技術還沒有產品化,不過我們可以試先體驗一下:
[url]http://www.sun.com/download/products.xml?id=44247cfd[/url]
這里還有一個中文安裝實例 [url]http://blog.gceclub.sun.com.cn/index.php?op=ViewArticle&articleId=943&blogId=520[/url]
5. 通過開源Xen技術:[url]http://xen.sourceforge.net/[/url]
6. 通過CPU模擬器 - QEMU, 可以在Solaris的qemu上安裝Linux: [url]http://www.blastwave.org/packages.php/qemu[/url]
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 在運行一個可執行的程序的時候被提示“權限被否定”是怎么回事?
這是因為雖然他是個可執行的程序但是沒有被賦予執行權限??梢允褂胏hmod +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文件。
下載地址: [url]http://www.rarlab.com/rar/unrar-sol-intel.gz[/url]
安裝:
gunzip unrar-sol-intel.gz
chmod +x unrar
mv unrar /usr/bin
使用方法:
unrar filename.rar
云杉上的蝴蝶 2008-3-24 22:17
使用/管理/配置 part 3
3.3 Shell操作和使用3.3.1 如何設置Shell環境變量?
[attach]496145[/attach]
3.3.2 Shell的配置文件和讀取順序?
[attach]496146[/attach]
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 [url]www.sun.com[/url]
3.4.8 DHCP客戶端設置?
創建兩個空文件,<interface>是網卡適配器的名字,這兩個文件用于系統啟動時自動啟動dhcp。
# touch /etc/hostname.<interface>
# touch /etc/dhcp.<interface>
網卡適配器的名字的我們可以通過ifconfig -a 或者文件/etc/path_to_inst得到。如果需要立即使用dhcp的話,可以執行一下命令:
# ifconfig <interface> dhcp start
3.4.9 網絡配置生效的問題?
[attach]496147[/attach]
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需要從[url]www.sunfreeware.com[/url]上下載安裝)
[S8]:Solaris 8的mdb命令沒有::memstat命令,需要從[url]www.solarisinternals.com[/url]下載,然后運行如下命令裝入::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論壇的回答:
[url]http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=14&thread=41005[/url]
不要用靜態路由,把/etc/defaultrouter 干掉。
用動態路由(通過路由協議自動發現路由)。
先確認動態路由是否激活:
#routeadm 回車,如果發現沒有,則:
#routeadm -e ipv4-routing
#routeadm -u
如果你非要自己指定網關,則創建/etc/gateways文件,里面加上:
net <remote network address> gateway <gateway-ip address> metric <hops> passive
(passive表示盡量用靜態配置,不交換路由協議的信息)
3.4.16 如何修改默認locale?
修改文件/etc/default/init,添加或者修改行(其中locale用實際要設定的locale替代)
? ?? ?LANG=locale
也可以用命令sys-unconfig重新設置系統默認語言網絡。
3.2.17 如何查看網關信息?
可以使用“ netstat -r”命令進行查看。
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-24 22:34 編輯 [/i]]
云杉上的蝴蝶 2008-3-24 22:50
使用/管理/配置 part 4
3.5 存儲設備使用(硬盤,USB硬盤,CD, DVD等)3.5.1 如何查看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退出菜單。也可直接按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/<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加載時候的參數。
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 的 [url]http://bbs.chinaunix.net/viewthread.php?tid=871738&extra=page%3D1[/url]
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 <logical device name> <mountpoint>
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 [url]http://www.belenix.org/binfiles/FSWpart.tar.gz[/url]
??Uncompress:??gunzip -c FSWpart.tar.gz | tar xvf -
??Install:??pkgadd -d . FSWpart
2) Install the FSWfsmisc package
??Download [url]http://www.belenix.org/binfiles/FSWfsmisc.tar.gz[/url]
??Uncompress:??gunzip -c FSWfsmisc.tar.gz | tar xvf -
??Install:??pkgadd -d . FSWfsmisc
3.5.9 如何mount上NTFS文件系統(read-only)?
Download the binaries from [url]http://sourceforge.net/project/showfiles.php?group_id=169514[/url]
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 <== NTFS
? ?? ???3? ?? ?? ?? ?? ?? ???Active? ?? ? Solaris2? ?? ?7770? ?? ? 20773? ?? ?13004? ?? ?34
? ?? ???4? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? EXTLBA? ? 20774? ?? ?38763? ?? ? 17990? ?? ?46
SELECT ONE OF THE FOLLOWING:
??1. Create a partition
??2. Specify the active partition
??3. Delete a partition
??4. Change between Solaris and Solaris2 Partition IDs
??5. Exit (update disk configuration and exit)
??6. Cancel (exit without updating disk configuration)
Enter Selection: 5
Press 5 to exit from fdisk menu. Note that your NTFS partition here is 2 .
Now to mount the NTFS filesystem run the below command.
bash-3.00# ./mount_ntfs.opensol-x86-binary /dev/rdsk/c1d0p2 /mnt/windows
To unmount the file system type "kill 15554".
bash-3.00# mount / on /dev/dsk/c1d0s0 read/write/setuid/devices/intr/largefiles/logging/xattr/οnerrοr=panic/dev=1980000
on Wed Jul 12 16:01:09 2006 /devices on /devices read/write/setuid/devices/dev=4380000
on Wed Jul 12 16:00:47 2006 /system/contract on ctfs read/write/setuid/devices/dev=43c0001
on Wed Jul 12 16:00:47 2006 /proc on proc read/write/setuid/devices/dev=4400000
on Wed Jul 12 16:00:47 2006 /etc/mnttab on mnttab read/write/setuid/devices/dev=4440001
on Wed Jul 12 16:00:47 2006 /etc/svc/volatile on swap read/write/setuid/devices/xattr/dev=4480001
on Wed Jul 12 16:00:47 2006 /system/object on objfs read/write/setuid/devices/dev=44c0001
on Wed Jul 12 16:00:47 2006 /lib/libc.so.1 on /usr/lib/libc/libc_hwcap2.so.1 read/write/setuid/devices/dev=1980000
on Wed Jul 12 16:01:00 2006 /dev/fd on fd read/write/setuid/devices/dev=4680001 on Wed Jul 12 16:01:09 2006 /tmp
on swap read/write/setuid/devices/xattr/dev=4480002
on Wed Jul 12 16:01:11 2006 /var/run
on swap read/write/setuid/devices/xattr/dev=4480003
on Wed Jul 12 16:01:11 2006 /data
on /dev/dsk/c1d0p1 read/write/setuid/devices/hidden/nofoldcase/dev=1980011
on Wed Jul 12 16:01:18 2006 /mnt/windows
on 127.0.0.1:/ remote/read only/setuid/devices/port=53805/public/vers=2/proto=udp/xattr/dev=4740003
on Wed Jul 12 18:02:25 2006
For unmounting the filesystem you need to kill the process. eg) bash-3.00# kill 15554
3.6 系統軟件使用
3.6.1 常用軟件下載
Web瀏覽器:
Mozilla FireFox: [url]ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.1/contrib/[/url]
郵件客戶端:
Mozilla Thunderbird: [url]ftp://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5/contrib/[/url]
Acrobat: Solaris下有PDF閱讀器嗎?
辦公軟件:
Solaris 10自帶StarOffice 7。也選擇高版本的OpenOffice 2.0,該版本對應于StarOffice 8.0。
多媒體播放器:
RealPlayer:[url]http://forms.helixcommunity.org/helix/builds/?category=realplay-stable[/url]
聊天工具:
gaim
3.6.2 Solaris軟件下載站點
Sun Solaris Companion CD
Sunfreeware
BlastWave
Solaris Packages Archive
3.6.3 Solaris下有PDF閱讀器嗎?
Solaris 11 集成了一個PDF閱讀器:Evince,可以在所有平臺上使用。
Solaris Express on sparc集成了Acrobat Reader,但是最新的Acrobat Reader目前不支持Solaris x86。
不過有一個4.05版 可以在Solaris x86上,看一般的PDF文檔和中文都沒有問題:
[url]http://download.adobe.com/pub/adobe/acrobatreader/unix/4.x/sunx86-ar-405.tar.gz[/url]
[url]http://download.adobe.com/pub/adobe/acrobatreader/unix/4.x/chsfont.tar.gz[/url]
3.6.4 Solaris有電子詞典嗎?
如果有SUNWstardict,就運行:
/usr/bin/stardict
更多中文詞典:[url]http://stardict.sourceforge.net/Dictionaries_zh_CN.php[/url]
3.7 系統常用服務管理(Telnet,FTP, SSH等)
3.7.1 使用FTP時,不能以root用戶登錄系統,應修改什么配置文件?
打開文件 ftpusers,如果有root,行首加#號注釋掉就可以了。
[S10]Solaris 10 ftpusers文件在/etc/ftpd目錄下。
3.7.2 使用Telnet時,不能以root用戶登錄系統,應修改什么配置文件?
將/etc/default/login把CONSOLE=/dev/console該行注釋掉,就可以用root遠程telnet本機。
3.7.3 使用SSH時,不能以root用戶登錄系統,應修改什么配置文件?
[S10]
將/etc/ssh/sshd_config文件中的PermitRootLogin的值改為yes,重啟ssh服務,就可以用root遠程telnet本機。
重啟命令:
# svcadm restart network/ssh
3.7.4 使用Samba,如何在客戶機上顯示中文?
[S10]Solaris 10自帶的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不需要特別的設置,中文都能正常顯示
[url]http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=14&thread=33758[/url]
3.7.5 如何使用Samba實現Solaris10與Windows間的文件共享?
詳見本論壇配置SAMBA相關帖子:
3.7.6 如何限制用戶可使用FTP不能用Telnet?
[S10] 需要自己創建一個/etc/shells。添加一行 bash-3.00# cat /etc/shells /bin/true bash-3.00# grep user1 /etc/passwd user1:x:60005:1::/export/home/user1:/bin/true
這樣該用戶就可以ftp,但不可以有shell會話了。
3.7.7 如何限制用戶FTP只能使用指定目錄?
[S10]如果你要限制用戶ftp后只能在指定目錄活動,則修改/etc/ftpd/ftpaccess 加上 (例子): guestuser user1 guest-root /tmp user1
這樣,user1用戶ftp登陸后,就進到了/tmp下,但隨后就被chroot了,即根目錄變成了/tmp。這樣用戶就不能到其它地方活動了。
3.11 Oracle
3.11.1 Oracle能安裝在Solaris 10 x86-32上嗎?
Oracle 10g r2只支持Solaris 10 x86-64,而Oracle 10g r1只有32-bit。裝Oracle 10g r1時,在Disk1/install/oraparam.ini文件里
Solaris=5.6,5.7,5.8,5.9 加上5.10 就可以了。
3.12 系統安全管理
3.12.1 如何修改登陸系統記錄
1.首先用fwtmp命令將wtmpx文件轉化為ASCII格式
/usr/lib/acct/fwtmp </var/adm/wtmpx >dump
2.然后修改其中不需要的記錄
vi dump
3.最后把修改后的文件轉化為二進制格式
/usr/lib/acct/fwtmp -ic <dump >/var/adm/wtmpx
4.執行last命令查看修改后的記錄
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-25 17:17 編輯 [/i]]
云杉上的蝴蝶 2008-3-24 22:59
占位待編輯!~~云杉上的蝴蝶 2008-3-24 23:00
應用程序開發
4.1 Sun Studio4.1.1 Sun Studio是免費的嗎?
Sun Studio是一個C/C++, Fortan的IDE開發環境,含有C/C++, Fortan編譯器。
可以在Solaris平臺(SPARC,X86)和Linux平臺上使用。
Sun Studio最新版本是11,是完全免費下載,免費使用的。下載地址是:[url]http://developers.sun.com/sunstudio/downloads/index.jsp[/url]
4.1.2 哪里可以下載到Sun Studio?
[url]http://developers.sun.com/sunstudio/downloads/index.jsp[/url]
需要Sun SDN(Sun Developer Network)賬號,可以免費注冊獲得。
4.1.3 Sun Studio和GCC相比有什么優勢?
主要是在性能Performance, 并行運算Parallelism,和工作效率Productivity
性能
打破多項世界紀錄,具體可以參考[url]http://developers.sun.com/sunstudio/products/benchmarks.html[/url]
特別是在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下載地址:
[url]http://developers.sun.com/prodtech/cc/downloads/patches/index.jsp[/url]
如果需要看堆棧,往往這個對大家比較重要,我們可以用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或者單個包:
[url]http://www.sun.com/software/solaris/freeware/[/url] 也有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的官方站點免費下載[url]http://www.sun.com/software/solaris/freeware/[/url]
當然如果要追求最好的性能,可以選擇Sun公司的編譯器:Sun Studio 11,它也是免費的。
下載地址:[url]http://developers.sun.com/prodtech/cc/products/get.html[/url]
4.5 在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參數。
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 [url]http://blog.gceclub.sun.com.cn/index.php?op=ViewArticle&articleId=1222&blogId=520[/url]
(一)獲取磁盤的動態使用狀況
--------------------------------------------------------------------------------
其實系統的動態信息都可以從Solaris里的kstat工具得到。vmstat之類的工具都是基于kstat。有一篇很好的文章講了kstat的基本知識和數據結構,要想寫出適合自己要求的系統監控代碼,應該先看看這篇文章:[url]http: //developers.sun.com/solaris/articles/kstatc.html[/url]
以下的例子就是根據這篇文章里的代碼改寫的。
#include <kstat.h>
#include <stdio.h>
#include <inttypes.h>
#include <unistd.h>
#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, "<<State Changed>>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 <kstat.h>
#include <stdio.h>
#include <inttypes.h>
#include <unistd.h>
#include <sys/sysinfo.h>
#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, "<<State Changed>>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 <unistd.h>
#include <sys/types.h>
#include <stdio.h>
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 <sys/types.h>
#include <sys/statvfs.h>
#include <stdio.h>
#include <strings.h>
#include <sys/mnttab.h>
#include <stdlib.h>
#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函數都替你寫好了:
[url]http://cvs.opensolaris.org/source/xref/sfw/usr/src/cmd/samba/samba-3.0.21b/source/lib/interfaces.c[/url]
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
具體見[url]http://www.sunfreeware.com/programlistintel10.html#gcc33[/url]
最好建議大家使用Sun官方的gcc,在/usr/sfw/bin/gcc,版本3.4.3
如果這個版本不行的話,還可以從[url]http://www.sun.com/software/solaris/freeware/[/url] 網頁上有官方的Solaris Companion CD中選擇。建議大家使用,畢竟Sun官方軟件在性能上一定會有所優化。
4.10 在Solaris下如何檢查應用程序內存泄漏的問題?
可以參考Sun公司MDE的工程師寫的文章: [url]http://blog.csdn.net/laoeyu/archive/2006/06/07/777930.aspx[/url]
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平臺輸入法程序編程的相關資料?
[url]www.openi18.org[/url]網站。
其中有個IIIMF - Internet Intranet Input Method Framework Project 項目有多個Unix/Linux輸入法,包括Solaris的。
[url]http://www.openi18n.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=30[/url]
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;
}
參考:
[url]http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Type-Attributes.html[/url]
[url]http://docs.sun.com/source/819-3688/cc_ops.app.html#32726[/url]
4.14 如何在Solaris下通過ODBC連接Windows的MS SQL Server?
[url]http://www.unixodbc.org[/url] 下載最新版本,然后安裝上
[url]www.freetds.org[/url] 這是Unix下的SQL Server ODBC驅動,下載stable版本,安裝上
這兩個軟件都是免費的,有幫助文檔
來自wtogether:[url]http://community.csdn.net/Expert/topic/5196/5196263.xml[/url]
4.15 如何在Solaris下安裝lxrun?
lxrun官方網頁是: [url]http://www.ugcs.caltech.edu/~steven/lxrun/.[/url]
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的下載地址:
[url]http://www.sun.com/software/solaris/freeware/[/url]
除了lxrun,Solaris還有其他方式運行Linux: 如何運行Linux下的程序?
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-25 18:03 編輯 [/i]]
云杉上的蝴蝶 2008-3-24 23:00
內核和驅動程序開發
5.1 Solaris是微內核操作系統嗎?Solaris不是微內核操作系統?,F代操作系統可以劃分為 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,具體可以參考下面的地址:
[url]http://developers.sun.com/solaris/developer/support/driver/usb.html[/url]
站點上面有文檔,還有USB DDK下載地址,還有USB skeleton drivers。
另外,還有一個介紹ugen的白皮書:
[url]http://developers.sun.com/solaris/developer/support/driver/docs/usbups_whitepaper.html[/url]
From Colin Zou
> USB overview
Solaris USB FAQ: [url]http://www.sun.com/io_technologies/usb/USB-Faq.html[/url]
Lists of USB devices verified on Solaris: [url]http://www.sun.com/io_technologies/usb/USB0.html[/url]
USB in the future -- Wireless USB technology: [url]http://opensolaris.org/os/project/wusb/[/url]
> Using USB devices on Solaris
Use USB devices on Solaris 10: [url]http://docs.sun.com/app/docs/doc/817-5093/6mkisoput[/url]
Use USB devices on Solaris Express: [url]http://docs.sun.com/app/docs/doc/819-2723/6n50a1mqg?q=%22Using+USB+Devices%22&a=view[/url]
Use USB printers on Solaris 10: [url]http://docs.sun.com/app/docs/doc/816-1387/6m7qdms6q?a=view[/url]
USB Security Script for USB device access control: [url]http://developers.sun.com/prodtech/solaris/driverdev/reference/codesamples/usb_security/index.html[/url]
> Develop USB device drivers
Develop USB drivers on Solaris: [url]http://docs.sun.com/app/docs/doc/819-3196/6n5ed4gt2?a=view[/url]
USB project page on opensolaris.org: [url]http://opensolaris.org/os/community/device_drivers/projects/usb/[/url]
Documents for USB driver development on Solaris:
[url]http://developers.sun.com/solaris/developer/support/driver/usb.html[/url]
> Mail lists for Solaris USB user/developers
[email]usb-help@sun.com[/email]
[email]driver-usb@opensolaris.org[/email]
[email]driver-discuss@opensolaris.org[/email]
[email]wusb-discuss@opensolaris.org[/email]
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下的驅動開發資料?
驅動開發手冊
[url]http://gceclub.sun.com.cn/solaris/sddt/index.html[/url] (中文)
[url]http://docs.sun.com/app/docs/doc/817-5789?l=zh[/url] (英文)
OpenSolaris 驅動開發社區
[url]http://www.opensolaris.org/os/community/device_drivers[/url]
[[i] 本帖最后由 云杉上的蝴蝶 于 2008-3-25 18:09 編輯 [/i]]
云杉上的蝴蝶 2008-3-24 23:00
其它
6.1 VMWare6.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的官方網站下載:[url]http://www.vmware.com/download/player/[/url]
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。
具體下載地址在:[url]http://developers.sun.com/solaris/downloads/solaris_apps/index.jsp[/url]
將來Sun公司還會出一個簡裝版的,只預裝Solaris 10的VMWare虛擬機映像文件。
除了這個,國外有人還做了一個Solaris 10的VMWare虛擬機映像文件,里面除了Solaris 10,還預裝了3個Container,
分別作為Web,Application,Database服務器。
如果想體驗Solaris的Container虛擬技術,可以下載下來直接體驗??偣泊笮?956 MB,不過它是個bt種子,
具體見 [url]http://www.vmware.com/vmtn/appliances/directory/227[/url]
6.2 Solaris老版本8,9的程序能夠直接在Solaris10中跑嗎?
Solaris 從2.6一直到10將近10多年時間,它一直保持了很好的兼容性,因為它的Binary Interface沒有改變,二進制是兼容的。
所以Solaris 2.6以上(含2.6),上的程序可以直接運行到10上。
Sun有這個承諾Guarantee: [url]http://www.sun.com/software/solaris/popup.jsp?info=45[/url]
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 [url]http://www.opensolaris.org/os/project/qemu/downloads/SUNWqemu-0.8.2_cvs20070120_REV_2007.01.24-sol10-i386-opt.pkg.gz[/url]
解壓
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上的時間。 博客推薦文章
- lighttpd配置之用戶驗證(mod_auth) (1分鐘前)
- Linux 2.6下SPI設備模型 (20分鐘前)
- 簡單的procedure程序 (25分鐘前)
- RPGLE中簡單的指針用法 (39分鐘前)
- linux-Tcp IP協議棧源碼閱讀筆記 (49分鐘前)
?
總結
以上是生活随笔為你收集整理的OpenSolaris/Solaris中文FAQ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java链表奇数倒序偶数顺序_将链表中的
- 下一篇: swiper 上滑触发_在绝地求生加入滑