如何解压缩内核

3

我有一个供应商未提供源代码的内核。它是压缩过的内核。序列数据部分从哪里开始?我试图找到魔术数字(1f 8b),并将其复制到gzip文件中,但我无法在7zip中解码。

1个回答

5
你有正确的方法来处理gzip压缩的二进制文件。对于Burrows-Wheeler(bzip2)或LZMA,解压缩方式不同。如果使用7zip无法解压缩,请尝试使用类似gzip/zcat的工具。
以Benjamin Coddington的文章如何从vmlinuz中提取vmlinux为基础,下面是一个解压gzip编码内核的示例[存档自原始来源]:
$ mkdir -p /tmp/kernel-uncompressed/; cd /tmp/kernel-uncompressed/
$ f="vmlinuz-`uname -r`"  # e.g. "vmlinuz-2.6.18-128.el5.uvm6PAE"
$ cp /boot/$f .
$ od -t x1 -A d $f | grep "1f 8b 08"
0008320 1b 00 1f 8b 08 00 d5 c2 9a 49 02 03 ec 3b 7d 7c
$ offset=8322 # Where the gzip marker starts, based on the above output.
$ dd bs=1 skip=$offset if=$f | zcat > vmlinux

FYI,我尝试了这个但是出现了错误 gzip: stdin has flags 0x85 -- not supported看起来是因为它不是一个gzip文件file的输出显示为bzImage,所以我猜它使用bzip2。 - wjandrea
经过一些研究,我发现使用scripts/extract-vmlinux比手动操作更好 - wjandrea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接