![vmlinuzとzImageの違いは何ですか? [コピー]](https://linux33.com/image/6165/vmlinuz%E3%81%A8zImage%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私が知っていること(間違って理解した場合は訂正してください):
仮想デバイス: 圧縮され、自己解凍のブータブル Linux イメージです。常にELF?どのように生成されますか?
zImage(または bzImage): 圧縮され、自己解凍のブータブル Linux イメージです。常にバイナリです。 「make zImage」によって生成されます。
一部のソースでは、これは実際には同じイメージであると言います。たとえば、次のようになります。ここそしてここ。
しかし、そうではないようです。組み込みOpenwrtプロジェクトを構築し、「ファイルvmlinuz」を実行すると、次のような結果が表示されます。
vmlinuz: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, stripped
ご覧のとおり、zImageなどのバイナリファイルではなく、ELF形式です。
さらに混乱しているのは、ubuntu vmlinuzでreadelfを実行してもELFファイルではないということです。
答え1
vmlinuzも同様です。
を実行するとこれがわかりますmake install
。 zImageまたはbzImageはにインストールされます/boot/vmlinuz-$VERSION
。
一部のアーキテクチャでは、これをELFにパックするようです(一部はそうではありません)。 x86ベースのLinuxは、LILO、syslinuxなどのブートローダとの互換性のため、ELFがないと停止することがあります。たぶん彼らはGRUBがELFファイルをロードする方法が好きではないかもしれません。他のアーキテクチャでは、同じ理由でELFにかかる可能性があります。解凍された画像は常にELFです(参照例えば)。