私は調べなければなりません圧縮タイプ私はLinuxカーネルを備えたアーチLinuxシステムを持っていますが、理論よりも多くの方法が見つかりません:今bzip2
(bz
)、以前gzip
(z
)。
マイコンピュータで次のコマンドを実行します。
$ 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)
証明することはできません。
gzip
bzImageは、圧縮のためのより多くのアルゴリズムを導入したLinux 2.6.30を使用してきました。このbz
接頭辞がbzip2圧縮(bzip2パッケージはしばしば接頭辞付きのツールと一緒に配布されている)を意味することが一般的な誤解ですがbz
、これは真ではありません。bzless
bzcat
私のコンピュータでこれを証明する方法はありますか?それとも、この場合、理論自体は「経験的」ですか?
ベストアンサー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でのみライセンスされているため、ここに含めませんでした。