システムの電源ボタンを押すと、しばらくすると Linux ログイン プロンプトが表示されます。
電源ボタンを押してから Linux のログイン プロンプトが表示されるまで、舞台裏で何が起こっているのか考えたことはありますか?
以下は、一般的な Linux ブート プロセスの 6 つの高レベル ステージです。
1. BIOS
- BIOS は Basic Input/Output System の略
- いくつかのシステム整合性チェックを実行します
- ブートローダー プログラムを検索、読み込み、実行します。
- フロッピー、CD-ROM、またはハード ドライブでブート ローダーを探します。 BIOS の起動中にキー (通常は F2 または F12 ですが、システムによって異なります) を押して、ブート シーケンスを変更できます。
- ブートローダ プログラムが検出されてメモリにロードされると、BIOS がそのプログラムを制御します。
- 簡単に言うと、BIOS は MBR ブートローダーをロードして実行します。
2. MBR
- MBR はマスター ブート レコードの略です。
- ブータブル ディスクの 1 番目のセクタにあります。通常、/dev/hda または /dev/sda
- MBR のサイズは 512 バイト未満です。これには 3 つのコンポーネントがあります。1) 最初の 446 バイトのプライマリ ブート ローダー情報、2) 次の 64 バイトのパーティション テーブル情報、3) 最後の 2 バイトの mbr 検証チェック。
- GRUB (古いシステムでは LILO) に関する情報が含まれています。
- 簡単に言えば、MBR は GRUB ブートローダーをロードして実行します。
3. GRUB
- GRUB は Grand Unified Bootloader の略です
- システムに複数のカーネル イメージがインストールされている場合、実行するイメージを選択できます。
- GRUB はスプラッシュ スクリーンを表示し、数秒間待機します。何も入力しないと、grub 構成ファイルで指定されたデフォルトのカーネル イメージをロードします。
- GRUB はファイルシステムの知識を持っています (古い Linux ローダー LILO はファイルシステムを理解していませんでした)。
- Grub 構成ファイルは /boot/grub/grub.conf です (/etc/grub.conf はこれへのリンクです)。以下は、CentOS の grub.conf のサンプルです。
#boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ initrd /boot/initrd-2.6.18-194.el5PAE.img
4.カーネル
- grub.conf の「root=」で指定されたルート ファイル システムをマウントします
- カーネルは /sbin/init プログラムを実行します
- init は Linux カーネルによって最初に実行されるプログラムであるため、プロセス ID (PID) は 1 です。 grep init’ を実行して pid を確認してください。
- initrd は初期 RAM ディスクの略です。
- initrd は、カーネルが起動して実際のルート ファイル システムがマウントされるまで、一時的なルート ファイル システムとしてカーネルによって使用されます。また、内部にコンパイルされた必要なドライバーも含まれており、ハード ドライブ パーティションやその他のハードウェアへのアクセスに役立ちます。
5.初期化
- /etc/inittab ファイルを調べて、Linux の実行レベルを決定します。
- 利用可能な実行レベルは次のとおりです
- 0 – 停止
- 1 – シングル ユーザー モード
- 2 – マルチユーザー、NFS なし
- 3 – フル マルチユーザー モード
- 4 – 未使用
- 5 – X11
- 6 – 再起動
- init は、/etc/inittab からデフォルトの initlevel を識別し、それを使用してすべての適切なプログラムをロードします。
- システムで「grep initdefault /etc/inittab」を実行して、デフォルトの実行レベルを特定します
- 問題が発生したい場合は、デフォルトの実行レベルを 0 または 6 に設定できます。0 と 6 の意味を知っているので、おそらくそうしないでしょう。
- 通常、デフォルトの実行レベルを 3 または 5 に設定します。
6.ランレベル プログラム
- Linux システムの起動時に、さまざまなサービスが開始されることがあります。たとえば、「sendmail を開始しています....わかった"。これらは、ランレベルで定義されたランレベル ディレクトリから実行されるランレベル プログラムです。
- デフォルトの初期化レベル設定に応じて、システムは次のディレクトリのいずれかからプログラムを実行します。
- 実行レベル 0 – /etc/rc.d/rc0.d/
- 実行レベル 1 – /etc/rc.d/rc1.d/
- 実行レベル 2 – /etc/rc.d/rc2.d/
- 実行レベル 3 – /etc/rc.d/rc3.d/
- 実行レベル 4 – /etc/rc.d/rc4.d/
- 実行レベル 5 – /etc/rc.d/rc5.d/
- 実行レベル 6 – /etc/rc.d/rc6.d/
- /etc の直下にあるこれらのディレクトリへのシンボリック リンクも利用できることに注意してください。したがって、/etc/rc0.d は /etc/rc.d/rc0.d にリンクされます。
- /etc/rc.d/rc*.d/ ディレクトリの下に、S と K で始まるプログラムが表示されます。
- S で始まるプログラムは、起動時に使用されます。スタートアップの S。
- K で始まるプログラムは、シャットダウン中に使用されます。殺すための K。
- プログラム名の S と K のすぐ隣に数字があります。これらは、プログラムを開始または強制終了するシーケンス番号です。
- たとえば、S12syslog は、シーケンス番号が 12 の syslog デーモンを開始します。S80sendmail は、シーケンス番号が 80 の sendmail デーモンを開始します。したがって、syslog プログラムは sendmail の前に開始されます。 リ>
そこにあります。これは、Linux の起動プロセス中に発生することです。