コンピューターの電源を入れてからシステムに入ることが提案されるまで、スクリーンセーバーとローディング画面のカーテンの後ろで何が起こるかに誰もが興味を持っていると思います。
典型的なLinuxブートの次のレベルに精通することをお勧めします。
1. BIOS
- BIOSは、デバイスとの間の基本的なデータの入出力を行います。
- いくつかのデバイスの整合性チェックを行います。 さらに、BIOSによって制御されるPOST(起動前の段階として実行される「自己診断テスト」とも呼ばれる電源投入時自己診断テスト)は、電子機器のパフォーマンスのテストを担当します。
- OSダウンローダーの検索、ダウンロード、実行
- フロッピー、sidyukまたはハードドライブからブートローダーを取得します。 BIOSの起動中に、ハードウェア設定に関する変更を行う必要がある場合は、ボタン(通常はF12またはF2またはDel、プラットフォームによって異なります)をクリックできます。
- ブートローダが検出され、メモリにロードされると、BIOSは制御を転送します。
- つまり、BIOSが起動し、ブート記録(MBR)を実行します。
2. MBR
- MBRは、ハードドライブに保存されているメインブートレコードです。
- / 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は
プリマススクリーンセーバーの美しいアニメーションを表示し、数秒間の対話的なユーザーインタラクションを待った後、1つのキーを押さなかった場合、デフォルトでインストールされたカーネルをgrub構成ファイルにロードします。 - GRUBはファイルシステムが何であるかを理解しています(たとえば、古代のLinuxローダー、LILOはこれを理解していません)。
- Grub構成ファイルは通常、パス/boot/grub/grub.confにあります(/etc/grub.confがシンボリックリンクになることもあります)。 CentOSの構成ファイルの例を次に示します。
#boot=/dev/sda<br>default=0<br>timeout=5<br>splashimage=(hd0,0)/boot/grub/splash.xpm.gz<br>hiddenmenu<br>title CentOS (2.6.18-194.el5PAE)<br> root (hd0,0)<br> kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/<br> initrd /boot/initrd-2.6.18-194.el5PAE.img
- 上記の情報への注意として、構成ファイルにはカーネルとinitrdイメージへのパスが含まれています
- 簡単に言うと、GRUBは単にカーネルとinitrdイメージをダウンロードして実行します。
4.カーネルまたはカーネル
- カーネルは、grub.confファイルの「root =」設定に従ってファイルシステムをマウントします
- プログラム/ sbin / initを実行します
- initはLinuxカーネルによって起動される最初のプロセスであるため、プロセスID(PID)は#1になります。 ps -efを実行できます| grep init」を参照してください。
- initrdは初期RAMディスクであり、ランダムアクセスメモリ内の一時ディスクです
- initrdは、カーネルが実際のマウントされたファイルシステムを起動するまで、カーネル自体によって一時的なルートファイルシステムとして使用されます。 この一時ディスクには、ダウンロードに必要なドライバーも含まれており、ディスクパーティションやその他の機器にアクセスできます。
5.初期化
- 実行レベルを決定するために/ etc / inittabファイルを調べます。
- 次のランレベルが利用可能です:
- 0-中止
- 1-シングルユーザーモード、いわゆる「シングルユーザーモード」、つまり、回復コンソール
- 2-NFSサポートなしのマルチユーザーモード
- 3-フルマルチプレイヤーモード
- 4-使用されていません
- 5-X11
- 6-再起動
- Initは、/ etc / inittabに基づいてデフォルトのランレベルを決定し、それを使用して必要なすべてのプログラムをロードします。
- システムでgrep initdefault / etc / inittabを実行すると、使用するデフォルトレベルがわかります。
- 安心して生活できない場合は、標準レベルを0または6に設定できます。
- ほとんどの場合、レベル3または5で十分です。
6.プログラム実行のレベル(ランレベル)
- Linuxのダウンロードが完了すると、さまざまなサービスの読み込みを確認できます。 たとえば、これらは「starting Postfix ... OK」(Postfixが開始する)などのメッセージです。 これらのサービスはランタイムプログラムと呼ばれ、目的の実行レベルに対応するディレクトリから実行されます。
- デフォルト設定に基づいて、システムは以下のディレクトリに従ってファイルを実行します。
- レベル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はsyslogデーモンの起動に使用され、そのシリアル番号は12です。S80sendmailは、シリアル番号80のsendmailデーモンの起動に使用されます。したがって、syslogプログラムはsendmailの前に起動されます。
以上です。 おそらくこれは一部のユーザーにとって目新しいものではなく、この記事を読むことに特に興味はありませんでした。なぜなら、Linuxに精通している初期平均レベルに焦点を当てているからです。
この場合、「繰り返しが学習の母」であるとしか言えません(c)。
追加、修正、説明
コメントは記事のテキストに繰り返しアピールしているので、habrasocietyからのいくつかの重要なコメントを検討する価値があると思います。 ( artemlight 、 3al 、 Tishka17 、 HhyperH 、 Next_Alex 、 Ilya_Shmelykh 、 Aux 、 soomrack 、 Xpehに感謝 )
- artemlight :: 「それでは、 率直に言ってみましょう-すべてのディストリビューションがそのようにロードされるわけではありません。」 大多数は彼に同意し、bsdスタイルのinit、u-bootに注目し、initrdはこの記事では省略されていますが、カーネルはすべてのディストリビューションでそれを必要としないことに注意する価値があります。 また、slackwareではrc.dのサポートは互換性としてのみ提供されており、組み込みシステムのロードは異なることに注意してください。 デスクトップでは、EFIが発生することがあります。さらに、Linuxは組み込みの世界で人気があり、さまざまなプラットフォームがまだたくさんあります。 電話機のLinuxは一般に異なる方法でロードされます。
- Wikipediaを参照したsoomrack :私はMBR、最初のセクターなどについてもコメントしたいと思います。すべてが近年複雑になっています。 EFIについて話すのがより適切です。
「GUIDパーティションテーブル(GPT)は、パーティションテーブルを物理ハードドライブに配置するための標準形式です。 これは、元のIBM PCの最後の遺物の1つである古いBIOSを置き換えるためにIntelによって提案された標準であるExtensible Firmware Interface(EFI)の一部です。 EFIは、BIOSがマスターブートレコード(MBR)を使用するGPTを使用します.... " - 彼らはまたリロを思い出すように頼みました 。 リロ、私たちはあなたを覚えています! こんにちは
- Xpeh氏は 、「BIOS(およびここで言及されていない(U)EFI)は主にデバイスの初期化(PCIデバイスの独自のBIOSのロードを含む)を扱うため、何も書かれていません。 この役割は徐々に減少していますが、ますます多くのハードウェアがそれ自体を初期化するか、ホット接続をサポートするため、OSは初期化されますが、たとえば、常にRAMの初期化を行います。 „
- VolChはDebian-Ubuntu OS のブートを明確にします:
Debian / Ubuntuの場合:
-/etc/rc.d/ディレクトリがありません。
-/etc/rc?.d/ディレクトリはリンクではなく実際のディレクトリです。
-これらのディレクトリは、スクリプトへのリンクを/etc/init.d/ディレクトリに保存します
手動で、/ etc / rc?.d /を編集せずに、update-rc.dコマンドを使用してリンクを作成、削除、無効化(実際にはc S *をK *に変更)、許可(c K *をS *)起動。