この種のカーネル圧縮を実際にどのように実証できますか?

この種のカーネル圧縮を実際にどのように実証できますか?

私は調べなければなりません圧縮タイプ私はLinuxカーネルを備えたアーチLinuxシステムを持っていますが、理論よりも多くの方法が見つかりません:今bzip2bz)、以前gzipz)。

マイコンピュータで次のコマンドを実行します。

$ file /boot/vmlinuz-linux
/boot/vmlinuz-linux: Linux kernel x86 boot executable bzImage, version 5.3.11-arch1-1 (linux@archlinux) #1 SMP PREEMPT Tue, 12 Nov 2019 22:19:48 +0000, RO-rootFS, swap_dev 0x5, Normal VGA

bzImage理論的には圧縮する必要があることがわかりますが、gzip (z)証明することはできません。

gzipbzImageは、圧縮のためのより多くのアルゴリズムを導入したLinux 2.6.30を使用してきました。このbz接頭辞がbzip2圧縮(bzip2パッケージはしばしば接頭辞付きのツールと一緒に配布されている)を意味することが一般的な誤解ですがbz、これは真ではありません。bzlessbzcat

私のコンピュータでこれを証明する方法はありますか?それとも、この場合、理論自体は「経験的」ですか?

ベストアンサー1

特定のカーネルイメージを実行したり、構成を照会することなく、そのカーネルイメージでどの圧縮が使用されるかを最終的に決定するには、カーネル自体が使用する方法に従うことができます。extract-vmlinuxスクリプト:

  • 画像からコンプレッサーの署名を見つけます。

    • gunzip:\037\213\010
    • xz:\3757zXZ\000
    • bzip2:BZh
    • lzma:\135\0\0\0
    • lzo:\211\114\132
    • lz4:\002!L\030
    • zstd:(\265/\375
  • 見つかった署名のオフセットから始めて、画像からデータを抽出してみてください。

  • 結果(存在する場合)がELFイメージであることを確認してください。

スクリプトを修正しましたこここれにより、圧縮タイプのみが報告されます。 GPL 2でのみライセンスされているため、ここに含めませんでした。

おすすめ記事