第 2章

第
2
章
システムの起動と停止
ここでは、システム管理者の日常業務のうちまず最初に必要
となる、マシンの立ち上げ、停止の方法とそれぞれの注意事
項を紹介する。また、システムの立ち上げ時に表示されるい
ろいろなメッセージの意味を紹介する。
2.1 システムの起動
2.2 システムの停止
2.3 起動と停止時のメッセージ
2.4 ブート手順のカスタマイズ
2.5 システム情報
2.6 起動と停止に関するセキュリティ
2.7 電源管理機能
56
第 2 章 システムの起動と停止
2.1 システムの起動
■■■■■
SPARC システムでは通常、システムの立ち上げに特別な手順はない。Sun のシステムは、
電源オンによって自動的にブートアップ
(オートブート)する。Intel 版 Solaris では OpenBoot
PROM がないため、Solaris が起動するまでのプロセスが SPARC 版とは異なる。また、使
用されるハードウェアが多様なので、ブートシーケンスも複雑になっている。
2.1.1 オートブート
■■■■■■■
Sun の SPARCstation10 以降に付属しているタイプ 5 以降のキーボードには、電源オン
キーが追加されている。これを使うと、キーボードから CPU 本体の電源を入れることがで
きる。ただし、このキーを使って周辺機器の電源を入れることはできない。
電源オンによるオートブートには例外的なケースがある。ラック型のサーバなどでは、シ
ステムの電源オンに電源キーを使用する機種がある。この場合は、鍵を差し込まないと電源
のオン/オフができない。また、後述する EEPROM レベルのパスワードをかけている場合
は、ブートの途中でパスワードの入力が求められる。ここで正しいパスワードを入れないと
システムは起動しない。
いったん立ち上げたあと再度ブートするには、
“ init 6 ”、または“ shutdown -i6 ”コマン
{{ init }および shutdown コマンドの場合
ド( 以下の例参照)、reboot コマンドを使用する。
は、/etc/rc∗にあるプロセス終了のためのスクリプトを実行するため、アプリケーションや
システムサービスを安全に停止できるが、reboot や fastboot コマンドは稼動中のプロセスを
単純に kill するだけなので、かならずしも安全とはいえない。
Solaris でも fastboot コマンドは用意されているが、SunOS4.X との互換性以外には意味が
ない。これは、ファイルシステムにチェックフラグが追加されたことにより(「第 3 章 ディス
クとファイルシステムの管理」を参照)、fsck をスキップするという fastboot のメリットが
なくなったためである。
システムのリブートの例 1
Shutdown started.
1999 年 05 月 07 日 ( 金 ) 12 時 29 分 57 秒 JST
Changing to init state 6 - please wait
Broadcast Message from root (pts/0) on tapies ( 金 )
THE SYSTEM tapies IS BEING SHUT DOWN NOW ! ! !
Log off now or risk your files being damaged
システムのリブートの例 2
tapies# shutdown -r now
システムのリブートの例 3
tapies# init 6
tapies# telinit 6
tapies# reboot
5月
7 12:29:...
……/usr/ucb/shutdown コマンドの場合( BSD 互換)
57
2.1 システムの起動
2.1.2 モニターモードからのブート
■■■■■■■
通常、モニターモードのコマンドを使ってブートする機会はあまりない。しかし、ディスク
の構成を変更してデフォルト以外のブートデバイスからブートする場合には、モニターモー
ドでの操作が必要となる。SPARC システムでは、モニターモードからのブートには、PROM
の new コマンドモード( デフォルト)を利用するのが便利である。
PROM モニターのモードの切り替え
> n
ok
……new コマンドモードへ移行
ok old-mode
>
……old コマンドモードへ移行
PROM モニター( new コマンドモード)からのブート
ok boot
……デフォルトのブートデバイスからのブート
デバイスを指定してブート
……デフォルトのディスクデバイスからのブート
ok boot disk
ok boot disk2
……disk2 にエイリアスされたディスクデバイスからのブート
ok boot /iommu/sbus/esp@0,200000/sd@3,0
……ディスクの物理デバイス名を指定してブート。このデバイス名は、OpenBoot の
show-disks で得られる
ok boot cdrom
……CD-ROM デバイスからのブート
ok boot cdrom -s
……CD-ROM デバイスからのブートだが、シングルユーザーモードで起動するためブー
ト時間が短くてすむ
ok boot net
……ネットワークインタフェースからブートする。LAN 上にブートサーバがあることが前提
なお、ここでデバイスの指定に使われる名前は、デバイスの正式パス名のエイリアス名で
ある。
パワーオンリセット
ok reset
以下は、ブートディスクを切り替えて使うなど、特殊な構成をとる際に知っていると便利
なコマンドである。
デフォルトブートデバイスの変更
ok setenv boot-device disk2
ok boot
……または電源オン
デフォルトブートデバイスの表示
ok boot-device type
/sbus/esp@0,800000/sd@1,0
ブートファイル、ブートオプションを指定する
ok boot /kernel/unix.org -s
ok boot /kernel/unix.org -sv
……シングルユーザーモードでブート
……メッセージを表示させながらシングルユーザーモードでブート
58
第 2 章 システムの起動と停止
デフォルトブートファイルの変更
ok setenv boot-file /kernel/unix.org
……または電源オン
ok boot
PROM モニターでデバイスのエイリアス名を確認する
ok devalias
screen /iommu@0,10000000/sbus@0,10001000/cgsix@3,0
ttyb /obio/zs@0,100000:b
.
.
.
disk /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@3,0
disk1 /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@1,0
なお、UNIX を立ち上げた状態では以下のようにして確認することができる。
# prtconf -vp
.
.
.
Node 0xffd24a80
screen: ’/iommu@0,10000000/sbus@0,10001000/cgsix@3,0’
.
.
.
disk3:
disk2:
disk1:
disk0:
’/iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@3,0’
’/iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@2,0’
’/iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@1,0’
’/iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@0,0’
デバイスのエイリアス名の作成、変更
……ディスクブート用のデバイスパス候補の選択
ok show-disks
a) /obio/SUNW,fdtwo@0,400000
b) /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,88000000/sd
q) NO SELECTION
……ハードディスクのパスを選択
Enter Selection, q to quit: b
/iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,88000000/sd has
been selected.
Type ^Y( Control-Y ) to insert it in the command line.
e.g. ok nvalias mydev ^Y
for creating devalias mydev for
/iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,88000000/sd
この設定をしておくと、デバイスの長い正式パス名の代わりに Control-Y をタイプするだ
けで、デバイスのパスの固定部分をコマンドラインに挿入することができる。
ok nvalias disk2 ^Y
ok nvalias disk2 /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/
……最後にターゲット番号と、ユニット番号を指定
esp@5,8800000/sd@1,0
なお、デバイスのエイリアス名は devalias でも変更できるが、devalias で設定した値は電
源オフ時に消滅する。
デバイス構成変更時のブート
デバイスの増設などでハードウェア構成を変更した場合は、ブート時にデバイスを再プロー
ブしてカーネルを再構成させる必要がある。これは、システムを-r オプションつきでブー
トすることで行える。
59
2.1 システムの起動
ok boot -r
以下のような方法で reboot コマンド実行時にオプションを指定すれば、そのオプションが
ブート時に使用される。
tapies# reboot -- -r
同様の方法で、reboot 時に OpenBootPROM の boot コマンドへ他のパラメータを渡すこ
ともできる。
緊急時のリブート( ハードウェアトラブルの場合)
CPU やディスクドライブなどのハードウェアに異常状態が発生した場合は、メモリ上の
ファイルシステム管理情報がおかしくなったり、ディスクに正常な書き込みができなくな
ることがある。この場合は、reboot コマンドを-n オプションつきで実行する。通常のリ
ブートではファイルシステムの管理上の情報をディスクに書き出してから( sync 動作)リ
ブートするが、-n オプションを指定すると sync を行わない。したがって、それまでのディ
スクに対する操作の情報がディスクのファイルシステムに反映されていないので、リブー
ト時に fsck などによる修復作業が必要になる。
tapies# reboot -n
緊急時のリブート( プロセスの混乱状態を避ける)
/etc/rc∗のスクリプトの記述ミスやシステムに生じた異常などのため、init や shutdown
コマンドでシステムをリブートできない場合は、-q オプションつきの reboot コマンドで
強制的にリブートできる。ただしこの場合は、リブートした時点でなんらかの修復作業が
必要になることもあるので、実行には十分な注意が必要である。
tapies# reboot -q
2.1.3 シングルユーザーモードで起動する場合の注意
■■■■■■■
Solaris では、シングルユーザーモードで立ち上げたときに root のパスワードが要求される。
ok boot -s
.
.
.
Password:
これは、シングルユーザーモードでシステムを起動したときに、init が/sbin/su を起動す
るためである。これによって、root アクセスのセキュリティが高くなった。その反面、root
のパスワードを忘れると特権でのアクセスができなくなる。この場合は、OS の CD-ROM を
使って立ち上げ、そこでルートファイルシステムをマウントして修復するほかない。
60
第 2 章 システムの起動と停止
2.2 システムの停止
■■■■■
UNIX システムでは、システムの停止に注意をはらわなければならないケースがある。と
くに、サーバでは提供するサービスが増えるほど、またシステム上の役割が複雑になるほど、
停止時の注意事項も多くなる。また、退社時にシステムを停止するかどうかなど、停止にか
かわる運用方法はサイトによって考えかたが異なる部分である。ここでは、システムの停止
の際に考慮すべき点、および実際の停止操作での注意事項をまとめる。
2.2.1 停止手続きの必要性
■■■■■■■
UNIX システムで停止手続きが必要な理由は 2 つある。1 つは、主メモリ上で更新されて
いるファイルシステムの管理情報を、停止前にディスク上のファイルシステムに反映させる
ためである。もう 1 つは、ネットワーク環境におよぼす影響を最小限にするためである。ファ
イルシステムの共有や、プリント、メールなどのサービスの提供など、ネットワーク環境で
はあらゆるコンピュータが相互に資源やサービスを提供しあえる。なんらかのサービスを提
供しているマシンの停止は、環境全体に影響する。このような場合、コマンドの使い方とい
うよりは、運用面での停止手続きが重要になる。
2.2.2 システム停止に関する留意点
■■■■■■■
もともと UNIX システムは 24 時間稼動を原則としている。その最大の理由は、コンソール
の前に誰もいないときでも、バックグラウンドジョブやネットワーク経由でさまざまなサー
ビスが実行されるためである。それは他のユーザーが利用するサービスかもしれないし、管
理者自身が指定したサービスかもしれない。夜中にコンパイルしたり、ログファイルの整理
をしたり、バックアップを作成したり、データベースを更新したり、ファイルを転送したり
といったことは、よく行われる。
ハードウェアも電源を入れたままのほうが安定して動作することも多い。しかし、電力を
消費するので、経済性や安全性を考慮して、使わないときは電源を切るという考えかたもあ
る。この場合は、システムの利用者が停止のたびにめんどうな確認作業をしなくてすむよう
に、システムの構成や権限の与えかたを考慮しておくこと。そのためには、設計時にクライ
アントとサーバの位置づけと機能を明確に分割しておかなければならない。またそうでなく
とも、現実にはプロセスの状態を初期化するためにやむなくシステムをリブートすることも
ある。頻度のちがいはあるにせよ、いずれにしてもシステムの停止は避けられない。
システム停止時の手順は、マシンの役割に応じて異なる。
●
デスクトップマシン
通常、デスクトップマシンはクライアントとして使用し、サーバとしての機能を持って
いない。したがって、リモートログインされているかどうかなどの簡単な確認だけでシ
ステムを停止できる。電源管理機能を設定していれば、保存停止機能を使って簡単に電
。
源を切ることもできる(「 2.7 電源管理機能」を参照)
61
2.2 システムの停止
●
ファイルサーバ
サーバとして利用しているシステムは、基本的には停止やリブートをしない。しかし、
現実にはメンテナンスなどのために停止せざるをえない場合もある。
ファイルサーバを停止する場合は、サーバ上のファイルを更新中のユーザーがいないか
確認する必要がある。ただし、これは簡単にはわからない。ファイルサーバを利用して
いるユーザーが見渡せる範囲にいれば判断しやすいが、そうでない場合は事前に利用し
ている可能性のあるすべての端末にメッセージを送り、確認をとる。それでもバックグ
ラウンドプロセスとしてファイルが参照されている場合があるため、完璧とはいえない。
すべてのクライアントを停止した状態でサーバを停止できれば問題はない。それができ
ない場合は、ファイルサーバの停止スケジュールを事前に利用者に連絡しておく。何が
いつ利用できなくなるかを伝え、停止に備えて準備をしてもらう。
一方、ファイルサーバを利用するクライアント側は、サーバが停止する前にそのサーバ
のファイルシステムのマウントを解除しておく。ファイルサーバがリブートするだけで
あれば、NFS サーバのリブート中に修正中のファイルが破壊されるのを防ぐために、そ
のパーティションをハードマウントしておくという手もある。逆にサーバがリブートす
るまでハングアップしてほしくない場合は、ソフトマウントにしておけばサーバがダウ
ンした時点でエラーとなって返ってくる。
なお、ファイルサーバをブートする場合、クライアントからマウントされたくないとき
は、システムをランレベル 2 で立ち上げるとよい。ランレベルについては後述する。
●
NIS/NIS+サーバ
NIS/NIS+サーバが停止すると、ユーザーのログインやデーモンの起動ができなくなる
おそれがあるので、ユーザーが使っていないとき、新しいプロセスが起動されないとき
を選んで停止させる。NIS スレーブサーバが 1 つでも起動していれば、サーバ機能は継
続されるが、サーバが切り替わるには 2 分程度の時間がかかる。事前に各クライアント
側で ypset を使ってサーバを切り替えれば、サーバ停止の影響を回避できる。
●
プリンタサーバ
プリンタサーバの場合は、キューの状態を確認して、実行中のものがなければ停止、リ
ブートしてかまわない。サーバがダウンしているあいだ、ユーザーのプリントジョブは
ローカルのディスクにキューイングされ、サーバが再起動した時点で自動的に印刷が開
始される。実行中のものやキューに入っているジョブがある場合は、以降の印刷要求を
受け付けないようにし、実行中のものが終了した時点でシステムを停止する。
●
メールサーバ
メールサーバは基本的には停止すべきではない。リブート程度であれば、メールのやり
とりの少ない時間帯を選んで行う。停止する場合は、事前にメールサーバを使用してい
るユーザーに、停止する期間と理由を示してメールの交換ができないことを連絡してお
くこと。また、メールサーバが停止しているあいだに送られてくるメールは、相手側に
溜められたままになるため、長時間停止する場合はとくに情報の交換が頻繁なサイトに
連絡し、システム上あるいは運用上の対策を協議する。
●
アプリケーションサーバの停止
アプリケーションサーバの停止はもっとも慎重を要する。ネットワーク環境全体でクライ
アントやサーバのプロセスがどのような形態で動作しあっているかを把握するのは簡単
62
第 2 章 システムの起動と停止
ではない。すべてのクライアントを停止しても安全とはかぎらない。バックグラウンド
でバッチ処理を行っている最中に間違ってシステム停止すると、たとえば更新中のデー
タベースのテーブルがクラッシュしたり、長時間のジョブがだいなしになるおそれがあ
る。アプリケーションサーバを停止する場合は、そのアプリケーションの動作をよく知っ
ている人の指示にしたがって停止手順を決める。あるいは、アプリケーションの運用管
理者にそのサーバの起動停止を依頼してもよいだろう。
2.2.3 システム停止の手順
■■■■■■■
システムを安全に停止させるためには、最低限以下のことが必要である。
●
ユーザープロセスの終了( プロセスに対してシグナルを発行する)
。
●
ディスクの同期( バッファキャッシュをフラッシュする)
。
●
ファイルシステムのマウントの解除。
システム停止に使用する各種のコマンドを使えば、これらの処理の前に確認メッセージを
表示したり、プロセス固有の終了処理を実行できる。システムの内部では、uadmin() システ
ムコールによって制御される。シャットダウン後の電源オフやリブートも、このシステムコー
ルで制御される。
Solaris システムの停止
Solaris ではランレベルの機構を採用しており、システムの停止はランレベル 0 あるいは 5
( Solaris2.4 以降)への移行という考えかたで一般化されている。ランレベルの移行の際に、シ
ステムはランレベルに応じたスクリプトを実行するようになっている。このため、停止時に
プロセス停止のためのスクリプトを自動的に実行させることができる。たとえば、/etc/rc0.d
ディレクトリにアプリケーションを停止するための手順を記述したスクリプトをインストー
ルしておけば、標準的なシステム停止手順でアプリケーションを正しく終了し、システムを
停止させることができる。
システムの停止は以下のコマンドで行える。
/usr/sbin/shutdown
init を呼び出してシステムをシャットダウンするシェルスクリプ
ト。デフォルトではランレベル S に移行するが、これはコマンド
のオプションで指定できる。
マルチユーザーモード(ランレベル 3 )で動作しているサーバで使
用する。ログイン中のユーザーとサーバ資源をマウントしている
システムには、サーバがまもなくシャットダウンすることを通知
する。
/usr/ucb/shutdown
init を呼び出してシステムをシャットダウンするシェルスクリプ
ト。BSD 系の UNIX 、SunOS4.X とオプションの指定方法が同じ
で、互換性のために用意されている。デフォルトではランレベル
S に移行するが、これはコマンドのオプションで指定できる。
63
2.2 システムの停止
マルチユーザーモード(ランレベル 3 )で動作しているサーバで使
用する。ログイン中のユーザーとサーバ資源をマウントしている
システムには、サーバがまもなくシャットダウンすることが通知
される。
/sbin/init
アクティブなプロセスを終了し、ディスクに同期書き込みをして
からランレベルを変更する実行可能ファイル。他のユーザーが影
響を受けないスタンドアロンシステムで使用する。システムを使
用しているユーザーにシャットダウンを通知しないため、シャット
ダウンにかかる時間は短くてすむ。引数で指定した任意のランレ
ベルに移行できる。
/etc/telinit
/sbin/init へのシンボリックリンク。SVR4 互換のために用意され
ている。
/usr/sbin/reboot
アクティブなプロセスを終了し、ディスクに同期書き込みしてか
らシステムをリブートする実行可能ファイル。オプションの指定
で、プロセスの終了やディスクの同期を省略できる。また、
“ -- ”
の後ろにブート時のオプションを指定できる。ユーザーに通知を
せず、また/etc/inittab を参照しないため、通常のシステム停止
用コマンドとしては推奨できない。
/usr/sbin/halt
すべてのプロセスの停止、ディスクの同期、ファイルシステムの
マウント解除を行い、可能であればシステムの電源を切る。実行
可能ファイル。オプションの指定で、プロセスの終了やディスク
の同期を省略できる。
ただし、/etc/inittab を参照せず、/etc/rc0 スクリプトなどを実
行しないため、通常のシステム停止用コマンドとしては推奨でき
ない。
/usr/sbin/poweroff
すべてのプロセスの停止、ディスクの同期、ファイルシステム
のマウント解除を行い、可能であればシステムの電源を切る。
/usr/sbin/halt コマンドへのシンボリックリンク。/etc/inittab は
参照しない。
/usr/sbin/uadmin
システムの停止、リブート、サスペンドなどを行う実行形式のファ
イル。uadmin() システムコールのコマンドラインのインターフェ
イスを提供する。/etc/inittab を参照しないため、通常のシステ
ム停止用コマンドとしては推奨できない。
本節の最後に、おもなシステム停止コマンドの実行例を示す。なお、OpenBootPROM を
持つ SPARC システムでは、power-off コマンドをサポートしている。OpenBootPROM の
“ ok ”プロンプトで power-off コマンドを実行すると、本体の電源を切ることができる。
デスクトップマシンの停止手順
他のマシンに対してサーバとしてのサービスをしていないデスクトップマシンの場合は、
以下の手順で停止する。
64
第 2 章 システムの起動と停止
1. ログインしてシステムを使用しているユーザーがいないかどうか確認する。
ログイン中のユーザーには、wall コマンドや口頭でシステムを停止することを連絡し、
ログアウトしてもらう。シャットダウンの警告メッセージを表示する場合は、ユーザー
がシステムの停止までのあいだに安全に終了できるように十分な時間をとる。
2. 以下のいずれかの方法でシステム停止コマンドを実行する。
●
init 、telinit コマンドを使用する。
●
shutdown コマンドを使用する。
●
シャットダウン専用アカウントを作成する。
init コマンドは、基本的にはランレベルを変更するために使用するコマンドであり、シ
ングルユーザーのマシンやサーバ機能のないマシンの停止にのみ使用すべきである。
複数のユーザーがログインして使用するマシンやサーバ機能を持つマシンの場合は、
shutdown コマンドを使用して利用者にメッセージなどを送るようにする。スーパー
ユーザー以外のユーザーでもシステムを停止できるようにするには、システムの停止
だけを実行する専用のアカウントを作ればよい。この場合は、そのアカウントにパス
ワードを設けて停止の権限を限定することが可能である。
なお、他のマシンにサービスを提供していないデスクトップのマシンの場合は、特殊な
シャットダウンの方法として保存停止も可能である。これはメモリやスワップ領域のイメー
ジをディスクにセーブして停止する方法で、電源投入時にセーブしたイメージをロードして、
電源を切る直前の状態に戻す。これは sys-suspend コマンドで実行できる。この機能につい
ては「 2.7 電源管理機能」を参照。
shutdown コマンド
システムを停止させるもっとも基本的な方法は、init コマンドを実行することである。一方、
停止前のチェックやメッセージの通知などの最低限の準備を行うために、/usr/sbin/shutdown
コマンドが用意されている。shutdown コマンドはシェルスクリプトになっており、内部で
init コマンドを使用している。shutdown コマンドは、システムの要件に応じて管理者がカ
スタマイズすることもできる。
また、BSD 互換パッケージには、/usr/ucb/shutdown コマンドが含まれている。これ
は、SunOS4.X で使用されていた shutdown コマンドと同じインターフェイスになっている。
SunOS4.X の shutdown コマンドは、デフォルトで/etc/nologin 機能をサポートしており、コ
マンド実行後には以降の root 以外のユーザーのログインを受け付けないようにすることができ
た。Solaris の標準ではそのような仕様にはなっていないが、Solaris2.5 以降では/etc/nologin
ファイルを作成しておけば同様の動作が可能になる。
Solaris2.0 から Solaris2.4 までは、login プログラムが/etc/nologin を参照しないため、同
様の動作をさせるためには以下のような設定が必要である。
1. /etc/inittab に以下の行を追加する。
a:a:wait:/etc/init.d/nologin.sh enable > /dev/console 2>&1
b:b:wait:/etc/init.d/nologin.sh disable > /dev/console 2>&1
65
2.2 システムの停止
/etc/inittab の a 、b エントリは、ユーザーのカスタマイズ用として予約されている。
2. /etc/nologin.sys5 ファイルを作成する。
/etc/nologin.sys5 ファイルの内容
#! /bin/sh
device=‘/usr/bin/tty‘
if [ $device != "/dev/console" ]
then
exit 1
fi
exec /usr/bin/login.DISABLED
3. /etc/init.d/nologin.sh ファイルを作成する。
/etc/init.d/nologin.sh ファイルの内容
#!/bin/sh
case $1 in
enable)
if [ -f /bin/login.DISABLED ] ; then
rm /bin/login
mv /bin/login.DISABLED /bin/login
echo "Logins are enabled"
else
echo "Logins are already enabled"
fi
;;
disable)
if [ ! -f /bin/login.DISABLED ]; then
mv /bin/login /bin/login.DISABLED
ln -s /etc/nologin.sys5 /bin/login
echo "Logins are disabled"
else
echo "Logins are already disabled"
fi
;;
esac
4. リモートからのログインができないようにする場合は、以下のようにする。
# init b
ログイン可能にするには以下のようにする。
# init a
停止の権限
Solaris のデフォルトでは、スーパーユーザーしかシステムの停止ができないようになっ
ている。特定グループに属するユーザーが shutdown コマンドを実行できるようにするに
は、/usr/sbin/shutdown スクリプトの内容を変更しなければならない。シャットダウン専用
のアカウントを設定するときは、パスワードは root のものとは別にする。また、パスワード
の管理も厳重に行う。
66
第 2 章 システムの起動と停止
デスクトップマシンの停止のタイミング
システムを 24 時間稼動できない環境では、システムの使用が終わった時点で停止する。シ
ステムの構成をサーバとクライアントの機能を明確に分け、サーバ機能を特定のマシンに集
中させてクライアントはいつでも停止できるようにしておけば、管理がらくになる。
停止しないで連続運用する場合は、空調設備や万一の事故に備えて消防設備の準備などに
ついても検討する必要がある。なお、連続運用の場合でも、残ったままになっている不要な
プロセスや一次ファイル、あるいは確保されたままになっているメモリ領域をクリーンアッ
プするために、定期的にリブートすることは効果がある。その際に、本体や周辺機器の冷却
ファンを簡単にクリーニングするだけでも、ハードウェアの故障率を減らせる。
shutdown コマンドによる停止とリブート
shutdown コマンドは、日常運用しているシステムを停止するのに向いている。
一般的な停止の例
tapies# cd /
tapies# shutdown -g300 -i0 "***** URGENT: System going down *****"
……300 秒後にシステムを停止
Shutdown started.
1999 年 05 月 07 日 ( 金 ) 12 時 29 分 07 秒 JST
Broadcast Message from root (pts/4) on tapies ( 金 )
The system will be shut down in 2 minutes
***** URGENT: System going down *****
Broadcast Message from root (pts/4) on tapies ( 金 )
The system will be shut down in 1 minutes
***** URGENT: System going down *****
Broadcast Message from root (pts/4) on tapies ( 金 )
The system will be shut down in 30 seconds
***** URGENT: System going down *****
Do you want to continue? (y or n):
5月
7 12:29:...
5月
7 12:30:...
5月
7 12:31:...
すぐにシステムをリブート
tapies# shutdown -y -g0 -i6
Shutdown started.
1999 年 05 月 07 日 ( 金 ) 12 時 52 分 57 秒 JST
Broadcast Message from root (console) on tapies ( 金 )
THE SYSTEM IS BEING SHUT DOWN NOW ! ! !
Log off now or risk your files being damaged.
5 月 7 12:52:...
システムを対話モードからシングルユーザーモードに変更
tapies# shutdown -g0 -is
Shutdown started.
1999 年 02 月 26 日 ( 金 ) 18 時 19 分 17 秒 JST
Broadcast Message from root (console) on tapies ( 金 )
THE SYSTEM IS BEING SHUT DOWN NOW ! ! !
Log off now or risk your files being damaged.
Do you want to continue? (y or n): y
The system is coming donw. Please wait.
System services are now being stopped.
Print services stopped.
2 月 26 18:19:...
67
2.2 システムの停止
Stopping the syslog service.
Feb 26 18:21:40 tapies syslogd: going down on signal 15
The system is down.
Changing to init state s - please wait
#
INIT: New run level: S
INIT: SINGLE USER MODE
Type Ctrl-d to proceed with normal startup,
(or give root password for system maintenance):
shutdown コマンドによる電源オフ
Solaris2.4 以降、SPARCstation10 以降の新しいハードウェアでは、コマンドによる電源
オフとキーボードからの電源オンをサポートしている。
tapies# cd /
tapies# shutdown -y -g0 -i5
.
.
.
電源オフ
BSD 互換の shutdown コマンド
BSD 互換の shutdown コマンドは、/usr/sbin/shutdown と機能的にはあまり変わらない
が、オプションの指定方法が/usr/sbin/shutdown コマンドとは異なる。以下に実行例を示す。
5 分後にシステムを停止する
tapies# /usr/ucb/shutdown -h +5
……5 分後にシステムを停止する
*** System shutdown message from root@tapies ***
System going down at 06:37
init コマンドによる停止
init コマンドは、設定変更のテストなどで手早くシステムを停止するのに向いている。
システムをモニターモードにする
tapies# init 0
INIT: New run level: 0
The system is coming down. Please wait.
System services are now being stopped.
Print services stopped.
.
.
.
The system is down.
syncing file systems... [2] done
Halted
Program terminated
Type help for more information
ok
システムをリブートする
tapies# init 6
68
第 2 章 システムの起動と停止
poweroff 、halt コマンドによる電源オフ
Solaris2.4 以降で Type5 以降のキーボードを使用しているシステムでは、UNIX が起動し
ている状態からコマンドで電源の切断ができる。また、電源を投入するにはキーボードか本
体のスイッチ操作を行う。ただし、/etc/inittab を参照しないので、終了時に一定の処理が
必要なアプリケーションを利用している場合は、いったん init コマンドを使って安全なラン
レベルに変更し、そのあとでこれらのコマンドを使うとよい。
コマンドを使って本体の電源を切る
tapies# poweroff
.
.
.
電源オフ
または、
tapies# halt
.
.
.
電源オフ
fsck で修復されたあとなど、ディスクへ同期書き込みを行わないで停止する
tapies# poweroff -n
または、
tapies# halt -n
リモート端末からの電源オフ
tapies# poweroff -y
または、
tapies# halt -y
reboot コマンドによるリブート
システムのリブートは init や shutdown コマンドでもできるが、reboot コマンドのほうが
直感的でわかりやすい。
tapies# reboot
なお、reboot コマンドを実行する際に、ブートアップに使用するオプションを指定するこ
ともできる。以下は、ブートアップ時に-rv オプションを使用する場合の例である。
tapies# reboot -- -rv
wall コマンドによるメッセージの通知
wall コマンドはシステムを停止するコマンドではないが、サーバを緊急に停止する場合、
利用者にメッセージを送るのに有効である。
69
2.2 システムの停止
wall コマンドの使用例
tapies# wall
***** URGENT ***** URGENT **** URGENT **** URGENT *****
This system will be rebooted in 5 minutes for urgent disk replacement.
Please logout now or risk your files being damaged.
-- System Administrotor: shiro
……メッセージの入力終了
^D
tapies#
利用者のコンソールの表示
Broadcast Message from shiro (pts/4) on tapies ( 月 ) 3 月 4 11:30:...
***** URGENT ***** URGENT **** URGENT **** URGENT *****
This system will be rebooted in 5 minutes for urgent disk replacement.
Please logout now or risk your files being damaged.
-- System Administrotor: shiro
シャットダウン専用アカウントの作成
スーパーユーザーになって以下のようにする。
1. シャットダウン用のシェルスクリプトを作成する。
tapies# echo #!/bin/sh > /usr/sbin/halt.sh
tapies# echo /usr/sbin/halt >> /usr/sbin/halt.sh
dtlogin の画面からシャットダウンする場合はシェルスクリプトにする必要はないが、
コンソールログインからもシャットダウンをする可能性がある場合は、シェルスクリプ
トにしておかないとログインシェルとして指定したコマンドが実行できない。
2. シェルスクリプトを所有者のみが実行できるようにする。
tapies# chmod 700 /usr/sbin/halt.sh
3. シャットダウン専用のユーザーアカウントを作成する。
tapies# useradd -u 0 -o -g other -d /tmp -s /usr/sbin/halt.sh shutdown
ログインシェルとしてシャットダウン用のスクリプトを指定する。ホームディレクトリ
は使用しないのでなんでもよい。UID を root と同じ 0 にするため、-o オプションを
指定する。
4. シャットダウン専用ユーザーにパスワードを設定する。
tapies# passwd shutdown
新 し い パ ス ワ ー ド:
新 し い パ ス ワ ー ド の 再 入 力:
passwd (SYSTEM): shutdown の passwd は 正 し く 変 更 さ れ ま し た 。
root のパスワードを知らないユーザーにシャットダウンの権限を委すことが目的なの
で、ここで指定するパスワードは root アカウントとは別にしておく。
以上の設定で、ユーザー shutdown でログインしてパスワードを与えれば、システムを停
70
第 2 章 システムの起動と停止
止できるようになる。電源オフや再起動専用のアカウントも同様の方法で作成できる。
root にならずにシャットダウンを可能とする方法はほかにも考えられるが、ログインシェ
ルを使わずに dtlogin の画面からシステムをシャットダウンする設定例を「 10.6.3 システムレ
ベルのカスタマイズ」で紹介する。
2.3 起動と停止時のメッセージ
■■■■■
Solaris では、SunOS4.X からブートモデルが大きく変わっている。これは、オートコンフィ
グレーションと SVR4 のランレベルを導入したためである。また、システムのブートシーケン
スだけでなく、シャットダウンのシーケンスもユーザーがカスタマイズできるようになった。
2.3.1 ブートシーケンス
■■■■■■■
Solaris のブートシーケンスは SVR4 のブートモデルを使用しているが、完全に同じではな
い。またブート時にファイルシステムのフラグを参照し、不要なファイルシステムチェック
を行わないように改善されている。このため、Solaris には fasthalt 、fastboot コマンドが用
意されていない。
SPARC システムのブートシーケンス
ここでは、ローカルディスクを持つシステムの電源を投入してから、マルチユーザーモー
ドで立ち上がるまでのシーケンスを、図 2-1 を参照しながら解説する。
1. 電源がオンになると、OpenBootPROM( ファームウェア)が起動し、ハードウェアの
基本的なチェックを行うパワーオンセルフテスト( POST )を実行する。
この後 EEPROM( 書き換え可能な不揮発性メモリ)の内容にもとづいて、ブートデバ
イス、ブートファイル、ブートオプションを確定する。
2. OpenBootPROM は、ブートデバイスのブートブロックをメインメモリにロードし、制
御を渡す。ブートブロックは installboot コマンドによってブートデバイスの先頭 2 ブ
ロック目から 15 ブロックぶんの領域にあらかじめインストールされている。
3. ブートブロックのプログラムは、ファイルシステムからブートプログラム
( /platform/sun4?/
ufsboot )をメインメモリにロードし、制御を渡す。
4. ブートプログラム
( ufsboot )
がカーネル
( /platform/sun4?/kernel/unix、または/platform/
sun4u/sparcv9/unix )をメインメモリにロードし、制御を渡す。
5. カーネルは自分自身を初期化し、ファイルシステムをマウントして、/kernel 、/plat
form/sun4?/kernel、/usr/kernel ディレクトリから必要なモジュールをロードする。
また、/etc/system ファイルの内容に従ってシステムの初期化パラメータなどを決定
する。続いて、最初のプロセスである/usr/sbin/init を起動する。
71
2.3 起動と停止時のメッセージ
電源オン
OpenBootPROM
OpenBootPROM
EEPROM
1. パワーオンセルフテスト
2. ブートブロックのロード
ディスクのブートブロック
ブートブロック
3. ブートファイルのロード
/platform/sun4?/ufsboot
ブートプログラム(ufsboot)
4. カーネルのコア部分のロード
/platform/sun4?/kernel/
<sparcv9>/unix
/etc/system
/kernel/*
/platform/*
/usr/kernel/*
カーネル
5. 初期化作業
・カーネルの初期化
・カーネルモジュールとデバイス
ドライバのロード
・init生成
/sbin/init
initプロセス
/etc/inittab
6. ランレベルを決定し、初期設定
のスクリプトを起動
・rcスクリプトによる各種サー
ビスの開始
/sbin/rc?
/etc/rc?.d/S*
7. 《ブート完了》
8. ログインマネージャの起動
/etc/rc2.d/S99dtlogin
図 2-1 SPARC 版システムのブートアップシーケンス
6. init プロセスは、/etc/inittab の内容にしたがって rc スクリプトを起動する。inittab
ファイルは以下のような内容を含む。
/etc/inittab の例
ap::sysinit:/sbin/autopush -f /etc/iu.ap
ap::sysinit:/sbin/soconfig -f /etc/sock2path
fs::sysinit:/sbin/rcS sysinit
>/dev/console 2<>/dev/console </dev/console
is:3:initdefault:
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/console 2<>/dev/console
sS:s:wait:/sbin/rcS
>/dev/console 2<>/dev/console </dev/console
s0:0:wait:/sbin/rc0
>/dev/console 2<>/dev/console </dev/console
s1:1:respawn:/sbin/rc1
>/dev/console 2<>/dev/console </dev/console
s2:23:wait:/sbin/rc2
>/dev/console 2<>/dev/console </dev/console
s3:3:wait:/sbin/rc3
>/dev/console 2<>/dev/console </dev/console
s5:5:wait:/sbin/rc5
>/dev/console 2<>/dev/console </dev/console
s6:6:wait:/sbin/rc6
>/dev/console 2<>/dev/console </dev/console
72
第 2 章 システムの起動と停止
fw:0:wait:/sbin/uadmin 2 0
>/dev/console
of:5:wait:/sbin/uadmin 2 6
>/dev/console
rb:6:wait:/sbin/uadmin 2 1
>/dev/console
sc:234:respawn:/usr/lib/saf/sac -t 300
co:234:respawn:/usr/lib/saf/ttymon -g -h -p
/dev/console -l console -m ldterm,ttcompat
2<>/dev/console </dev/console
2<>/dev/console </dev/console
2<>/dev/console </dev/console
"‘uname -n‘ console login: " -T sun -d
通常は、以下のコマンドやスクリプトを実行する。
/sbin/autopush
/sbin/rcS
/sbin/rc2
/sbin/rc3
/usr/lib/saf/sac
/usr/lib/saf/ttymon
/sbin/autopush
/etc/inittab
デフォルトのランレベル=3
init
/sbin/bcheckrc
/etc/rc2.d/K*
/sbin/rc2
/etc/rc2.d/S*
/sbin/rc3
/etc/rc3.d/K*
/etc/rc3.d/S*
/usr/lib/saf/sac
/usr/lib/saf/ttymon
/sbin/rc2 および rc3 スクリプトは、それぞれ/etc/rc2.d 、rc3.d のディレクトリに置か
れているデーモン起動スクリプトをファイル名の番号順に実行する。
7. ブート完了。
システムは、ランレベル 3 のマルチユーザーモードで起動する。
8. ログインマネージャが起動する。
ウィンドウ環境がインストールされている場合は、デフォルトでは/etc/rc2.d/S99dtlogin
によってログインマネージャ( /usr/dt/bin/dtlogin )が起動し、ウィンドウ環境でのロ
グイン待ち状態になる。
Solaris のブートブロックは、ファイルシステムからブートファイルをロードできるように
改善されている。これにより、ブートプログラムのファイル
( /platform/sun4?/ufsboot )
を移動してもブートエラーが発生しなくなった。
73
2.3 起動と停止時のメッセージ
SPARC 版のブート時のメッセージ
典型的なブートメッセージの例を示す。
Resetting ...
Sun Ultra 5/10 (UltraSPARC-IIi 270MHz), Keyboard Present
OpenBoot 3.11, 128 MB memory installed, Serial #9483450.
Ethernet address 8:0:20:90:b5:13, Host ID: 8090b513.
Rebooting with commands:
Boot device: /iommu/sbus/espdma@f,400000/esp@f,800000/sd@3,0:d File and args:
SunOS Release 5.7 Version Generic 64-bit [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1998, Sun Microsystems, Inc.
WARNING: clock gained 128 days -- CHECK AND RESET THE DATE!
*
Configuring the /devices directory
Configuring the /dev directory
.
.
.
The system is coming up. Please wait.
checking filesystems
/dev/rdsk/c0t3d0s3: is clean.
/dev/dsk/c0t3d0s3 mounted
starting routing daemon.
starting rpc services: rpcbind keyserv kerbd done.
Setting netmask of le0 to 255.255.255.0
Setting default interface for multicast: add net 224.0.0.0: gateway tapies
syslog service starting.
Print services started.
starting Kana-Kanji converters: cssd.
Loading /kernel/strmod/jconv7.
Loading /kernel/strmod/jconv8.
Loading /kernel/strmod/jconvs.
The systems is ready.
tapies console login:
デフォルトでは、ブート時に詳細なメッセージは表示されない。表示をさせるには、以下
の 2 つの方法がある。
●
boot コマンドのオプションで設定する。
ok boot -v
●
/etc/system ファイルで設定する。
set boothowto | 0x3000
解除する場合は、/etc/system に以下の設定をしておく。
set boothowto | 0x1000