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