Linux - system boot



 ◆ システムの起動の流れ

 一般的なLinuxシステムで、ハードウェアで電源ONにしてからOSが起動するまでの流れは以下です。

 1. 電源ON
 2. BIOSが起動してハードウェアのチェックなどを行い、MBRからブートローダを起動。
 3. ブートローダでは、ハードディスク上からカーネルをメモリ上へ読み込む。
 4. カーネルは、メモリの初期化、システムクロックの設定などを行う。
 5. initは、システムの初期化スクリプトを実行し、ランレベルに応じたデーモンを起動。
 6. ブートが完了すると、Linuxへのログインプロンプトが表示され、起動処理が完了する。


   


 ◆ Linuxカーネルの起動 : initプロセス (/sbin/init) の起動

 システム起動時の initプロセス(/sbin/init)では、
/etc/inittabファイルに従いシステムサービスを起動。

 1. initが、/etc/inittab を読み込む。
 2. initが、/etc/rc.sysinitスクリプトを実行する。
 3. initが、/etc/rcスクリプトを実行する。
 4. /etc/rcスクリプトが、/etc/rc(ランレベル).d ディレクトリ配下の
起動スクリプトを実行する。

 上記のようなサービスがあらかじめ決められた順番で起動していく仕組みのことを
SysVinitと言います。
 この仕組みの場合、あるサービスの起動に手間取ると、次に起動するサービスを待つことになり、最終
 的な起動完了まで時間がかかります。最近のLinuxディストリビューションでは
Upstartという仕組みを
 採用しており、この仕組みの場合、サービスを並列で起動することで短時間でシステムを起動できます。


 ◇ 起動スクリプト

 SysVinitでは、各種サービスを起動するために
/etc/init.d ディレクトリの配下に用意されている起動
 スクリプトが使われます。ランレベルが異なれば起動サービスも異なります。/etc/rc*.d ディレクトリ
 では、各ランレベルで起動するサービス、終了するサービスのスクリプトファイルが配置されています。
 ※ 以下の /etc/rc*.d ディレクトリの起動スクリプトの実体は、すべて /etc/init.d に格納されています。

 /etc/rc1.d ⇒ ランレベル1になった時に利用されるスクリプトファイル
 /etc/rc2.d ⇒ ランレベル2になった時に利用されるスクリプトファイル
 /etc/rc3.d ⇒ ランレベル3になった時に利用されるスクリプトファイル
 /etc/rc4.d ⇒ ランレベル4になった時に利用されるスクリプトファイル
 /etc/rc5.d ⇒ ランレベル5になった時に利用されるスクリプトファイル
 /etc/rc6.d ⇒ ランレベル6になった時に利用されるスクリプトファイル


 例として、ランレベル1とランレベル2で実行されるスクリプトファイルを見てみましょう。

 


 ファイル名が「K」ではじまるファイル、「S」ではじまるファイルは
シンボリックリンクのファイルで、
 実際には/etc/init.d ディレクトリ以下にあるファイルです。シンボリックリンクとはWindowsでいえば
 ショートカットのことです。ls -l により、ファイルの詳細を確認すれば -> でリンク先が表示されます。


 



 ◆ システム起動時のイベント確認

 システム起動時のイベントはログファイルに保存されており、以下のログファイルで確認できます。

ファイル名 説明
 /var/log/messages  システム全般の情報が確認できる。
 /var/log/boot.log  システム起動時の各プロセスが「OK」か「Failed」かを確認できる。
 /var/log/dmesg  システム起動時のメッセージが出力される。



 また、dmesgコマンドを使用することで、システム起動時の処理内容を詳細に確認することができます。

 



Linux 技術入門

Copyright(C) 2002-2024 ネットワークエンジニアとして All Rights Reserved