Solaris 10 版本說明

一般資訊

本節會提供像是 Solaris 10 作業系統運作方式變更等一般資訊。

Single UNIX Specification 版本 3 引入變更

Single UNIX Specification 版本 3 (SUSv3) 為下列 POSIX 作業系統介面提供了更新:

此更新包含下列變更:

Korn Shell 中的 ENV 變數

非互動式 Korn shell 中的環境變數 ENV 不再延伸。這項變更適用於 /bin/ksh/usr/xpg4/bin/sh

編譯器及 SUSv3 應用程式

對於符合 SUSv3 及其他標準的應用程式,應透過使用正確的功能測試巨集、編譯器及選項來建立。另請參閱「standards(5) 線上手冊」。

file 指令

如果帶有 -m 選項,file 指令會在使用者定義的魔術檔案中執行帶簽名的比對。此外,在 x86 環境中,在比對魔術值之前,指令不再將多位元組整數切換成大尾數法 (SPARC) 順序。請參閱「file(1) 線上手冊」和「magic(4) 線上手冊」。

列印功能

snprintf()vsnprintf() 現在傳回在輸入值 n=0 時會被格式化的位元組數量。請參閱「snprintf(3C) 線上手冊」及「vsnprintf(3C) 線上手冊」。

文字編輯器

編輯程式會在讀取 $HOME 中的 .exrc 檔案前,檢查其他條件或在啟動時檢查目前的目錄。請參閱「ex(1) 線上手冊」和「vi(1) 線上手冊」。

64-bit SPARC: 時間函數

如果輸入 time_t 過大,以致無法在 tm struct 中呈現,則下列函數會傳回空指標,並將 errno 設定為 EOVERFLOW

請參閱「gmtime(3C) 線上手冊」、「gmtime_r(3C) 線上手冊」、「localtime(3C) 線上手冊」及「localtime_r(3C) 線上手冊」。

尾隨斜線

只有在路徑指定某個現有的目錄或要建立的目錄時,SUSv3 才允許在路徑名稱中使用尾隨斜線字元 (/)。

/usr/xpg6/bin/usr/xpg4/bin 中的公用程式

/usr/xpg6/bin/usr/xpg4/bin 中的公用程式擁有符合 SUSv3 或符合 XPG4 的運作方式,但與預設的 Solaris 運作方式相衝突。為了讓使用者使用符合 SUSv3 指令行的環境,必須為其正確地配置 PATH。如需更多資訊,請參閱特定公用程式的線上手冊。

sendmail 中已啟用對 TCP 包裝程式的支援

sendmail 公用程式已增加至支援 TCP 包裝程式的服務清單。公用程式增加的功能可能造成 sendmail 在先前已配置有嚴格限制服務的 Solaris 10 系統中拒絕連線。使用 sendmail 常駐程式名稱以啟用 TCP 包裝程式。如需有關 TCP 包裝函式支援的資訊,請參閱「Solaris 10 新增功能」中的「sendmail 8.12 版使用 TCP 包裝程式」中的「sendmail 8.12 版使用 TCP 包裝函式」。如需有關如何配置 TCP 包裝程式的資訊,請參閱封裝於 SUNWtcpd 中的「tcpd(1M) 線上手冊」及「hosts_access(4) 線上手冊」。

x86: 變更為 Solaris fdisk 識別碼

在 Solaris 10 發行版本中,Solaris fdisk 識別碼設定為 0xbf,以方便多重啟動環境的配置,其中包含 Linux 作業系統。在先前的 Solaris 發行版本中,Solaris fdisk 識別碼設定為 0x82,和 Linux 交換分割區的識別碼相同。變更識別碼讓您可以不用先修改 Linux 交換分割區或重新安裝 Linux 作業系統,即可安裝 Solaris 10 作業系統及 Linux 作業系統。

Solaris 作業系統繼續使用 0x82 識別碼辨識和支援 Solaris fdisk。您可以使用 fdisk 指令來切換 0x82 識別碼及 0xbf 識別碼。如果您使用的是 Solaris Live Upgrade 且需使用 0x82 識別碼,luactivate 指令讓您可以將 0xbf 識別碼切換至 0x82 識別碼。

如需更多資訊,請參閱「fdisk(1M) 線上手冊」。

x86: x86 系統中的應用程式記憶體配置的限制

Solaris 應用程式是透過像是 malloc ()brk()mmap() 等函數來配置記憶體。應用程式記憶體配置大小的上限受限於使用者虛擬位址空間的大小。使用者虛擬位址空間中所包含的程式文字、堆疊、資料及程式庫會進一步減少記憶體配置大小的上限。

32 位元運算環境

在 32 位運算環境中,使用者及核心共用 32 位元虛擬位址空間。因此,使用者虛擬位址空間的大小是 4 GB 減去核心虛擬位址空間的大小。核心虛擬位址大小的配置視實體記憶體大小而定。實體記憶體大小增加,使用者位址空間減少。在擁有 8 GB 記憶體的系統中,使用者位址空間大小大約為 3 GB。

如果記憶體配置上限對應用程式來說是不足的,您可以有兩個選項:

64 位元運算環境

在 64 位元運算環境中,32 位元應用程式的虛擬位址空間完全供使用者使用。因此,32 位元應用程式可以配置到 4 GB 整,其中不包括文字、堆疊及程式庫所需的使用者位址空間在內。

對於一些早期的 64 位元 AMD 處理器來說,記憶體配置上限會再少 1 GB。要決定您的處理器是否受影響,請執行下列步驟:

  1. 執行任一 32 位元 shell 的 pmap $$ 指令。

  2. 在程序對映中,檢查是否列出位址大於等於 0xC0000000。如果這些位址不存在,則 Solaris 作業系統會將 32 位元應用程式限制在 4 GB 虛擬位址範圍中最低的 3 GB。

64 位元應用程式可以配置 250 TB 的記憶體,但需要依據使用的應用程式來決定。

x86: Solaris 支援 no execute 位元

x86 平台的 Solaris 10 支援 32 位元及 64 位元模式的 no execute (NX) 位元。NX 位元可以完整實作保護,而不需要在 mmap() 函數等記憶體系統呼叫中使用 PROT_EXEC。之前在 x86 中,所有對映的記憶體隱含都有 PROT_EXEC 設定。具備 Solaris 對 NX 位元的支援,能增強病毒防護能力。

在具有 NX 能力的硬體中,未指定 PROT_EXEC 時,Solaris 作業系統預設會使用 NX 位元。不過,堆疊區段依預設會使用 PROT_EXEC,而非 NX 位元。堆疊區段的預設設定可透過執行下列操作之一來進行變更:

系統管理員透過 eeprom 指令可將 enforce-prot-exec 設定為「off」,將所有 NX 位元的使用停用。系統中裝有缺少 PROT_EXEC 的舊版應用程式時,此變數可做為所有系統的過渡解決方法。