vmlinux是什么

vmlinux是什么,第1张

vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动内核。只是启动过程中的中间媒体

vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制

以是我在CSDN中看到的,可以使用反汇编查看这个文件:

arm-eabi-objdump -d kernel/vmlinux >1.S

内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。

几种linux内核文件的区别:

1、vmlinux 编译出来的最原始的内核文件,未压缩。

2、zImage 是vmlinux经过gzip压缩后的文件。

3、bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。

4、uImage U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag(64个字节,说明这个映像文件的类型、加载位置、生成时间、大小等信息)。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。

5、vmlinuz 是bzImage/zImage文件的拷贝或指向bzImage/zImage的链接。

6、initrd 是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态

从 vmlinuz 得到 vmlinux 基本不太可能.

从生成过程来说, vmlinuz 一般就是 bzImage, 它是通过 setup.bin, vmlinux.bin 等文件组装得到的, 具体过程在 x86 平台请参考 arch/x86/boot/tools/build.c 文件, 大体上就是把两个文件拼在一起, 虽然略有修改. vmlinux.bin 则是通过对 vmlinux 进行 objcopy 操作得到的, 这一步是不可逆的.

所以从 vmlinuz 得到 vmlinux.bin 是办得到的, 但是进一步得到 vmlinux 就不太现实了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/2123.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-01-30
下一篇2023-01-30

发表评论

登录后才能评论

评论列表(0条)

    保存