Linux起動プロセスの説明


linuxシステムの起動プロセスを理解するには、まずシステムの構成について理解します:カーネル+ルートファイルシステムの構成
カーネル:カーネルコアファイルとモジュールファイルからなる1.カーネルコアファイル:一般的に/boot/ディレクトリの下にあり、vmlinuz-VERSION(バージョン番号)と名付けられています.モジュールファイル:/lib/modules/VERSION/ディレクトリの下に、カーネルが格納されている多くの機能コンポーネント(ドライバなど)3.Initrd:/bootの下に位置して、一般的にinitramfs-VERSIONと命名して、このファイルは1つの簡略版のルートファイルシステムに相当して、カーネルでファイルシステムをマウントすることができないのはロードで、カーネルが本当のルートファイルシステムのマウントを完成することを補助していくつかの基本的な概念を補充します:(流れの説明の中で理解しやすい)(1)CMOS:マザーボードの上の1枚の読み書き可能なRAMチップ、保存システムのハードウェア構成情報(2)BIOS:基本入出力システム、マザーボードROMチップに書き込むマイクロシステム(3)MBR:Master Boot Record、合計512バイト、446バイトboot loader、64バイトパーティションテーブル(4)boot loader:管理プログラム起動、linux起動管理プログラムgrubまたはliloシステム起動の簡単な流れ:BIOS POST-->boot loaderのロード-->boot loadカーネルファイルをメモリにロード-->カーネル初期化、最後にinitプロセス-->init初期化を開始し、ログイン端末を起動
システムの簡単な起動プロセスは以上のように、その詳細を理解するには、カーネルレベルとユーザーレベルの2つのレベルに分けて展開する必要があります.以下の起動プロセスはgrub展開に基づいています.
コアレベル:
    1.POST:電源が起動すると、BIOSはCMOSのハードウェア情報を読み取る、セルフテストが完了すると「第一起動装置の第一セクター」のboot loaderプログラムgrub 2を読み取る.grubブートには3つのフェーズがあります:stage 1、stage 1_5、stage2
stage 1:このフェーズでは、カーネルを直接起動するのではなく、第2セクタのstage 1_を指します.5
        stage1_5:ファイルシステムを認識してstage 2をロードする
stage 2:カーネルを見つけてメモリに解凍し、機能を身につける
       
    3.カーネルを初期化し、ルートファイルシステムを読み取り専用でマウントしようとします.ルートファイルシステムをマウントすると、カーネルがドライバをロードし、最後にカーネルが最初のプロセスinitを起動します.
カーネルがルートファイルシステムのマウントを完了できない場合は、ルートのマウントを支援するためにinitramfsファイルをロードする必要があります.
ユーザ空間レベル4.Initプログラムはシステム環境を初期化し、inittabを読み取ることで実行レベルを取得し、初期化スクリプト/etc/rcをロードする.d/rc.Sysinitは、対応する実行レベルに基づいてサービスの停止と起動を完了し、最終的に起動端末は、カーネルがルートファイルシステムをマウントできるかどうかによって、initramfsが必須ではないことに注意します.
Init初期化:(CentOS 5の初期化プロセス)initは、カーネルが初期化を完了する最後のステップで起動するシステムの最初のプロセスであり、そのPIDは1であり、initはinittabプロファイルを読み取る運転レベルを設定し、その後/etc/rcを読み取る.d/rc.Sysinit初期化スクリプト、システム環境の初期化を完了し、実行レベルに従って関連サービス(関連実行レベルサービス情報、/etc/rc.d/下の対応する実行レベルのディレクトリ内のシンボル接続、シンボル接続が/etc/rc.d/ini.dディレクトリ下のスクリプトファイルを指す)をロードおよびクローズし、最終的に端末プロファイルを起動します:/etc/inittab構成システム実行レベル
[root@johnson_linux ~]# cat /etc/inittab 
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

0-halt(システムの直接シャットダウン)1-single user mode(シングルモード、ログイン不要、メンテナンス用)2-Multi-user、without NFS(NFSサービスのないマルチユーザシステム)3-Full multi-user mode(ネットワーク機能付きコマンドラインモード)4-unused(システム保持機能)5-X 11(X Windowのロード、3に似ている)6-reboot(再起動)注意:デフォルトrunlevelは0または6に設定しないでください.そうでないと、システムは停止せずに再起動プロファイルに関する構文を停止します:id:runlevel:action:process id:タスク表示runlevel:このタスクを実行するレベルaction:このタスクを起動する条件process:タスクaction:wait:このタスクへの切り替えを待つレベルが存在する場合に一度実行:respawn:このタスクが終了すると自動的に再起動する:initdefault:デフォルトの実行レベルを設定:この場合、process省略:sysinit:システム初期化方式を設定し、ここでは一般的に指定/etc/rcである.d/rc.Sysinitスクリプト:例:2:2:wait:/etc/rc.d/rc6.dは、2レベルに切り替えるrcを1回実行することを示す.6のプロファイルは、サービス初期化時に優先度の高いサービスが先に停止または起動する、依存するサービスは、その起動優先度が依存するサービスよりも高く、停止優先度が依存するサービス/etc/rcよりも低くなければならない.d/rc.Sysinit初期化スクリプトファイル、initこのスクリプトファイルをロードしてシステム環境初期化情報を初期化(1)ホスト名を設定(2)ウェルカム情報を設定(3)udevとselinux(4)マウント/etc/fstabファイルで定義されたすべてのファイルシステムをアクティブ化(5)ルートファイルシステムを検出ルートファイルシステム(6)を読み書き方式で再マウントシステムクロック(7)を/etc/sysctlに従って設定.confファイルは、カーネルパラメータ(8)がlvmおよびソフトraidデバイス(9)をアクティブにするswapデバイス(10)が追加デバイスをロードドライバ(11)のクリーンアップ操作/etc/rcを設定.d/*.d     rc.dディレクトリの下に$runevelrcで保存する.d名前のファイルで、内容はrunlevelが停止および起動すべきサービスに対応するシンボルリンクであり、シンボル接続は/etc/rcを指す.d/init.dディレクトリの下のスクリプトファイル/etc/rc.local:初期化プロセスが最後に実行するスクリプトファイルを指定し、このファイルで起動自動起動プログラムchkconfigを設定できます:実行レベルのサービス情報を表示chkconfig[--list][name]chkconfigを表示する--add nameを追加chkconfigを削除する--del name chkconfigを変更する[--level LEVEL]name{no|off|reset}levelを指定しないデフォルトは2345です