MIPSアーキテクチャ上にLinuxを初期インストールするには「ブートローダ」が重要

とりあえず、既存のMIPS CPUリポジトリを使ってFPGA実機でLinux動作させようと思ったが...

Q. そもそも、LinuxカーネルイメージをFPGA(上のMIPS CPU)に転送しても、どうやって起動(or インストール)するのだろう?

A1. ブートローダが鍵になるっぽい。

  • x86は起動時にBIOSによってディスクからブートローダをロードし、起動する。
  • MIPSはROMモニタをフラッシュ領域からロードし、状態を設定する。 (U-boot, YAMON)

xv6のテキストAppendix-B "The Boot Loader" を翻訳しました - FPGA開発日記

パタヘネ本には特にブートシーケンスの説明はなかったから、あくまでプロセッサ側は愚直にProgramCounterに従って命令を実行するのみで、ブートローダ自体はソフトウェア層で実装するもの、という理解。

U-Boot

  • serial console support
  • integrated shell alike setup interface
  • optional password protectection and timeout for acces to setup interface on boot
  • editable configuration space
  • downloads software trough tftp servers
  • flash routines for EEPROMS of misc technology including NANDs
  • runs test applications directly
  • boots Linux

U-Boot - LinuxMIPS

http://blog.techlab-xe.net/archives/4208

Linux Boot sequence on MIPS??

Re: Linux Boot sequence on MIPS??

ブートローダもCPUアーキテクチャに依存する

f:id:varmil:20171102213308p:plain

http://www.cqpub.co.jp/interface/sample/200511/if0511_chap1.pdf

YANONやU-BootというのはMIPSアーキテクチャに対応したOSSブートローダ、といった位置づけだろうか。

initramfsとは

initrd - Wikipedia

第384回 Initramfsのしくみ:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

カーネルブートローダーによって起動されたあと,ルートファイルシステムをマウントするために,サポートしているすべてのディスクデバイスのドライバを持っている必要があります。

しかしながらこのドライバをすべてカーネルに組み込んでしまうと,カーネルが肥大化してしまいます。しかもそのほとんどは,今使っているディスクデバイスでは不要なドライバです。必要なドライバを必要に応じてロードする仕組みとして「カーネルモジュール」がありますが,今度はその「カーネルモジュール」をどこに保存するのかという問題が発生します。当然のことながら,この時点でルートファイルシステムにはアクセスできません。

そこで出てくるのが「Initramfs」という仕組みです。

Ubuntuに限らずほとんどのLinuxディストリビューションでは,「⁠ミニルート」とも呼ばれるメモリ上に展開可能な,小さなサイズのルートファイルシステムを持っています。「Initramfs」は,現在はデスクトップLinuxでもっとも使われているミニルートのファイルフォーマットの1つです