vmlinuzとzImageの違いは何ですか? [コピー]

vmlinuzとzImageの違いは何ですか? [コピー]

私が知っていること(間違って理解した場合は訂正してください):

仮想デバイス: 圧縮され、自己解凍のブータブル 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です(参照例えば)。

おすすめ記事