Kernelをbuildすると、最終的にvmlinuxというファイルができますよね。
これはもちろん、kernelをコンパイルしてLinkした結果で、
普通はELF(Executable and Linking Format)形式の、
デバッグシンボル等が付いてる形で出力されます。
これを各アーキテクチャで起動するように変換したものを、
ブートイメージファイルって呼んでます。
zImageとかbzImageなんて名前のファイルですね。
基本的には、実際に動作するプログラム部分だけ抜き出したbinaryに、
それを読み込んだり展開したりするプログラムをくっ付けた形のものです。
折角手元にARMアーキテクチャの開発環境がありますので、
Makefileなどを参考にブートイメージファイルの名前と意味を調べてみました。
・・・けど、いくつか分からない部分も出てきちゃいました。
宿題が残ってしまったので、今回はその1なんです。
zImage
gz圧縮されたイメージファイル。
解凍プログラム→解凍・展開→Kernel起動の順に動作し、
よく組み込みシステムで使われる。
bzImage
bzipで圧縮されてる以外はzImageと同じ。(はず)
i386用はこれが多いらしい?
でもopenSUSEって/boot/vmlinuzを読んでるよね・・・。
xipImage
XIP(eXecute in Place)形式というやつで、
RAMへ展開せずに、極力そのまま使えるようにしたものらしいです。
NORフラッシュ等に余裕があるなら使えそうな形ですね。
今度試してみよう。
rImage
ramcopy形式とMakefileには書いてありました。
無圧縮の形で、とにかく仮想空間への展開だけしてるのでしょうか?
じつはちょっと動きが分からないので、宿題デス。
# 実際ブートローダからjumpしたら動かなかtt
uImage
u-boot用のHeaderが付いたイメージファイルですね。
bootmコマンド等で起動する際にはこのイメージを使用します。
ARMやPowerPCなどではお世話になる形式ですね。
xipuImage
xipImageのu-bootバージョンです。
これも一緒に試してみなければ・・・。
bootpImage
initrdを含む形のブートイメージファイルのようですね。
kernel2.6からはinitrdからinitramfsになったので、
古いシステムで使用できるように対応してあるの・・・かな?(汗)
正直使ったことないので、今度試すかな。
調べたのは以上!
残りや宿題はまた今度ー。