CentOSのブート時の処理の流れをまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.LinuxのX86の場合の一般的なブート時の流れ
- 2.ブート処理時に起動されるinitプロセス
- 3.initデーモンの設定ファイルinittab
- 4.CentOSが起動時に実行されるシステムスクリプト
- 5.デフォルトのランレベルを設定
LinuxのX86の場合の一般的なブート時の流れ
①マシンのBIOSがプライマリハードディスクのMBR(マスターブートレコード)にある第1段階のブートローダーを起動。
②第1段階のブートローダーは、自分自身をメモリにロード。
/bootパーティションから第2段階のブートローダーが起動される。
③第2段階のブートローダーは、カーネルをメモリにロード。
カーネルがモジュールをロードし、読込み専用パーティションをマウントする。
④カーネルは、ブートプロセスの制御を/sbin/initプログラムに渡す。
⑤/sbin/initは、全サービスをロード。
/etc/fstabを参照して、パーティションをマウント。
⑥ユーザーにログインプロンプト表示。
※MBR、ブートローダーについては以下の記事も参照。
・CentOS6インストール手順のメモの”ブートローダーとチェーンロード”
・マスターブートレコード(MBR)とGRUBの概要
②第1段階のブートローダーは、自分自身をメモリにロード。
/bootパーティションから第2段階のブートローダーが起動される。
③第2段階のブートローダーは、カーネルをメモリにロード。
カーネルがモジュールをロードし、読込み専用パーティションをマウントする。
④カーネルは、ブートプロセスの制御を/sbin/initプログラムに渡す。
⑤/sbin/initは、全サービスをロード。
/etc/fstabを参照して、パーティションをマウント。
⑥ユーザーにログインプロンプト表示。
※MBR、ブートローダーについては以下の記事も参照。
・CentOS6インストール手順のメモの”ブートローダーとチェーンロード”
・マスターブートレコード(MBR)とGRUBの概要
ブート処理時に起動されるinitプロセス
・システム上の全てのプロセスの親プロセス。
・カーネルによって実行され、他のすべてのプロセスを起動させる。
・親プロセスが死んだ場合、残された子プロセスの親となる。
・/etc/initディレクトリ内のファイルによって定義される。(/etc/init/*.confなど)
・/etc/inittabに記述された設定内容に従ってプロセスを起動する。
・ランレベルを指定する。
・/etc/rc.d/rc.sysinitスクリプトを実行する。
※initプロセスについては以下の記事も参照。
Linuxのinitプロセスの概要
・カーネルによって実行され、他のすべてのプロセスを起動させる。
・親プロセスが死んだ場合、残された子プロセスの親となる。
・/etc/initディレクトリ内のファイルによって定義される。(/etc/init/*.confなど)
・/etc/inittabに記述された設定内容に従ってプロセスを起動する。
・ランレベルを指定する。
・/etc/rc.d/rc.sysinitスクリプトを実行する。
※initプロセスについては以下の記事も参照。
Linuxのinitプロセスの概要
initデーモンの設定ファイルinittab
起動時や通常稼動時にイベントが発生した際に、どのようなプロセスをどのように起動させているかを指定する。
構文)
id:runlevels:actions:process
○id:識別子
○actions:どのような動作を行うべきかを表す
・respawn
プロセスが終了した場合は常に再起動
・wait
指定したランレベルになった際に一度だけ起動。initは待機。
・once
指定したランレベルになった際に一度だけ起動
・boot
システムブート中に実行される。
・initdefault
システムブート完了時に実行されるランレベルを指定
・sysinit
システムブート中に実行。bootより優先。
・powerwait
電源異常時に実行される。initは終了するまで待機。
・powerfail
電源異常時に実行される。initは終了するまで待機しない。
・powerokwait
電源が回復したことをinitが認識した際に実行される。
・ctrlaltdel
ctrl alt delが押された際に実行される。
※CentOS6.2では、CentOS5とは大きく異なっていて下記1行しか設定されていませんでした。
例)
id:3:initdefault:
構文)
id:runlevels:actions:process
○id:識別子
○actions:どのような動作を行うべきかを表す
・respawn
プロセスが終了した場合は常に再起動
・wait
指定したランレベルになった際に一度だけ起動。initは待機。
・once
指定したランレベルになった際に一度だけ起動
・boot
システムブート中に実行される。
・initdefault
システムブート完了時に実行されるランレベルを指定
・sysinit
システムブート中に実行。bootより優先。
・powerwait
電源異常時に実行される。initは終了するまで待機。
・powerfail
電源異常時に実行される。initは終了するまで待機しない。
・powerokwait
電源が回復したことをinitが認識した際に実行される。
・ctrlaltdel
ctrl alt delが押された際に実行される。
※CentOS6.2では、CentOS5とは大きく異なっていて下記1行しか設定されていませんでした。
例)
id:3:initdefault:
CentOSが起動時に実行されるシステムスクリプト
1)/etc/rc.d/rc.sysinit
・環境パスの設定
・スワッピングの開始
・ファイルシステムのチェック
・システムの初期化に必要とされるすべてのステップを実行。
・詳細は以下の記事参照。
CentOS6のrc.sysinitスクリプトの処理内容の概要
2)/etc/rc.d/rc.local
・ブート時に追加プログラムを実行。
・他のinitディレクトリ内のスクリプト実行後に実行される。
3)/etc/rc.d/init.d/function
・/etc/init.dディレクトリ内の大半のスクリプトによって使用される関数を含む。
・環境パスの設定
・スワッピングの開始
・ファイルシステムのチェック
・システムの初期化に必要とされるすべてのステップを実行。
・詳細は以下の記事参照。
CentOS6のrc.sysinitスクリプトの処理内容の概要
2)/etc/rc.d/rc.local
・ブート時に追加プログラムを実行。
・他のinitディレクトリ内のスクリプト実行後に実行される。
3)/etc/rc.d/init.d/function
・/etc/init.dディレクトリ内の大半のスクリプトによって使用される関数を含む。
デフォルトのランレベルを設定
1)ランレベルとは?
ランレベルとは、状態またはモードのことで、そのランレベルが選択された場合に実行されるサービスによって定義される。
以下7つのランレベルがある。
0:システムの停止に使用。このランレベルは保持され、変更できない。
1:シングルユーザーモードでの実行。このランレベルは保持され、変更できない。
2:デフォルトでは使用されない。自由に定義できる。
3:コマンドラインユーザーインターフェースを使用するフルマルチユーザーモードでの実行に使用。
4:デフォルトでは使用されない。自由に定義できる。
5:グラフィカルユーザーインターフェースを使用するフルマルチユーザーモードでの実行に使用。
6:システムの再起動に使用。このランレベルは保持され、変更できない。
2)どのランレベルで稼働しているかを確認
・runlevelコマンドを使用。
例)
ランレベルとは、状態またはモードのことで、そのランレベルが選択された場合に実行されるサービスによって定義される。
以下7つのランレベルがある。
0:システムの停止に使用。このランレベルは保持され、変更できない。
1:シングルユーザーモードでの実行。このランレベルは保持され、変更できない。
2:デフォルトでは使用されない。自由に定義できる。
3:コマンドラインユーザーインターフェースを使用するフルマルチユーザーモードでの実行に使用。
4:デフォルトでは使用されない。自由に定義できる。
5:グラフィカルユーザーインターフェースを使用するフルマルチユーザーモードでの実行に使用。
6:システムの再起動に使用。このランレベルは保持され、変更できない。
2)どのランレベルで稼働しているかを確認
・runlevelコマンドを使用。
例)
$ runlevel N 3
3)デフォルトのランレベルを設定
/etc/inittabファイルで下記行の数値部分にランレベルを指定する。
例)
id:5:initdefault:
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限