Solaris8とその技術
〜NSUG 4月セミナー〜
0.更新履歴
- 2000.05.14 初版
1.はじめに
2000年4月21日,NSUG(日本サンユーザグループ)主催の定期ミーティングの4月セミナーに,参加した.
Free Solaris7の申し込みのときに入会した無料のSun Developer Connectionでの案内がe-mailで来たので,非会員で自腹で2000円を払って会社を休んで参加した.
3つのプログラムがあった中で,今回は1つ「Solaris8とその技術」について報告する.
2.Solaris8とその技術 世界市場に向けて
今回の発表者は,日本Sunで1989年頃から日本語化を担当してた「日本語製品開発統括部統括部長」の肩書きを持つ方で,Solaris8の全般的な特徴と,ローカライズ,よりはマルチリンガル対応とアプリケーションのグローバル化についての解説が多かった.
今回のセミナーは,Sunの社内で2〜3日かけて行う内容の抜粋版という事であった.
3.Solaris8の概要
Solaris8の概要を,2つの視点からみると,次のように説明できる.
3.1.マーケティング編
- スケーラビリティ
- 高い可用性(availability)
- 管理の容易性(managable)
- 資源管理(resource management)
- 信頼性(security)
- 接続性(connectivity)
- 包括性(comprehensive)
3.2.技術編
- パフォーマンスの向上
- セキュリティの向上
- IPv6,IPsecなどのネットワーク
- WebStart3.0(CD0)などのインストール
- UDfsなどファイルシステム
- mdb,devfsadmなどの診断,可用性
- PDAsync,X11R6.4などのCDE関連
- perl/apache/gzip[などのフリーウェア
- その他
- マルチリンガル関係
以降に,技術部分の詳細な解説が続く.
4.パフォーマンスの向上
- 仮想メモリアロケータ(vmem)
- 従来搭載されていたものは,かなり古い時代から継承されていたものだが,今回全面的に書き直した.
- /dev/pollドライバ
- socket接続が多い場合に有利となるように改善.
- MAP_ANON,MADV_FREE
- ANONとは,Anonymousの略.
- Linux互換のメモリアロケーション方法の採用.
- segmapの変更(優先順位ページングを置き換え)
- ページングの優先順位を持っているため,ファイルアクセスを大量に使うアプリでも,スワップアウトしない.
- SNCA(Solaris Network Cache and Accelerator)
- Webアクセスでスタティックページをキャッシュに入れる.
- Solaris7のアップデートにも搭載されている.
- SCSIデバイス同時平行プローブ,アタッチ
- 起動時のSCSIデバイス検索を平行実行する.
- ブート時間が速くなる.
- sort(1)の大幅な書き直し
- 64bitに対応.
- ATA/EIDE DMAのサポート(IA)
- Intelマシンで対応.
- EIDEっはハードウェアバグが大井ので,デフォルトではOFFになっている.
- PAE(Physical Address Extension,IA)
- 64bitメモリアクセス,つまり4Gメモリを越える.
- これはWindows2000では不可能.
- libmd5(30% 高速化)
- md5計算用のライブラリを集約している.
- UltraSPARCだと30%アップ
大きく64bit化と,インターネットサーバ化にむけて強化していることがわかる.
大量socket接続の効率化や,スタティックページキャッシュはインターネットサーバにおける必須強化項目だし,SCSIの同時並行プローブなどは,ディスクを大量搭載したような大規模サーバ,データセンターマシンなどで有効な事がわかる.
5.セキュリティの向上
- ディレクトリ,ファイルのアクセス権変更
- いままで/usr,/binのアクセス権はbin,sysなどであったが,これをrootに変更した.
- ディレクトリは,555または755
- ファイルは644または444
- Kerberos v5のクライアント
- いままではv4であった.
- AMI,スマートカード
- Sun Ray 1の様なマシンで利用
- 役割別によるアクセス制御
- Role Based Access Control
- いままはrootだけだったが,WindowsNTのように色々なアカウントと権限を用意して,そのアカウントの役割を明示しているようである.
NTの管理経験からすると,「役割別によるアクセス制御」というのは,なかなか運用管理が付いてこない気がする. 結局何かしたい時に権限が足りなくてroot管理者に依頼がくるのでコスト・負荷的にはあまり変わらなそう.
また,Solaris2.5.1の時にsysadminというアカウントを用意していたと思うが,これも中途半端で結局rootを使ってました.
6.IPv6,IPsecなどネットワーク
- IPv6環境
- ほぼIPv6環境である.
- ただし,IPv6だけでSolaris8は稼働しない.
- 主に,アプリケーションの移植,テストに用いる為の実装.
- SLP
- Service Location Protocol
- Native LDAP(nsswitch.ldap)
- 今まではライブラリは搭載していた.
- xntpdの更新(3-5.93e)
- NTP(Network Time Protocol)のサーバですね.
- たしかSolaris2.5.1までは非搭載で,Solaris2.6から搭載しているはずです.
- 動的なptys(kernelメモリのある限り)
- StarFire IDN
- 一つのマシンで複数のドメイン(複数のマシン)
- IDN(Inter Domain Network)
IPv6が本格的に浸透するのはもっと先だろうから,そのテスト環境を事前に用意できた点で,スピードが加速するかもしれませんね.
7.Web Start3.0(CD0)などのインストール
- Solarisのバイナリだけで3枚のCD
- software 1,2,Language
- ドキュメントを入れると6枚
- インストール,ヨーロッパのドキュメント,アジアのドキュメント
- ボーナスCDをいれると全部で12枚
- WebStartですべてのCDを一度に導入可能
- アップグレードも可能(SPARCのみ)
- キオスクで導入途中に「ご使用にあたって」を読む
- ここの「キオスク」とは,実態はNetscape Navigatorで,いわゆる“スキン”をかぶせたような格好をしている.
- つまり,今回からはHotJavaは無くなった.
- インストール用に新たな専用CDを用いる
- suninstall/ttinstallでもSolaris自身はインストール可能
- すべてのCDを組み合わせたnetinstall
- DHCPとDNSを使って導入可能に
- name Serviceは,今まではnis,nis+のみであった.
CD0というのは,パッケージのCD-ROMの0毎目,つまりインストール専用メディアの事.(以下の「Solaris 8 Installation」の事)
パッケージは,2つのメディアフォルダで構成されており,CD-ROMは次のようなものが入っている.
- Solarisメディアフォルダ(SunMicroサポート分)
- Solaris 8 Instllation
- Solaris 8 Software CD 1 of 2
- Solaris 8 Software CD 2 of 2
- Solaris 8 Languages
- Solaris 8 Documentation CD(Eudo/Eng)
- Solaris 8 Documentation CD(Asian)
- ボーナスメディアフォルダ(非サポート分)
- SunOffice 5.1 SPARC
- Solaris 8 Software Companion CD
- Sambaとかのフリーウェアが入っている.
- iPlanet Advantage Vol.1
- Netscapeなどが入っている.
- iPlanet Advantage Vol.2
- Oracle CD(これが2枚?)
- Oracle8iが入っている.
今までは,OEM先で,個別にCD-ROMを作成していたりしたが,今回からはSoftware CDはSunMicroの管理対象となり,OEM先では,「Solaris 8 Installation」を編集することによって独自のパッケージを作成する事としたそうです. ヘルプデスクの簡素化ですね.
8.UDfsなどのファイルシステム
- UDfs(DVD)の新規サポート
- Read Onlyデバイス
- 強制的なumount
- 今までは利用ユーザ・プロセスが存在するとumount出来なかったが,これを強制的に行うことができるようになった.(管理上の利便性向上)
- UFS更新時間書き込みの遅延
- デフォルトでONとなっている.
- 今までは,たとえRead Onlyデバイスでも「最終アクセス時間」などをファイルシステムに書き込んでいる.
- これを遅らせることでパフォーマンス向上を狙う.
- xmenfs(IA)
- インテルマシン用
- メモリ用のファイルシステム
- mnttabをkernel内部に(mnttabfs)
- DiskSuite4.2.1が付属
- 将来的には組み込む予定
- 現在は,オプションとしてCD-ROMの/eaディレクトリに導入されている.
- /ea(Early Access)に導入されているが,正式版である.
- lofi(ループバックファイルドライバ)
- ufsでアクセス?
- CD Boot(IA)
- インテルマシンでCD-ROMからブート出来る.
- 大きなIDEディスクのサポート(IA)
- インテルマシンで,8G以上のディスクをサポート
強制的なumountが良いですね. メンテを始める時にはずれないと原因を調査するのに苦労するので.
9.mdb,devfsadmなどの診断,可用性
- mdb
- 新しいモジュラー型のkernelデバッガ.
- マルチスレッド対応.
- Sunの社外でもこのようなデバッガを使いたいという要望があり,それに答えた.
- システムのブート時っやエラーメッセージ
- メッセージにIDを持たせていることでモジュールを特定できる.
- Solaris7のアップグレードにも搭載.
- kmemの新しいトレース
- リモートコンソール
- モデムシリアルコンソールの追加
- panicの改善
- マルチCPUで稼働している時に,メモリダンプを正しく吐き出す.
- 動的再構成
- メモリの事.
- devfsadm
- デバイスツリー仮想ファイルシステム
- SCSIホットプラグ
- coreadm
- core dumpの制御
- 吐き出す場所の設定など
- cpustat,cputrack,busstat
- 各種ハードウェア情報取得(CPUのIDなど)のコマンド追加
開発者向けの強化と運用管理者向けの強化がありますね.
どちらかというと運用管理の利便性に興味がありますが,エラーメッセージがわかり易くなるようになっていくのと,ハードウェア構成がより詳細に取得できる点は評価できると思う.
10.PDAsync,X11R6.4などのCDE関連
- ToolTipのサポート
- たとえばExcelでツールアイコンの上にカーソルを持っていくと表示されるTIPト同じものがCDEで対応した.
- ホットキーエディタ
- Java Media Player
- PDAsyncサポート
- PalmPilot
- X11R6.4
- xineramaなどなど
- SPARCオンリーだが,マルチ画面のサポート
- Netscape Communicatior4.7が組み込まれた
- HotJavaさようなら
Tipsは,まぁそれほどの機能ではありませんが,StarOffice(SunOffice)でエンドユーザデスクトップを狙っていくのなら,標準搭載されてしかるべきなのでしょう.
また,PalmPilot?Palmとのシンクロとは,どこまで何が出来るかのが不明です.
11.Perl/Apache/gzipなどのフリーウェア
- Apache Web Server(1.3.6)
- Perl 5.005_03
- 複数のバージョンを同時にサポートすることも可能
- gzip(1.2.4),bzip2(0.9.0c,zip(2.2),zlib(1.1.3)
- bash(2.03),tcsh(6.09),zsh(3.0)
- gpatch(2.5.4),less(340),mkisofs(1.12b5),rpm2cpio
- すべてのソースコードはCDに含まれる
- インストーラでは入らない.
- pkgaddで追加する.
- ただし,全て英語のみサポート
それまで(Solaris2.5.1)搭載されていなかったもので,事実上デファクトスタンダードなフリーウェアが用意されていることはとても良いとおもう.
12.その他
- Java2 SE(Standard Edition)
- 1.1.8も入っている
- USBのサポート
- DVD-ROMのサポート
- 単一レベルスレッドライブラリ
- 今まではPOSIX準拠の2レベルスレッド
- EOL(End Of Life) サポートしなくなったもの
- sun4cとVoyager(古いマシンは非サポート)
- wtmp/utmpファイル
- プロセスIDの数値を増やすため
- ISAとEISAのドライバ
13.マルチリンガル対応とその技術
13.1.今日までの歩み
- JLE1.0(SunOS4.0) 1989年4月
- 日本語専用のバイナリ
- 日本語Openwindows2.0.1 1991年3月
- 日本語Solaris2.0 1992年6月
- 初めて国際化されたバイナリ
- マルチリンガルSolaris9 2000年3月
13.2.日本語Solarisはもうありません
- 英語版とマルチリンガル版のみ
- CS/SPARCは日本版あり
- 日本語ドキュメントハードコピーつきマルチリンガル
- CS/SPARCは日本版あり
- マルチリンガルは9言語と100以上のロケール
- オンラインドキュメントも9言語
- 翻訳されている範囲は言語で異なる
- End User用のみ
13.3.英語版でも日本語が使えます
- 部分ロケールは英語版にも
- 入力はcs00のみ
- ヨーロッパ系は昔からある
- 完全ロケール(翻訳)は言語CDに
- 翻訳に加えて追加のフォントやWnn6,ATOK12などを搭載
13.4.複数ロケールの混合
- 複数ロケールの同時サポート
- 画面上に,英語,中国語,日本語などを同時に表示・編集させることができる.
- Unicode(UTF-8)ロケールによる複数言語の同時サポート
- 1文書中に英語,中国語,日本語などを同時に表示編集させることができる.
13.5.アプリケーションのグローバル化
- Solaris8のUnicode対応
- Unicode(UCS2)は,UNIXやCと整合性が悪い.
- それは,Unicodeにはヌルコードが入っているため.
- String系のAPIに問題あり
- UTF-8は,
- UNIXやCと整合性が良い.
- UCS4のコードポイントもサポート
- 若干スペースファクターが悪い
- Unicode3.0にほぼ対応
- httを介して,複数言語の入力をサポート
- CTL(Complex text Languate)
- アラビア語などの,筆記体で,記述語につながるもの.
- ヘブライ語などの,右から左に表記し,ただし英単語が含まれるとその部分だけ左から右に表記したりするもの.
- Unicode対応アプリケーションの開発
13.6.UTF-8とは
- Unicodeのコード化手法の1つ
- 1単位は8ビット
- 1文字の表現に1〜複数単位を使う
- ASCIIコードの上位互換
- EUCとUTF-8の変換 -iconv
- コマンド
- iconv -f euc -t utf-8
- ライブラリ
- ret = iconv(cd,&context,&fsize,&convert,&tsize);
- 注意事項
- カラム数の違いのため,入力バッファより出力バッファを多く取る.
- limit.hのMB_CUR_MAXを使い,
- 考えられる最大文字数×MB_CUR_MAXバイト
- コマンド
- 1文字のバイト数
- EUC(日本語) 3バイト(JIS X0212)
- UTF-8 現在4バイト(将来6バイトまで拡張される可能性あり)
13.7.開発環境
- Sun WorkShop5.0では,日本語EUCをサポート
- Sun WorkShop6.0では,一部のコンポーネントでPCKに対応
- 端末エミュレータ上での出力の注意
- Solaris7以前
- jaロケールでは定義された文字以外は置き換え文字(?など)で現される.
- Solaris8
- 解消
- Solaris7以前