Solaris 10 の概要

開発者用ツールの機能拡張

この節では、Solaris 10 3/05 リリースに含まれる開発ツールについて、新しい機能だけでなく、Solaris 9 OS が 2002 年 5 月にはじめて配布されたあとに拡張された機能拡張も含めて説明します。DTrace 動的トレース機能は特に重要な機能です。

開発者は、セキュリティーとシステム管理のセクションで説明した次の新機能にも目を通すことをお勧めします。

動的トレース機能

この機能は、Solaris Express 11/03 で新しく追加されました。

Solaris DTrace は、Solaris のユーザー、管理者、および開発者がカーネルおよびユーザープロセスを監視するための、包括的な新しい動的トレース機能です。詳細は、「DTrace 動的トレース機能」を参照してください。

GCC Version 3.4.3

この機能は、Solaris 10 3/05 で新しく追加されました。

GCC は、GNU Software Foundation から提供されたオープンソースの「C」コンパイラです。構築ツールには、gmakebisonbinutilsgnuM4、および flex があります。

Perl Version 5.8.4

この機能は、Solaris Express 8/04 で新しく追加されました。

Solaris 10 OS では、新しいデフォルトバージョンの Perl (Practical Extraction and Report Language) を使用できます。新しいデフォルトバージョンの Perl は version 5.8.4 です。Solaris 10 ソフトウェアのアップグレード後に手動でインストールしたモジュールはすべて、再インストールする必要があります。モジュールのインストール方法については、『Solaris のシステム管理 (ネットワークサービス)』の「Perl 5」を参照してください。

Perl の詳細については、perl(1) のマニュアルページを参照してください。

スレッド単位モードの機能拡張

この機能は、Solaris Express 8/04 で新しく追加されました。

コマンド trusspstack、および pflags が更新され、プロセス内またはコア内の個々のスレッドをユーザーが指定できるようになりました。開発者とシステム管理者は、大規模マルチスレッドアプリケーションの動作をよりよく理解できるほか、特定のスレッドに的を絞ってデバッグすることができます。

詳細は、次のマニュアルページを参照してください。

USB エンドユーザーデバイスのサポートの機能拡張

これらの拡張は、Solaris Express 5/04 で新しく追加されました。新しいプログラミングインタフェースが、Solaris Express 8/04 で追加されました。

今回の Solaris リリースでは、現在市販されているすべての Edgeport USB - シリアル変換デバイスを利用できます。USB 1.1 オーディオデバイスなどの等時性 (アイソクロナス) 転送デバイスも、USB 2.0 高速ハブに接続して使用できるようになりました。

新しいプログラミングインタフェース

これらのインタフェースは、Solaris Express 8/04 で新しく追加されました。

Universal Serial Bus Architecture (USBA) 2.0 プログラミングインタフェースが、Solaris 10 OS の一部として正式にリリースされます。これらのインタフェースについては、マニュアルページのセクション 9F と 9S で、usb_* 形式の関数および構造体として説明されています。『Writing Device Drivers 』も参照してください。

USBA フレームワークは USBA 2.0 と呼ばれるようになりました。以前の DDK に含まれていた USBA 1.0 インタフェースに対して記述された USB ドライバと Solaris 10 ソフトウェアとの互換性は、バイナリレベルでのみ保たれています。これらのドライバと Solaris 10 ソフトウェアとの間に、ソースレベルでの互換性はありません。

ls の機能拡張

この機能は、Solaris Express 8/04 で新しく追加されました。

ls コマンドで、ファイルの時刻を秒またはナノ秒の単位まで表示できるようになりました。ls コマンドの拡張」を参照してください。

文字列を変換するための新しい関数

この機能は、Solaris Express 7/04 で新しく追加されました。

カーネルモジュールを開発するときに、文字列をロング整数に変換するための 2 つの新しい関数を利用できます。ddi_strtol() 関数は、文字列をロング整数に変換するときに使用し、 ddi_strtoul () 関数は、文字列を符号なしロング整数に変換するときに使用します。これらの新しい関数は DDI に準拠しており、さまざまな入力に柔軟に対応しながら、エラー検出の精度を向上させることができます。

詳細は、ddi_strtol(9F) および ddi_strtoul(9F) のマニュアルページを参照してください。

pstack コマンドの Java サポート

この機能は、Solaris Express 7/04 で新しく追加されました。

pstack コマンドの機能が拡張され、最新バージョンの Java を使用するときに Java フレームを表示できるようになりました。呼び出しスタックに Java フレームが保管されている場合は、各フレームについて関数と行番号が表示されます。

pstack(1) のマニュアルページを参照してください。

Solaris 暗号化フレームワークの新しい機構

この機能は、Solaris Express 6/04 で新しく追加されました。

Solaris 暗号化フレームワークでは、Secure Sockets Layer (SSL) および Transport Layer Security (TLS) プロトコルのために次の機構をサポートするようになりました。

Solaris 暗号化フレームワークは、Solaris システムのアプリケーションで暗号化サービスを使用または提供するためのアーキテクチャーです。このフレームワークとのすべての対話は、RSA Security, Inc. の研究機関である RSA Laboratories の PKCS#11 Cryptographic Token Interface (Cryptoki) に基づいて行われます。

詳細は、『Solaris セキュリティーサービス開発ガイド』の「PKCS #11 関数リスト: C_GetMechanismList」を参照してください。

Solaris 暗号化フレームワークのプロバイダのための小売り用および非小売り用オプション

この機能は、Solaris Express 6/04 で新しく追加されました。

Solaris 暗号化フレームワークに接続する暗号化プロバイダのベンダーは、Sun の証明書をより柔軟に要求することができます。証明書が、小売り用製品または非小売り用製品の輸出に対応するようになりました。

小売り用の暗号化製品は、米国政府がすべての国に出荷することを許可している製品です。ただし、小売り用の製品は、米国政府が安全保障上の脅威と見なす国には出荷できません。非小売り用の暗号化製品は、米国政府が国内だけで使用することまたは政府が免除した国だけに出荷することを許可している製品です。

詳細は、elfsign(1) のマニュアルページおよび『Solaris セキュリティーサービス開発ガイド』の付録 F「暗号化プロバイダのパッケージ化と署名」を参照してください。

リンカーとライブラリの更新

この説明は、Software Express パイロットプログラムで新しく追加され、Solaris Express 5/04 で更新されました。リンカーとライブラリの更新は、Solaris 9 12/02 と後続のリリースでも導入されました。これらの更新は、Solaris 10 3/05 リリースに組み込まれています。

Solaris 10 OS には、文字列テーブルの圧縮、参照されていないセクションの除去、参照されていない依存関係の検出など、リンカーエディタの機能が含まれています。最新の機能拡張に関するすべての情報については、『リンカーとライブラリ』の付録 D「リンカーとライブラリの新機能および更新された機能」を参照してください。

Solaris Express 5/04 には、次の機能拡張が導入されています。

Software Express パイロットプログラムでは、次の機能拡張が導入されています。

階層化ドライバインタフェース

この機能は、Solaris Express 3/04 で新しく追加されました。

Solaris 10 オペレーティングシステムが機能拡張され、デバイスのオープン、読み取り、書き込みといったデバイスへのアクセス操作をカーネルモジュールが実行できるようになりました。また、公開された新しい階層化ドライバインタフェース (LDI) を使用してどのデバイスが提供されているか調べることもできます。

ドライバ開発者は、LDI インタフェースを使用して、Solaris カーネルから文字デバイス、ブロックデバイス、または STREAMS デバイスに直接アクセスできます。アプリケーション開発者は、LDI インタフェースを使用してデバイス階層情報を表示できます。管理者は、この新しいアーキテクチャーを使用して、カーネル内のデバイス使用率を監視することもできます。詳細は、ldi_*(9F) および di_*(3DEVINFO) のマニュアルページを参照してください。

prtconffuser ユーティリティーが拡張され、次の機能が組み込まれています。

LDI は接頭辞 ldi_ で始まります。これらのインタフェースは、デバイスにアクセスするとき、およびカーネルレベルのデバイス情報を取得するときに使用されます。これらのインタフェースのマニュアルページは、セクション 9F にあります。ユーザーレベルでは、一連のデバイス情報ライブラリインタフェースによって、アプリケーション内でカーネルデバイス使用率情報を取得するための機能が提供されています。LDI libdevinfo インタフェースのマニュアルページは、セクション 3DEVINFO にあります。prtconf(1M) および fuser(1M) のマニュアルページには、LDI アーキテクチャーによって提供されるカーネルデバイス使用率情報を表示する方法に関する説明も記載されています。

詳細は、『Writing Device Drivers』の第 13 章「Layered Driver Interface (LDI)」を参照してください。

makecontext() 関数の改良

この機能は、Solaris Express 3/04 と Solaris 9 9/04 で新しく追加されました。

ucontext_t 構造の uc_stack メンバーのセマンティクスが変更されました。新しい uc_stack メンバーは、makecontext(3C) libc ライブラリ関数への入力に適用されます。以前のバージョンの Solaris と Solaris 10 OS のバイナリ互換性は保持されています。

このインタフェースを使用するアプリケーションは、Solaris 10 OS で再コンパイルする前に更新する必要があります。詳細は、makecontext(3C) のマニュアルページを参照してください。

Single UNIX Specification, Version 3

この機能は、Solaris Express 2/04 で新しく追加されました。

今回の Solaris リリースは、Single UNIX Specification, Version 3 (SUSv3) に準拠しています。SUSv3 は、POSIX.1-1990、POSIX.1b-1993、POSIX.1c-1996、POSIX.2-1992、および POSIX.2a-1992 の更新です。

SUSv 3 の更新による Solaris ユーザーへの影響についての詳細は、『Solaris 10 ご使用にあたって』の「Single UNIX Specification, Version 3 Introduces Changes」を参照してください。

拡張 API

この機能は、Solaris Express 1/04 で新しく追加されました。

IPv6 拡張ソケット API は、Solaris ソケット API を最新の RFC 2292 に準拠するように更新します。「IPv6 拡張ソケット API」を参照してください。

開発者向けの簡易認証セキュリティー層

この機能は、Solaris Express 12/03 で新しく追加されました。

簡易認証セキュリティー層 (SASL) は、アプリケーションおよび共有ライブラリの開発者向けに、接続ベースのプロトコルに認証、データの整合性の確認、および暗号化を追加するためのインタフェースを提供します。

SASL は次の項目で構成されています。

SASL を使用すると、開発者は、セキュリティー機構の詳細に注意を払わなくても、汎用 API を開発できます。SASL を適切に使用して開発したサーバーとクライアントでは、新しいセキュリティー機構、命名およびユーザー正規化プラグイン、および auxprop プラグインを使用するときに、それらを再コンパイルする必要がありません。

SASLは RFC 2222 に記述されています。SASL は、SASL をサポートする次のプロトコルを使用するアプリケーションに特に適しています。

SASL の詳細については、libsasl(3LIB) のマニュアルページを参照してください。また、『Solaris セキュリティーサービス開発ガイド』も参照してください。

イベントポート

この機能は、Solaris Express 12/03 で新しく追加されました。

イベントポートは、アプリケーションが不連続のソースからイベントを生成および収集するためのフレームワークです。このフレームワークを利用すると、全体的なパフォーマンスを低下させずに、複数のオブジェクトから同時にイベントを取得できます。

詳細は、port_create(3C) および signal.h(3HEAD) のマニュアルページを参照してください。

コアファイルの内容

Solaris Express 12/03 で、coreadmgcoremdb の各ユーティリティーの機能が拡張されました。「コアファイルの内容の機能拡張」を参照してください。

原子動作

この機能は、Solaris Express 10/03 リリースで新しく追加され、Solaris 10 1/06 リリースで拡張されています。

単純な原子動作をすぐに実行するための API が libc に追加されています。アプリケーションでこの新しい機能を使用すると、ほかの同期プリミティブやプラットフォーム固有のアセンブリ言語を使用しなくても、メモリーを原子的に更新できます。使用できる動作は、加算、「and」ブール関数、および「or」ブール関数です。

詳細は、atomic_ops(3C) のマニュアルページを参照してください。

Solaris WBEM ファイルの変更

この機能は、Solaris Express 9/03 で更新されました。

/usr/sadm/mof ディレクトリの管理対象オブジェクトフォーマット (MOF) ファイルにいくつかの変更が適用されています。

ソフトウェア開発者のための特権

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

スーパーユーザー機能を持つために、プロセスを root として実行する必要がなくなりました。代わりに、システム管理者がスーパーユーザー機能をプロセス権限として個別に割り当てることができるようになりました。このプロセス権限は、特権を使用して実装されます。開発者は特権を使用して、特定の操作だけにアクセス権を制限したり、特権の有効期間を制限したりすることができます。特権を使用すると、特権を持つプログラムのセキュリティーが低下した場合に、従来発生していた悪影響を削減することができます。互換性を確保するために、root として動作するプログラムは、変更しないかぎり引き続きすべての特権を持ちます。

特権の概要については、「プロセス権限の管理」に記載されています。特権を設定および取得する方法については、setppriv(2) および getppriv(2) のマニュアルページを参照してください。特権の操作方法の詳細については、priv_str_to_set(3C) および priv_addset(3C) のマニュアルページを参照してください。

詳細は、『Solaris セキュリティーサービス開発ガイド』を参照してください。

開発者のための Solaris 暗号化フレームワーク

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

Solaris 暗号化フレームワークは、アプリケーションに暗号化サービスを提供します。アプリケーションは、libpkcs11(3LIB) を使用して、より高度なレベルでフレームワークにアクセスできます。

Solaris 暗号化フレームワークは、暗号化を使用するアプリケーションの開発者のために、次の機能を提供します。

次のマニュアルページを参照してください。libpkcs11(3LIB)pkcs11_softtoken(5)、および pkcs11_kernel(5)。また、「システム管理者のための Solaris 暗号化フレームワーク」も参照してください。

Solaris 暗号化フレームワークのプラグインを提供するソフトウェアまたはハードウェアの暗号化アクセラレータのベンダーは、Sun に詳細をお問い合わせください。

SPARC: ソフトウェア開発者のための 64 ビットパッケージの変更

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

Solaris 10 オペレーティングシステムではパッケージングが単純化され、32 ビットコンポーネントと 64 ビットコンポーネントの大部分が単一のパッケージとして配布されるようになりました。「SPARC: 64 ビットパッケージの変更」を参照してください。

GSS-API アプリケーション向けの SPNEGO 擬似機構

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

今回の Solaris 10 OS には、SPNEGO プロトコル (IETF RFC 2478) に基づいて GSS-API セキュリティーの交渉を行うために、新しい GSS-API「擬似機構」が追加されています。複数のセキュリティー機構をサポートするアプリケーション同士が GSS-API 実装に基づいて交渉を行う場合には、単純で保護された GSS-API 交渉 (SPNEGO) が適しています。2 つのアプリケーションが GSS-API を使用してデータを交換するときに、相手側のアプリケーションがサポートしているセキュリティー機構がわからない場合には、SPNEGO を適用できます。

SPNEGO は、次のオブジェクト識別子で表される擬似セキュリティー機構です。


iso.org.dod.internet.security.mechanism.snego (1.3.6.1.5.5.2)

GSS-API を使用するアプリケーションは、SPNEGO を使用して、互いの資格が共通の GSS-API セキュリティー機構を共有しているかどうかを帯域内で確認することができます。セキュリティー機構が共有されている場合には、それらのアプリケーションは共通の機構を選択してセキュリティーコンテキストを確立できます。

詳細は、mech(4) および mech_spnego(5) のマニュアルページを参照してください。また、『Solaris セキュリティーサービス開発ガイド』も参照してください。

近傍性グループ

この機能は、Software Express パイロットプログラムと Solaris 9 12/03 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

『プログラミングインタフェース』に、近傍性グループ (lgroups) とやり取りするインタフェースについて説明した章が追加されました。これらのインタフェースを使用すると、アプリケーションが CPU 資源とメモリー資源の割り当てを効率的に行えるようになります。この機能を使うと、システムによってはパフォーマンスが向上する可能性があります。

pmap のスレッドスタック

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

pmap ユーティリティーは、スタックを簡単に識別できるように、スレッドのスタックにラベルを付けるようになりました。

詳細は、pmap(1) のマニュアルページを参照してください。

新しい DOOR_REFUSE_DESC フラグ

この機能は、Software Express パイロットプログラムで新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

door_create() 関数に新しい DOOR_REFUSE_DESC フラグが追加されました。この新しいフラグを使用すると、引数記述子を受け入れないドアサーバーを簡単に開発できます。

詳細は、door_create(3DOOR) のマニュアルページを参照してください。

スタック検査 API

この機能は、Software Express パイロットプログラムと Solaris 9 4/03 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

スタック検査 API は、Sun ONE Studio で提供されるスタック検査コンパイラとの高度なやり取りを可能にします。この API は、スタック検査を有効にしてコンパイルし、自身のスタックを管理したり、自身のスタックオーバーフローの検出を試みたりするアプリケーションで使用します。

固有のスレッドライブラリを管理する開発者は、setustack インタフェースを使って、ライブラリの消費者がスタック検査対応のコンパイルを実行できるようにする必要があります。

stack_getbounds(3C)stack_setbounds(3C)、および stack_inbounds(3C) のマニュアルページを参照してください。

ソフトウェア開発者のための crypt() 関数の機能拡張

この機能は、Software Express パイロットプログラムと Solaris 9 12/02 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

Software Express リリースでは、crypt() 関数の機能が拡張され、crypt_gensalt() 関数が追加されています。これらの拡張により、管理者はユーザーの UNIX ログインパスワードをわからなくするためのアルゴリズムを変更できます。

モジュールには、MD5 向けと Blowfish 向けがあります。MD5 のモジュールは、crypt_sunmd5crypt_bsdmd5 に入っています。Blowfish のモジュールは crypt_bsdbf に入っています。

開発者は、パスワードをわからないようにするどちらのアルゴリズムに対しても、新しいモジュールを作成できます。アプリケーション開発者は、crypt() 関数に渡す salt 文字列を手動で生成する代わりに、crypt_gensalt() 関数を使う必要があります。

代替アルゴリズムのモジュールは、crypt.conf(4) ファイル内に指定します。module_path フィールドには、次の必要な関数を実行するための共有ライブラリオブジェクトへのパスを指定します。

詳細は、crypt(3C) および policy.conf(4) のマニュアルページを参照してください。

madvise() 関数の新しいフラグ

この機能は、Software Express パイロットプログラムと Solaris 9 12/02 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

madvise() 関数を使うことにより、ユーザーが定義したメモリー領域へのカーネルのアクセスを最適化します。この Solaris リリースでは、madvise() 関数用に 3 つの新しいフラグが用意されています。

madvise() 関数の詳細は、madvise(3C) のマニュアルページを参照してください。

libumem によるメモリー割り当て

この機能は、Software Express パイロットプログラムと Solaris 9 4/03 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

libumem は、ユーザーモード (非カーネルモード) のメモリー割り当てライブラリです。libumem では、メモリーリークやメモリーの使用に関するその他の問題をデバッグできます。

この機能は、malloc() などの標準アプリケーションバイナリインタフェース (ABI) アロケータと同様の方法で使用します。ユーザーモードのアプリケーションが、メモリーに対して任意のバイト数を要求すると、割り当てられたメモリーのアドレスのポインタが返されます。

詳細は、libumem(3LIB) のマニュアルページを参照してください。

スマートカード端末インタフェース

この機能は、Software Express パイロットプログラムと Solaris 9 8/03 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

Solaris スマートカードインタフェースは、スマートカード端末用の公開インタフェースです。カード端末ベンダーは、これらのインタフェースをユーザーレベルの共有ライブラリに実装し、Solaris 環境のスマートカード端末にデバイスレベルのサポートを提供できます。Solaris スマートカード端末インタフェースは、Linux Smartcard フレームワークの一部として提供されるカード端末インタフェースに基づいています。Linux のカード端末サポートライブラリは、Solaris 環境に簡単に移植できます。スマートカードの詳細については、『Solaris スマートカードの管理』を参照してください。

Smartcard ミドルウェア API

この機能は、Software Express パイロットプログラムと Solaris 9 9/02 で新しく追加されました。この機能は、Solaris 10 3/05 に組み込まれています。

Solaris Smartcard フレームワークでは、低レベルのミドルウェア API を提供しています。これらの API により、スマートカードリーダーを使用してスマートカードとの間でデータを交換することが可能になります。この API は、Sun BladeTM や Sun RayTM システムなどのプラットフォームで使用できます。Java 言語または C 言語で記述されたアプリケーションで、これらのインタフェースを使用できます。

詳細は、libsmartcard(3LIB) のマニュアルページおよび /usr/share/javadoc/smartcard の JavaDocs を参照してください。また、『Solaris スマートカードの管理』も参照してください。