Linuxシステム起動時のブートプロセスを分析する

PHPz
リリース: 2024-02-13 11:18:14
転載
1122 人が閲覧しました

Linux システムは、強力な機能と柔軟な構成を備えた、広く使用されているオープン ソース オペレーティング システムです。しかし、電源ボタンを押すと、Linux システムが暗闇から徐々に起動していく様子を考えたことはありますか? Linux システム起動のブート プロセスは複雑かつ繊細なプロセスであり、ハードウェア、ファームウェア、ブート ローダー、カーネル、ユーザー スペースなどの複数のレベルとコンポーネントが関係します。この記事では、BIOS、MBR、GRUB、initrd、init など、Linux システム起動のブート プロセスを詳細に分析します。

以下では、CentOS5.5 バージョンを例として、LINUX のブート プロセスを紹介します。具体的なプロセスは次のとおりです。

Linuxシステム起動時のブートプロセスを分析する以下は各ステップの詳細な紹介です:

1) 最初のステップはファームウェアのセルフテストです。これは主にハードウェアの CMOS/BIOS POST 電源投入時セルフテストを実行し、ハードウェアが物理レベルで正常であるかどうかを確認します。たとえば、ハードディスクが正しく接続されているかどうかなどを確認します。

2) 2 番目のステップは、ハードディスク内の MBR のブートローダーと自己起動プログラムを読み取ることです Linux で一般的に使用される自己起動プログラムは GRUB です。このステップの主な機能は、カーネルをロードすることです。カーネルは /boot ディレクトリに保存されます

3) 3 番目のステップは、カーネル カーネル
をロードするプロセスです。 主な機能は次のとおりです: 1. ハードウェアのドライブ: カーネルには多数のドライバーが含まれています。 2. 初期化プロセスを開始します。
4) init プロセスは主に /etc/inittab ファイルを読み取り、デフォルトの実行レベルを実行して起動を続行します。 init の PID は常に 1 (すべてのプロセスの親プロセス) ですが、init プロセスのバックグラウンド プロセスは 0 (カーネル スケジューラ) であることに注意してください。
5) /etc/inittab は初期化操作を定義します。


Linuxシステム起動時のブートプロセスを分析するコマンドの主な形式は次のとおりです: id: runlevels: action: process

その中で、上の写真の赤枠で示されているように、

1. 7 つの実行レベルがあり、0 ~ 6 は次のとおりです:
0 —— シャットダウンを停止
1 ——シングル ユーザー モード シングル ユーザー モード
2 - マルチユーザー、NFS なし ネットワークなしのマルチユーザー モード (テキスト モード)
3——フル マルチユーザー モード フル機能のマルチユーザー モード (テキスト モード)
4——未使用の予約済み
5 ——X11 グラフィカル マルチユーザー モード
6——再起動
これら 7 つのランニング レベルに応じて切り替えることができます
コマンドは次のとおりです: 現在の実行レベルを表示 #runlevel、実行レベルを切り替える #init[0 |1 |2 |3 |4 |5 |6]

2.acion にはいくつかの重要な値もあります:

1 initdefault: 上の図でマークされているように、通常は修復に使用される、システムのデフォルトの起動実行レベルを指定します。たとえば、シングル ユーザー モードに入りたい場合は、それを 1 に設定できます。 0 または 6 に設定することはできません。それ以外の場合は開始できません。

2sysinit: システムはプロセスで指定されたコマンドの実行を開始します


Linuxシステム起動時のブートプロセスを分析するinittab ファイルの内容から、実行レベルが設定されていないことがわかります。つまり、実行レベルに関係なく、/etc/rc.d/rc.sysinit が実行されます

6) initdefault は、5 番目のステップで説明したように、主に /etc/inittab 内の情報を読み取り、デフォルトの実行レベルを決定します。

7)/etc/rc.d/rc.sysinit

inittab ファイルの 21 行目までを実行して、スクリプトを開始します。システム環境変数の設定、システムクロックの設定、フォントのロード、ロードされたファイルシステムの確認、システム起動情報ログファイルの生成など、システムサービスプログラムの起動を完了します。これは基本サービスであるため、実行レベルは空、つまり任意のレベルに設定され、アクションは sysinit に設定されます。つまり、基本サービスの起動を完了するには、スクリプトを任意の実行レベルで開始する必要があります
8) 基本サービスが開始された後、スクリプト /etc/rc.d/rc が実行されます
基本サービスをロードした後、さまざまな実行レベルに従って対応するディレクトリを開始する必要があります。その動作原理は、まずシステムのデフォルトの実行レベル (ステップ 6 のもの) を決定し、次に対応する rcN を実行することです。 d ディレクトリ内のサービス起動スクリプトは次のとおりです。


Linuxシステム起動時のブートプロセスを分析する9) /etc/rc.d/rcN.d ディレクトリ内のサービス起動スクリプトを実行します

このディレクトリの内容を見てください:


ここで、S は開始されるスクリプトを表し、K は終了されるスクリプトを表します
数字は起動順序を示し、値が小さいほど優先されます主に一部のサービスの管理用です
このステップでは、ディレクトリ /etc/rc.d/init.d について説明する必要があります。このディレクトリに配置されたスクリプトは実際のスクリプトですが、rcN.d に配置されたスクリプトは init.d ディレクトリ内のソフト リンクです。つまり、rcN.d 内のすべてのファイルは、最終的に init.d
内の実際のスクリプトを見つける必要があります。 具体的な詳細を見てください:
Linuxシステム起動時のブートプロセスを分析する

Linuxシステム起動時のブートプロセスを分析する

この手順を実行すると、インターフェイスでユーザー名とパスワードの入力を求められます。これは、システムが起動したことを意味します。ユーザー名とパスワードを入力するプロセスについては後で説明します。今回はブートプロセスは終了しました

最後に注意すべき点は、LINUX ブート プロセスの考え方はほぼ同じですが、バージョンの問題により、設定ファイルの名前や場所が細部で異なります。今回は使用しました。 CentOS バージョンと Ubuntu バージョン inittab ファイルと grup.conf ファイルはないため、興味がある場合は、このアイデアに従って探索できます。

PS: GRUB について

GNU GRUB (略して「GRUB」) は、GNU プロジェクトのブートローダーです。 GRUB はマルチブート仕様の実装であり、これによりユーザーはコンピュータに複数のオペレーティング システムを同時にインストールでき、コンピュータの起動時に実行するオペレーティング システムを選択できます。 GRUB を使用すると、オペレーティング システム パーティション上のさまざまなカーネルを選択したり、ブート パラメータをこれらのカーネルに渡すために使用したりできます。

GNU GRUB の前身は Grand Unified Bootloader です。これは主に Unix 系システムで使用され、ほとんどの Linux ディストリビューションと同様に、GNU システムもランチャーとして GNU GRUB を使用します。バージョン 10 1/06 以降、Solaris は x86 システム上のランチャーとして GNU GRUB も使用します。

GRUB は動的に構成可能であり、起動時に構成情報をロードし、別のカーネルや initrd の選択など、起動時の変更を可能にします。この目的のために、GRUB はシンプルな Bash のようなコマンド ライン インターフェイスを提供し、ユーザーが新しい起動シーケンスを作成できるようにします。

GRUB は非常に軽量です。さまざまな実行形式をサポートしており、マルチブートをサポートするオペレーティング システムに適用できるほか、チェーン ブート機能により、マルチブートをサポートしない Windows や OS/2 などのオペレーティング システムにも対応します。 GRUB は、すべての Unix ファイル システム、Windows の FAT および NTFS ファイル システムをサポートし、LBA モードもサポートします。 GRUB を使用すると、ユーザーは、サポートするファイル システム内のファイルの内容を表示できます。

GRUB にはさまざまなユーザー インターフェイスがあります。ほとんどの Linux ディストリビューションは、GRUB のグラフィカル インターフェイスのサポートを利用して、背景パターンを備えたカスタマイズされたブート メニューを提供し、場合によってはマウスもサポートします。 GRUB テキスト インターフェイスを設定すると、シリアル ポート経由でリモート端末を起動できます。

GRUB はネットワークからオペレーティング システム イメージをダウンロードできるため、ディスクレス システムをサポートできます。 GRUB は、オペレーティング システムを起動する前に、オペレーティング システムのイメージを解凍することをサポートしています。

他のランチャーとは異なり、GRUB は GRUB プロンプトを通じてユーザーと直接対話できます。オペレーティング システムをロードする前に、GRUB テキスト モード画面で c キーを入力して、GRUB コマンド ラインを入力します。オペレーティング システムがないシステム、またはオペレーティング システムはあるが「menu.lst」ファイルがないシステムでは、GRUB プロンプトを入力することもできます。 GRUB プロンプトを使用すると、ユーザーは bash のようなコマンドを使用してオペレーティング システムを手動で起動できます。オペレーティング システムを自動的に起動するには、「menu.lst」ファイルに適切なコマンドを記録します。

GRUB には、豊富なターミナル コマンド セットが用意されています。コマンド ラインからこれらのコマンドを使用すると、ユーザーはハードディスク パーティションの詳細の表示、パーティション設定の変更、ディスク順序の一時的な再マッピング、ユーザー定義の構成ファイルからの起動、およびGRUB がサポートするものを表示する ファイル システム上の他のランチャーの構成。したがって、コンピュータに何がインストールされているかを知らなくても、外部デバイスからオペレーティング システムを起動することができます。

GRUB はスクロール画面を使用して、起動するオペレーティング システムを選択します。関連情報を「menu.lst」ファイルに追加することで、GRUB は 150 以上の起動オプションを制御でき、起動時に矢印キーで選択できます。

チェーン起動では、1 つのスターターが別のスターターを起動できます。 GRUB は、DOS、Windows、Linux、BSD、Solaris システムから 2 ~ 3 行のコマンドで起動できます。

GRUB は Unix 系システム用にコンパイルおよびパッケージ化されていますが、DOS および Windows 用の GRUB もあります。 GRUB は、オペレーティング システムを使用せずに独立したシステムとしてインストールすることもできます。 GRUB を使用するには、CD から起動する場合は 1 つのファイルが必要で、フロッピー ディスク、ハードディスク、および USB デバイスから起動する場合は 2 つのファイルが必要です。これらのファイルは GRUB をサポートする Linux CD にあり、ユーザーは簡単に見つけることができます。

この記事では、BIOS、MBR、GRUB、initrd、init など、Linux システム起動のブート プロセスを詳細に分析します。この知識を理解して習得することで、Linux システムの内部動作をより深く理解できるようになり、Linux システムをより適切に使用し、最適化できるようになります。もちろん、Linux システム起動のブート プロセスには多くの詳細と変更があり、引き続き学習し、探索する必要があります。

以上がLinuxシステム起動時のブートプロセスを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:lxlinux.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!