vmlinux,vmlinuz,bzimage,zimage,initrd.img的区别与联系
1.vmlinux
vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动内核。只是启动过程中的中间媒体。vmlinux.bin:The same as vmlinux, but in a binary file format.
2.vmlinuz
vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。但是,它已经丢失了调试信息等,不可用于调试,这就是为什么perf和systemtap等内核级别的调试软件安装的时候,需要重新编译内核的原因。同理,解压缩vmlinuz是不能得到Vmlinux的。相对于vmlinux,它增加了解压缩和boot的部分
3.zimage
zImage是vmlinuz经过gzip压缩后的文件,适用于小内核(512KB以内),加载到内存的开始640KB处。
4.bzimage(not bzizp but big)
bzImage是vmlinuz经过gzip压缩后的文件,适用于大内核。为什么会发明bzimage这种内核镜像呢?随着linux内核的成熟,linux内核大小逐渐增大,超过了一些体系结构的限制,导致存储压缩内核的空间受到限制。bzimage这种格式就是为了克服这种限制,它通过把kernel分解到不相邻的内存区域来达到这一个目的。
bzimage包含以下目标文件 bootsect.o + setup.o + misc.o + piggy.o.
bootsect:这个程序是linuxkernel的第一个程序,包括了linux自己的bootstrap程序,主要进行开机后加载真正内核镜像之前的各种准备工作.注意它是用来load bzimage,不是bzimage的一部分(这句话存在质疑)。
setup:进行实模式设置
misc:
piggy.o 包含被压缩的vmlinux
bzimage的解剖图:
相关文章
- usb3.0 3.1 3.2的区别和联系
- Java日志框架SLF4J和log4j以及logback的联系和区别
- 【VS开发】【C++开发】const在函数前与函数后的区别
- EasyRecovery2022个人版专业版企业版功能区别
- Tomcat部署时war和war exploded区别
- static synchronized方法和synchronized方法的区别和联系-2(class锁和对象锁,不同锁,混合访问时)
- JS中typeof和instanceof的区别
- DFX 安全测试-- 告诉你什么是XSS、sql注入?POST和GET的区别....
- 【经典面试题】js深拷贝浅拷贝区别,怎么实现深拷贝
- 转:myeclipse和eclipse的区别和联系,以及版本间的对应关系
- python 2.x 与3.x的区别
- 每日构建与持续集成联系与区别
- [百度]服务号和订阅号的区别
- 继承、实现、依赖、关联、聚合、组合的联系与区别
- java中实现同步的两种方式:syschronized和lock的区别和联系
- linux命令中which、whereis、locate有什么区别?
- flask_sqlalchemy filter 和filter_by的区别
- university, school, college, department, institute的区别
- TCP,IP,HTTP,SOCKET区别和联系
- 问题:PyCharm调试方法Force run to cursor与run to cursor的区别
- Python中repr(变量)和str(变量)的返回值有什么区别和联系
- 手柄和指针的区别与联系
- Git fetch和git pull的区别
- Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系解析
- jquery的$().each,$.each的区别
- js——localStorage和sessionStorage生命周期的区别
- 【jvm我能讲两小时013】jvm加载数组和加载类有什么区别和联系?
- 【JAVA基础】:JDK JRE JVE 之间的联系和区别