CentOSシステムの起動プロセス

CentOS 6の起動プロセス:
POST->ブートシーケンス(BIOS)->ブートローダー(MBR)->カーネル(ramdisk)-> rootfs(読み取り専用)–> switchroot-> / sbin / init->(/ etc / inittab、 / etc / init / *。conf)->デフォルトの実行レベルを設定します->システム初期化スクリプトを実行してシステムの初期化を完了します->対応するレベルで停止する必要のあるサービスをオフにし、対応するレベルでオンにする必要のあるサービスを開始します- >ターミナルを起動し、ログインプロンプトを出力します[–>グラフィカルターミナルを起動します]

1、 CentOSシステムの起動プロセス##

(1)POST:電源オンとセルフテスト
POSTプログラムは、CMOS(Complementary Metal Oxide)チップであるROMチップのBIOS(基本入力および出力システム)に保存されます。
ROM + RAMは、CPU、ROM、および物理メモリRAMがアクセスできるストレージスペースです。
(2)ブートシーケンス
各ブートデバイスを順番に検索します。ブートプログラムを備えた最初のデバイスは、この起動に使用されるデバイスです。
(3)ブートローダー:ブートローダー、ブートプログラム、WindowsおよびLinuxのブートローダー:
Windows:ntloader
Linux:
LILO:LInux LOader
GRUB:グランドユニフォームブートローダー(ユニファイドブートローダー)
GRUB 0.X:Grub Legacy
GRUB 1.X:Grub2
ブートローダー機能:ユーザーが起動するシステムまたは別のカーネルバージョンを選択し、ユーザーが選択したカーネルをRAMの特定のスペースにロードし、解凍および展開してから、システム制御をカーネルに転送できるメニューを提供します。
(4)MBR:マスターブートレコード、マスターブートレコード
MBRはメモリの最初の512バイトにあります。最初の446バイトはブートローダー、中央の64バイトはパーティションテーブル、2番目の2バイトは55AAです。55AAはMBRが有効であることを意味し、55AA以外はMBRが無効であることを意味します。
(5)GRUB
GRUBは、次の2つの段階に分かれています。
1 )最初の段階:ブートローダーのロード。
2 )ステージ1.5:ファイルシステムドライバーを起動します。
3 )フェーズ2:/boot/grub/grub.conf構成ファイルに従って、ディスクをパーティション分割します。
(6)カーネルの起動
1 )自己初期化
1 識別可能なすべてのハードウェアデバイスを検出します。
2 ハードウェアドライバーをロードします(ramdiskを使用してドライバーをロードすることが可能です)。
3 ルートファイルシステムを読み取り専用モードでマウントし、起動に問題がない場合は、カーネルの問題とデータの損失を防ぐために、読み取り/書き込みマウントに変更します。
4 ユーザースペースで最初のアプリケーションを実行します:/ sbin / init
(7)初期化プログラムのタイプ:
CentOS 5システム以前は、SysV initと呼ばれ、構成ファイルは/ etc / inittabでした。
CentOS 6システムはUpstartと呼ばれ、Ubuntuによって開発されました。構成ファイル:/ etc / inittabおよび/ etc / init / * .conf;
CentOS 7システムはSystemdと呼ばれ、構成ファイルは/ usr / lib / systemd / system /および/ etc / systemd / system /です。
(8)ramdisk
Linuxカーネルの特徴の1つは、ディスク上のファイルへのアクセスを高速化するためのバッファーとキャッシュの使用です。
CentOS 5のramdiskはinitrdと呼ばれ、ツールプログラムはmkinitrd、CentOS 6、CentOS 7はramdiskをramfsに変更し、それらのramdiskはinitramfsと呼ばれ、ツールプログラムはdracutとmkinitrd、mkinitrdはカプセル化されたシェルスクリプト、またはdracutによって作成されます。
(9)/sbin/init
CentOS 5: SysV init
運用レベル:システムの運用または保守のために設定されたメカニズム。
0- 6 :7レベル;
0 :シャットダウン、シャットダウン、または初期化0;
1 :シングルユーザーモード(シングルユーザー)、ルートユーザー、認証不要、メンテナンスモード、セーフモード、
2 :マルチユーザーモード(マルチユーザー)、ネットワーク機能は起動しますが、NFSは起動しません。メンテナンスモード、ネットワーク機能付きセーフモード。
3 :マルチユーザーモード(マルチユーザー)、完全機能モード、テキストインターフェイス、通常モード。
4 :予約レベル:現時点では特別な使用目的はありませんが、同じ3レベルの機能を使用するために使用されます。
5 :マルチユーザーモード(マルチユーザー)、完全機能モード、グラフィカルインターフェイス、通常モード。
6 :再起動、再起動
デフォルトレベル:3、5;
レベル切り替え: init#
レベルビュー: who -r runlevel
構成ファイル:/ etc / inittab
CentOS 5システムに適用可能:
各行は、アクションとそれに対応するプロセスを定義します
id:runlevels:action:process
id:タスクの識別子。
runlevels:このタスクを開始するレベル(#、###、または空)は、すべてのレベルを意味します。
アクション:どのような条件下でこのタスクを開始しますか。
プロセス:タスク;
アクション:タスクをいつどのように開始するかを定義します
待機:このタスクのレベルへの切り替えを待機しているときに1回実行します。
respawn:このタスクが終了すると、自動的に再開されます。
initdefault:デフォルトの実行レベルを設定します。この時点では、プロセスは省略されています。
sysinit:システム初期化モードを設定します。ここでは通常/etc/rc.d/rc.sysinitスクリプトと指定されています。
例:/ etc / inittabファイル:
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc0パスパラメーター0
l1:1:wait:/etc/rc.d/rc 1
…………
l6:6:wait:/etc/rc.d/rc 6
これは、/ etc / rc.d / rc3.d /ディレクトリのサービススクリプトによって制御されるサービスを開始または閉じることを意味します。
K *:停止するサービス。K## *、優先度、数値が小さいほど、シャットダウンする優先度が高くなります。最初に依存サービスが閉じられ、次に依存サービスが閉じられます。
S *:開始するサービス。S## *、優先度、数値が小さいほど、開始する優先度が高くなります。依存サービスが最初に開始され、依存サービスが後で開始されます。
同じサービスの場合、シャットダウンの数は多く、スタートアップの数は少なくなります。
rcスクリプト:実行レベル番号をパラメーターとして受け入れます。
スクリプトフレームワーク:

for  srv  in/etc/rc.d/rc#.d/K*;do
	$srv  stop
done
										
for  srv  in/etc/rc.d/rc#.d/S*;do
	$srv  start
done

/etc/init.d/(/etc/rc.d/init.d/)(2つのディレクトリはリンクです)スクリプト実行モード:
# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}``# service SRV_SCRIPT {start|stop|restart|status}
chkconfigコマンド:/etc/init.d/の各レベルで各サービススクリプトの起動またはシャットダウンステータスを制御します。
ビュー: chkconfig --list [name]
追加: chkconfig --add name
追加できるサービスのスクリプト定義形式の1つ:

#! /bin/bash
#
# chkconfig:LLL NNNN実行レベル開始優先度シャットダウン優先度
# description:

削除: chkconfig --del name
指定されたリンクタイプを変更します。
chkconfig [--level LEVELS] name <on|off|reset>
-レベルレベル:制御するレベルを指定します。デフォルトは2345です。
注:通常のレベルでは、S99localが最後に開始したサービスは、/ etc / init.dの下のスクリプトにリンクされていませんが、/ etc / rc.d / rc.local(/etc/rc.local)スクリプトにリンクされています。したがって、不便なプログラムやサービススクリプトとして作成する必要のないプログラムは、起動時に自動的に実行されることが予想される場合に、このスクリプトファイルに直接配置できます。

tty1:2345:respawn:/usr/sbin/mingetty tty1
......
tty6:2345:respawn:/usr/sbin/mingetty tty6	
tty7:5:respawn:/etc/X11/

mingettyはログインプログラムを呼び出します。loginはログインに使用されるプログラムです。mingettyに加えて、仮想端末を開くgettyなどのプログラムがあります。

  1. CentOS 5システム初期化スクリプト:/etc/rc.d/rc.sysinit
    (1) ホスト名を設定します。
    (2) ウェルカムメッセージを設定します。
    (3) udevとselinuxをアクティブ化します。
    (4) / etc / fstabファイルで定義されているすべてのファイルシステムをマウントします。
    (5) ルートファイルシステムを検出し、ルートファイルシステムを読み取り/書き込みモードで再マウントします。
    (6) システムクロックを設定します。
    (7) /etc/sysctl.confファイルに従ってカーネルパラメータを設定します。
    (8) lvmとソフトレイド機器をアクティブにします。
    (9) スワップデバイスをアクティブにします。
    (10) 追加のデバイス用のドライバーをロードします。
    (11) クリーンアップ操作。
  2. CentOS 6のinitプログラムは起動していますが、initコマンドは/ sbin / initのままであり、その構成ファイルは/ etc / init / 。conf、/ etc / inittab(デフォルトの実行レベルを定義するためにのみ使用されます)です。
    注:
    。confはアップスタートスタイルの構成ファイルです。
    rcS.conf:システム初期化スクリプト。
    rc.conf:サービスを開始および終了します。
    start-ttys.conf:仮想端末を起動します。
  3. CentOS 7のinitプログラムはsystemdであり、構成ファイルは/ usr / lib / systemd / system / *、/ etc / systemd / system / *であり、SysVスクリプトメカニズムと完全に互換性があります。したがって、serviceコマンドは引き続き使用できます。ただし、systemctlコマンドを使用することをお勧めします。サービスを制御するには:
    # systemctl {start|stop|restart|status} name[.service]

Recommended Posts

CentOSシステムの起動プロセス
Centosシステムプロセス管理
CentOSシステムの起動プロセスを知っていますか?
CentOSシステムの起動プロセスを知っていますか?
Centos6システムのブートロードプロセス
Linuxcentosシステムの起動プロセス
Centos7に関する注意事項|オペレーティングシステムの起動プロセス、Linuxユーザーおよび権限
セントスシステム管理
01 CentOS7.6スイッチシステム言語
CentOS7.5-1804システムカーネルのアップグレード
VirtualBoxはCentOSシステムをインストールします
Centos7.2システム最適化オリジナル
Centos各種時間[システム時間/ハードウェア時間]
Centos7システムで一般的に使用されるコマンド
グラフィカルなcentosインストールの詳細なプロセス
Centosシステムにdockerをインストールします
Centosシステムはタイムゾーンを変更します
centos6.5:gccアップグレード(5.2.0)プロセスレコード
Centosバックエンドシステムのセットアップ記録
Centos7インストールtomcatプロセスの紹介
CentOS8 Linux 8.0.1905のインストールプロセス(図)
CentOS6.Xシステム初期化スクリプト
CentOS 8(2)
CentOS7.Xシステムのインストールと最適化
CentOS 8(1)
CentOS7.2インストールlepusデータベース監視システム
Centos7オペレーティングシステムをDockerにインストールする
001.エンタープライズレベルのCentOS7.6オペレーティングシステムのインストール
CentOS7システムのインストールと構成のグラフィックチュートリアル
CentOS7.6オペレーティングシステムをインストールするためのグラフィックKVM
CentOS7はIT資産管理システムSnipe-ITをインストールします
CentOS7システム増加スワップ操作方法の例
LinuxカーネルのコンパイルとCentOSシステムのインストール
Centos7.6オペレーティングシステムのインストールと最適化の記録
LinuxCentOS7システムにmysql8.0.13バージョンをインストールします
[Centos8]ドッカーをインストールするでこぼこのプロセス
CentOS7システムyumMySQL5.7をインストールする方法
CentOS7システムの再起動後のIPアドレスの問題
CentOS7ビルドFastDFS分散ファイルシステム(下記)