CentOSシステムはどのようにプロセスを開始しますか?CentOSシステム起動プロセスのチュートリアル
電源ボタンを押すと、システムの背後にある秘密がわかりますか?ここでは、linuxシステムの起動の背後にある秘密を探ってみましょう。
マザーボードは電源を入れた後、システムはまずPOSTプログラムによって内部の各設備に対して検査を行い、自己検査中にエラーが発見された場合、2つの状況によって処理する:深刻な故障(致命的な故障)に対して停止し、この時各種の初期化操作がまだ完成していないため、いかなるヒントや信号を与えることができない;重大でない障害については、プロンプトまたは音声アラーム信号が与えられ、ユーザの処理を待つ。
2.BIOS起動起動起動段階セルフテストに合格した後、各ブートデバイスを順番に検索します。最初にブートプログラムがあるデバイスは、今回の起動に使用するデバイスです。一般的にパソコンは「F 2」や「Del」キーなどを押してBIOSに入り、ハードディスクの起動順序を調整することができます。
ブートストラップのある最初のデバイスが見つかった後、BIOSはデバイスのMBRを見つけ、Bootloaderを読み込みます。
3.GRUPブートフェーズこの時点でCentosシステムを見ることができますが、一般的には操作を必要とせず、自動的にシステムを起動します。システムを手動で起動することもできます
3.1 grubコマンドラインインタフェースで手動でシステムを起動する:grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
3.2 grubのコマンドラインインタフェース:e:メニューを編集するための編集モード;
c:コマンドモード、インタラクティブインタフェース;
help:ヘルプリストの取得
help KEYWORD:詳細ヘルプ
find (hd#,#)/PATH/TO/SOMEFILE:
root(hd#,#)grupのルートデバイスを設定
kernel /PATH/TO/KERNEL_FILE:今回の起動時に使用するカーネルファイルを設定します。さらに、多くのカーネルサポートで使用されるcmdlineパラメータを追加することもできます。
たとえば、init=/path/to/init、selinux=0
initrd /PATH/TO/INITRAMFS_FILE:選択したカーネルに追加ファイルを提供するramdiskを設定します。
boot:選択したカーネルの起動を起動します。
3.3プロファイル:/boot/grub/grub.conf構成アイテム:
default=#:デフォルトで起動するメニュー項目を設定します。落単項(title)番号は0から始まる。
timeout=#:メニュー項目の待機オプションの選択時間を指定します。
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:メニュー背景画像ファイルのパスを指定します。
hiddenmenu:メニューを隠す;
password[--md 5]STRING:メニュー編集認証;
title TITLE:メニュー項目「タイトル」を定義し、複数回表示することができる。複数のカーネルまたはオペレーティングシステムを起動するために使用
root(hd#,#):grubはstage 2およびkernelファイルが存在するデバイスパーティションを検索します。grubの「根」です。
kernel /PATH/TO/VMLINUZ_FILE[PARAMETERS]:起動したカーネル
initrd /PATH/TO/INITRAMFS_FILE:カーネルマッチングramfsファイル;
password[--md 5]STRING:選択したカーネルまたはオペレーティングシステムを起動したときの認証
4.カーネルステージのロードカーネル自体が初期化されます。
認識可能なすべてのハードウェアデバイスを検出する。
ハードウェアドライバをロードします。(ramdiskによるドライバのロードが可能)
ルートファイルシステムを読み取り専用でマウントします。
ユーザースペースを実行する最初のアプリケーション:/sbin/init
5.init初期化フェーズカーネルのロードが完了すると、initプログラムが実行され、initプロセスが開始すると、システム起動の制御権がinitプロセスに渡されます。
/sbin/initプロセスは、すべてのプロセスの親プロセスです。initが起動すると、まずプロファイル/etc/inittabを読み込み、次の作業を行います。
1.システム初期化スクリプト(/etc/rc.d/rc.sysinit)を実行し、システムに対して基本的な配置を行い、ルートファイルシステムとその他のファイルシステムを読み書き方式でマウントし、このシステムは基本的に実行され、後で運行レベルの確定と相応のサービスの起動を行う必要がある。
2.起動後に入る運行レベルを確定する;
3.実行/etc/rc.d/rcは、サービス開始の順序がK後Sであることを定義、具体的には各実行レベルのサービス状態が/etc/rcである.d/rcn.d(n=0~6)ディレクトリの下で、すべてのファイルが/etc/initにリンクする.dの下の対応するファイル。
4.key sequenceの設定について
5.UPSのスクリプト定義について
6.仮想端末/sbin/mingettyの起動
7.運転レベル5でXを実行
プロファイル:/etc/inittab各行はactionとそれに対応するprocessを定義する
id:runlevels:action:process
id:タスクの識別子;
runlevels:このタスクを開始するレベルは?#,###,空で、すべてのレベルを表すことができます。
Action:どの条件でこのタスクを開始しますか。
process:タスク;(スクリプトまたはプログラム)
action:
wait:このタスクが存在するレベルに切り替えるのを待っている間に1回実行します。
respawn:このタスクが終了すると、自動的に再起動します。
initdefault:デフォルトの実行レベルを設定します。この場合、processは省略する。
Sysinit:システムの初期化方式を設定、ここでは一般的に指定/etc/rcである.d/rc.Sysinitスクリプト;
K*:停止するサービス;K##*、優先度、数字が小さいほど優先的に閉じる;依存するサービスはまず閉鎖され、その後閉鎖されて依存される。
S*:起動するサービス;S##*、優先度、数字が小さいほど、優先的に起動します。依存するサービスは先に起動し、依存するサービスは後で起動する。
chkconfigコマンド:管理/etc/init.d/各サービススクリプトの各レベルでの起動または停止状態;表示:chkconfig--list[name]
追加:chkconfig--add name
削除さくじょ:chkconfig--del name
指定したリンクタイプを変更するには、次の手順に従います。
--level LEVELS:制御するレベルを指定します。デフォルトは2345です。
initコマンド:レベル切替:init#
レベル表示:who-r
注意:通常レベルでは、最後に起動するサービスS 99 localは/etc/initにリンクされていない.dの下のスクリプトではなく、/etc/rcにリンクされています。d/rc.local(/etc/rc.local)スクリプト;したがって、サービススクリプトとして書く必要がないプログラムが起動して自動的に実行されることを望む場合は、このスクリプトファイルに直接配置すればよい。