Solarisのシステム起動
0.改定履歴
- 1997.11.01 初版
1.はじめに
このドキュメントは,Ultra SPARC上でSolarisが起動する流れを説明するものである. きっと,x86系Solarisでは最初の動作が異なると思われるが,Solaris部分は同じだとおもう.(SunSoftでは,SolarisはSPARCもx86も同じコードを利用していると明言している)
また,ここでは自動ブート,およびマルチユーザモードの場合を示す. つまり,シングルユーザモードは対象外である.
2.起動の流れ
システム起動の流れは,次の図のようになる.

ここでは,大きく3つのプロセスに別れる.
- Hard
- ハードウェアが行なうシステム起動処理. つまりハードに依存するので,ここがx86系Solarisでは異なると考えられる.(たぶんBIOSを使う)
- Solaris
- OSであるSolarisが行なう処理である.
- Login
- ユーザがログインしたときに処理されるプロセスである.
3.詳細説明
前出の図のブロックを次に説明する.
- 電源が投入されると,PROM中のモニタプログラム,がハードウェアと主記憶メモリのセルフテストを行なう. 異常がなければ次の処理を行なう.
- ブートされるスライスのセクタからから始まる領域に格納されたブートブロックが,PROMによって読み込まれる. ブートブロックにあるプログラムは,ufsbootを読み込む.
- ufsbootは,カーネル(/kernel/genunix)をロードする.
- カーネルは,/kernelディレクトリ以下のカーネルモジュールをロードする.
- initプロセスが生成され,initは/etc/inittabファイルの記述にしたがってシステムを起動する.
- システムの動作モードによって,必要なシェルスクリプトが実行され,その中でファイルシステムのチェックや,マウントが行なわれる.(ドキュメント“/etc/vfstabの編集”を参照.
- 通常は,次のシェルスクリプトが実行される.
- /sbin/rcS
- ファイルシステムのチェック,ホスト名の設定
- /sbin/rc2
- すべてのローカルのファイルシステムをマウントし,/tmp以下のファイルの消去,NIS,プリンタ,cron関係のデーモンの起動などを行なう.
- /sbin/rc3
- NFS関連のデーモンの起動を行なう.
- /sbin/rcS
- ポートモニタを管理するプロセスである/usr/lib/saf/sacプロセスが起動する.
- ポートモニタとは,ログインアクセスや,各種ローカルサービスを管理,監視するプロセスである. sacは,/etc/saf/_sactabファイルの記述を参照することによって,アクセスを監視するポートモニタである/usr/lib/saf/ttymonを起動する.
- ttymonは,端末にログインプロンプト表示し,ユーザがログインできる状態にする.
- ユーザがログインし,パスワードを入力すると,/usr/login/loginプロセスがその整合性をチェックし,正しいユーザであればシェルを起動する.
- シェルがプロンプトを表示し,コマンド入力を待つ.