web-dev-qa-db-ja.com

Linuxシステムの起動プロセスを詳しく説明する

ホストの電源投入ボタンを押してからログインプロンプトの外観に至るまで、Linuxのブートシーケンスに光を当てたドキュメントを詳細に準備しています。

ここでその正しい答えを1つの参照場所にまとめて照合できればすばらしいと思います。起動時に注意する必要がある詳細をすべて含めてください。すべてのポイントからドキュメントが完成したら、ここにもドキュメントの詳細を投稿し、質問のリンクを更新します。

ディスクからの起動、USBからの起動、rootfs(/)がネットワーク上にあるディスクレスクライアントでのネットワークからの起動など、考えられるすべてのシナリオを検討してください。

14
Nikhil Mulley

LinuxのブートシーケンスまたはPCのブートシーケンスだけが必要です... usb/cdrom/hddからのLinuxのブートには違いがないため... Linuxは常に、ブートローダーがあるMBRからブートします...

Linuxブートプロセス:

  1. 電源が入ると、BIOSに制御が与えられます
  2. BIOSは通常、大まかなメモリテストを含むセルフテストを実行します。
  3. 次に、BIOSは、起動に使用されるディスクの最初のセクターをロードし、そこに制御を移します。
  4. MBRコードはさまざまです。 1つのバージョンはブートパーティション(Windows)の最初のセクターのコードにチェーンし、別のバージョンはブートローダーをロードします。 Windowsブートは、ブートパーティションのコードと情報から始まります。
  5. ブートローダーがカーネルの場所とバージョンを選択
  6. ブートローダーはメモリ内のカーネルとinitrdイメージを準備し、制御をカーネルに移します
  7. カーネルモジュールの読み込み
  8. ハードウェアを検出し、それをサポートする追加のカーネルモジュールをロードする
  9. ディスクを探しています
  10. /パーティションのR/Oマウントにより、チェックおよび修復できる可能性があります
  11. initプロセスの生成
  12. / etc/inittab読み取りと実行
  13. / etc/fstabからすべてのFSをマウントする
  14. 実行中のランレベル(/ etc/inittabのデフォルトのランレベルに基づく)またはsystemdやupstartなどの別のinitメソッド
  15. rc.local
  16. ログインプロンプト
7
Sebastian Szary

これは私が見つけた最高のX86/Linux起動プレゼンテーションです。それは2時間以上かかり、密度が高く、アセンブリとハードウェアアーキテクチャのビットがたくさんあるため、Linuxコマンドラインだけではありません。

http://excess.org/article/2008/08/oclug-august-kernel-walkthrough-boot-process/

6
Marcin

bootchart をインストールして使用してみてください。

3
Alexander