Index ソフト・ハード Linuxタスク | 起動(SysVinit) |
SysVinit ブート 起動 dmesg ブートローダ |
SysVinit ・SysVinitは、ユーザプロセスを順番に処理(起動が遅くなる可能性がある。) ハードウェア起動 BIOS/UEFI起動 OSカーネル起動 initプロセス起動 ユーザープロセス起動 ・・・ ユーザープロセス起動ブート ・マルチプロセッサマシンでも、起動処理は1つのCPUで行う ・pciバス ・PCIデバイス 使用しているリソース PCI BIOSから入手した検出データを「/proc/pci」ファイルで参照 (各ハードウェアのドライバとは無関係)起動(boot) ・電源オン ・0xfffffff0番地(ROM:BIOS)へジャンプ ・BIOS(ハードウェア組み込みプログラム)起動、POST(電源オン時テスト)実行 ・ハードディスク(HD)の電源オン ・HDの記憶領域の先端(512バイト(MBR))にある情報を最初にメモリに読み込む BIOSは、最後2バイトが「55」「aa」の場合「ブートシグニチャ」と認識する。 BIOSは「このデバイスはブート可能なデバイスである」と認識 ブートローダと呼ばれる、起動用のプログラムを格納するための記憶領域も用意・メモリの機械語プログラムの先端にプログラム・カウンタを合わせ、そのプログラムを実行する。 (OS起動用の)ブートローダの起動 (ブートローダの指示にしたがい)OSの起動dmesg ・セットアップルーチン 初期チェック 物理MEMの大きさ確認 BIOSのサービスを呼び出す(INT 15H,Function E820H) キーボードのリピートレートを設定 VGAの属性を設定 IDEディスクの属性設定 PS/2マウスの接続確認 A20を有効にする 仮IDT、GDTを作成 FPUをリセット 割り込みコントローラを仮設定 CPUをリアルモードからプロレクトモードにする カーネルの展開ルーチンを呼び出す・圧縮カーネルの展開 ・展開後のカーネルを連結 ・カーネルを起動 ・カーネルは、initrdをマウント、RAMディスクにinitrdオプションで指定のファイルを展開 ・(一時的なルートファイルシステムとしてマウント) ・カーネルは、初期設定スクリプト(linuxrc)を実行 デバイスの初期化 カーネル組込み又は、モジュールロードしたデバイスドライバを使用して行う・initプログラム起動 (最初に起動されるユーザランドプロセス、ID = 0) 設定ファイルの読み込み(/etc/inittab) ネットワークの設定 ファイルシステム破損チェック ファイルシステムのマウント モジュールの依存関係チェック、デバイスの初期化 ランレベルに応じて、起動プロセスの実行 「/etc/init.d/rcX」スクリプトによって、「/etc/rcX.d」配下のスクリプトを実行 アプリケーションの起動スクリプトのシンボリックリンク 命名規則 S : Start K : Kill 数字の小さい順に実行ブートローダ ・既にインストールしてあるものが適切に動作しているのであれば、それを使い続けるのがベスト ・電源投入によって開始されるOS起動までの一連の動作をブート ストラップ(boot strap) 電源ON システムBIOS ブートローダー OSの起動 |
All Rights Reserved. Copyright (C) ITCL |