ブートローダ U-Bootの用語集(12語)
ブートローダ U-Bootに関する Linux 用語を、読み・意味・補足つきでまとめました。
bootargsぶーとあーぐす
U-Bootからカーネルへ渡すカーネル起動引数を入れた環境変数。
root=(ルートデバイス)・console=(コンソール)・ip= などを指定する。デバイスツリーの chosen ノード経由でカーネルに渡され、起動後の /proc/cmdline で確認できる。
bootcmdぶーとこまんど
自動起動時にU-Bootが実行するコマンド列を入れた環境変数。
bootdelay 秒の入力待ちでキーが押されなければ実行される。通常はカーネルとDTBをロードして bootm/booti で起動する一連の手順が書かれる。手で順に打てば同じことを再現できる。
SPLえすぴーえる
U-Bootの一次ローダ。容量の小さい内蔵SRAMで動く軽量段。
Secondary Program Loader。ROMコードが最初に読み込む小さなコードで、DRAMを初期化して本体のU-Bootをロードする。内蔵SRAMに収まるよう機能が絞られている。
TFTP起動てぃーえふてぃーぴーきどう
ネットワーク上のTFTPサーバからカーネル等を取得して起動する開発手法。
U-Bootの tftpboot で指定アドレスへ転送する。ipaddr・serverip を設定し、必要なら dhcp で取得。ストレージを書き換えずにカーネルを差し替えられ、反復開発が速い。
U-Bootゆーぶーと
組込みLinuxで広く使われるオープンソースの二次ブートローダ。
Das U-Boot。多数のSoC・ストレージ・ネットワークに対応し、対話コンソールから環境変数編集・メモリ操作・カーネル起動が行える。開発から量産まで使われる定番。
uImage/zImageゆーいめーじ/ぜっといめーじ
カーネルイメージの形式。uImageはU-Bootヘッダ付き、zImageは圧縮済みカーネル。
uImage は mkimage でヘッダを付けたもので bootm が扱う。zImage は自己展開する圧縮カーネルで bootz、生の Image は booti が扱う。形式に合った起動コマンドを選ぶ必要がある。
シリアルコンソールしりあるこんそーる
U-Bootやカーネルが入出力に使うシリアル回線の端末。
起動ログの表示やU-Bootプロンプト操作はこの回線で行う。ホストからは115200bpsなどで接続する。console= 引数でカーネル側の出力先も指定する。組込みのデバッグの基本経路。
セカンドステージせかんどすてーじ
ROMコードやSPLの次に動く本格的なブートローダ段。U-Bootが担う。
一次ローダ(SPL)が最低限の初期化とDRAM設定を行い、より大きな二次ローダ(U-Boot本体)をDRAMへ読み込んで起動する。二次段が環境変数・ネットワーク・対話コンソールなど豊富な機能を提供する。
デバイスツリー(DTB)でばいすつりー
ハードウェア構成を木構造で記述したデータ。U-Bootが読み込みカーネルへ渡す。
周辺機器を自動検出できない環境で、CPU・メモリ・各ペリフェラルのアドレスや割り込みを記述する。人が書く .dts をコンパイルした .dtb をU-Bootがメモリに置き、起動時にカーネルへ渡す。
ブートローダぶーとろーだ
OS本体を起動する前に走り、カーネルを読み込んで制御を渡すプログラム。
最低限のハードウェア初期化(DRAM・クロック・コンソール)を行い、ストレージやネットワークからカーネルとデバイスツリーをメモリに配置して実行を移す。組込みでは多段構成を取ることが多い。
ロードアドレスろーどあどれす
カーネルやDTBを読み込むメモリ上の番地。loadaddr等の変数で管理する。
カーネルとDTBはそれぞれ重ならない番地に置く必要がある。loadaddr・fdt_addr・kernel_addr_r などの環境変数で管理し、ロードコマンドと起動コマンドで同じ値を指す。
環境変数(U-Boot)かんきょうへんすう
U-Bootの挙動を決める設定値。printenvで確認、setenvで変更、saveenvで永続化。
bootargs・bootcmd・ipaddr・serverip などが代表。${name} 形式で相互参照でき、起動手順を部品化できる。setenv 直後はRAM上にあり、saveenv で不揮発領域へ書き戻す。