カーネルイメージをvmlinuxではなくvmlinuzに圧縮する必要があるのはなぜですか?
vmlinuzは圧縮されたLinuxカーネルであり、起動可能です。起動可能とは、オペレーティングシステムをメモリにロードしてコンピュータを使用可能にし、アプリケーションを実行できることを意味します。
vmlinuzは、圧縮されず起動できない形式のカーネルであるvmlinuxと混同しないでください。 vmlinuxは通常vmlinuzの作成の中間段階です。 「
源泉:http://www.linfo.org/vmlinuz.html
圧縮の利点を理解していますが、圧縮されたイメージは最終的に解凍する必要がありますが(それでも影響はないと思います)、どのように圧縮されていないイメージを実行/ブートできませんか?
答え1
Linuxカーネルには圧縮はまったく必要ありません。
しかし…私たちのほとんどにとって…
次のようにする必要があります。
調べてみようカーネル圧縮モードカーネルmakefileの一部として提供されるサブメニューmake menuconfig
:
( ) Gzip
( ) Bzip2
( ) LZMA
( ) XZ
( ) LZO
(X) LZ4
圧縮アルゴリズムの中から選択するだけです。圧縮を避ける方法はありません。
待つ!それでは、カーネルのヘルプを見てみましょう。
Depends on: HAVE_KERNEL_GZIP [=y] || HAVE_KERNEL_BZIP2 [=y] || HAVE_KERNEL_LZMA [=y] || HAVE_KERNEL_XZ [=y] || HAVE_KERNEL_LZO [=y] || HAVE_KERNEL_LZ4 [=y] || HAVE_KERNEL_UNCOMPRESSED [=n]
まあ、それはすべて圧縮アルゴリズムの可用性とHAVE_KERNEL_UNCOMPRESSED構成オプション。
残念ながら、このオプションはメニュー変更の一部としては使用できません。次の場所にハードコードされていますinit/Kconfig
。
config KERNEL_UNCOMPRESSED
bool "None"
depends on HAVE_KERNEL_UNCOMPRESSED
help
Produce uncompressed kernel image. This option is usually not what
you want. It is useful for debugging the kernel in slow simulation
environments, where decompressing and moving the kernel is awfully
slow. This option allows early boot code to skip the decompressor
and jump right at uncompressed kernel image.
これにより、次の質問に対する答えを得ることができます。いいえ、カーネルイメージは圧縮する必要はなく、カーネル構成はイメージを圧縮しない可能性がある隠された可能性を提供します。ただし、標準ユーザーの場合はカーネルイメージを圧縮する必要があります。なぜなら... なぜなら... 圧縮されていない画像は次のようになります。「通常あなたが望むものではありません」… ;-)
そして:このパッチを使用すると、圧縮されていないイメージを作成できます。(make menuconfigを介して直接提供されるオプション)x86_64アーチにエラーがあります。そのアーチの現在の状態は不明ですが、実際にs390アーチでは作業中です(参照arch/s390/Kconfig
)。