Linuxが起動するまで

ざっくりまとめてみたけど、ざっくりしすぎてしまった。

スポンサーリンク

普通のPCとかサーバ

まずは普通のPCとかサーバの起動シーケンス。
電源投入されると、UEFIやらBIOSやらが実行されるとハードウェアの初期化とチェックを行い、ブータブルなデバイスを探す。
BIOSはブートデバイスを選んで制御を移す。
PC

NORありの組込みシステム

NORがあるとシーケンスはシンプル。
電源投入されると、CPUはNOR上のU-Bootを実行する。
U-Bootがハードウェアの初期化を行った後に、なんらかの方法でNORとかRAMとかSDカードとかNFSのLinuxカーネルがDRAM上にロードされ、制御が移る。
EmbededSimple

NORなしの組込みシステム

電源投入されると、SoC内部のMicroloaderが実行される。
次に、SPLがNANDやSDカードからSRAM上にロードされる。
そして、U-BootがDRAM上にロードされる。
ようやくU-BootによってLinuxカーネルがDRAM上にロードされ、制御が移る。
EmbededComplex

なんで多段ブートが必要なのか?

電源投入時点で、読み書き可能なメモリはSRAMしかないが、SRAMはたいていU-Bootを格納するほどの容量がない。
そこでまずSPLをロードし、DRAMの初期化を行う。
DRAMの初期化ができたら、そこにU-Bootをロードする。
U-BootがLinux KernelをDRAMにロードできるようになる。

スポンサーリンク

フォローする