用 vmlinuz 得到 vmlinux 逆转化

本文介绍如何从vmlinuz文件中提取并转换为vmlinux文件的过程。通过搜索GZ签名定位压缩内核的起始位置,并利用dd和zcat命令完成内核的解压。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用 vmlinuz 得到 vmlinux 逆转化
分类: linux内核 2012-05-03 16:10 119人阅读 评论(0) 收藏 举报
http://www.linuxquestions.org/questions/programming-9/convert-vmlinuz-to-vmlinux-530085/

The vmlinuz isn't just the compressed kernel, it's complete bootable image including the decompressor. To get just the image search for the GZ signature - 1f 8b 08 00. Now i'm sure there are scripts for it somewhere, but you can do it old-fashioned way - in my case:

> od -A d -t x1 vmlinuz | grep '1f 8b 08 00'
0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45

so the image begins at 24576+8 => 24584 . Then just copy the image from the point and decompress it -

>dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux
1450414+0 records in
1450414+0 records out
1450414 bytes (1.5 MB) copied, 6.78127 s, 214 kB/s
Linux内核在编译过程中会产生多个版本的内核映像文件,其中`vmlinux`和`vmlinuz`是两个关键的组成部分。`vmlinux`是一个静态链接的可执行文件,采用ELF(Executable and Linkable Format)格式[^3]。它是编译过程中的直接产物,包含了完整的符号表和调试信息,主要用于调试目的,并不适合直接用于引导系统。 相比之下,`vmlinuz`是经过压缩处理的可引导内核映像[^3]。其名称中的“vm”代表“virtual memory”,表明它支持虚拟内存技术。`vmlinuz`通常由`vmlinux`通过`objcopy`工具换并使用gzip进行压缩生成。这个压缩过程会在文件头部嵌入解压代码,使得`vmlinuz`能够在启动时自行解压并加载到内存中执行。因此,尽管`vmlinuz`本质上是一个压缩文件,但它不能简单地通过标准的gzip工具解压[^3]。 根据内核大小的不同,`vmlinuz`可以进一步分为两种形式:`zImage`和`bzImage`(big zImage)。`zImage`适用于较小的内核,最大不超过640KB,而`bzImage`则设计用于较大的内核,能够加载到1MB以上的内存地址空间。这两种形式的选择取决于具体的硬件平台和内核配置需求。对于现代系统而言,由于内核体积普遍较大,`bzImage`成为了更常见的选择[^3]。 此外,在Linux源码树中,可能会发现多个名为`vmlinux`的文件。例如,在x86架构下,除了顶层目录下的`vmlinux`外,还可能在`arch/x86/boot/compressed/`子目录中找到另一个同名文件。这两个文件分别代表了未压缩的完整内核映像以及用于构建压缩版内核映像的中间产物。这种结构反映了Linux内核构建流程中对不同阶段输出文件的组织方式[^2]。 综上所述,`vmlinux`与`vmlinuz`之间的关系可以概括如下: - `vmlinux`是最原始的、未经压缩的内核映像文件,适合开发和调试。 - `vmlinuz`是从`vmlinux`派生而来,经过压缩处理后的可引导内核映像。 - `zImage`和`bzImage`是`vmlinuz`的具体实现形式,针对不同规模的内核提供相应的优化和支持[^3]。 ```bash # 查找Linux源码目录中的vmlinux文件示例 find . -name vmlinux ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值