关于vmlinux和bzImage

2024-02-18 14:18
文章标签 vmlinux bzimage

本文主要是介绍关于vmlinux和bzImage,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:http://zh.wikipedia.org/wiki/Vmlinux


vmlinux

维基百科,自由的百科全书

在linux系统中,vmlinux(vmlinuz)是一个包含linux kernel的静态连结的可执行文件,文件型态可能是linux接受的可执行文件格式之一(ELF、COFF或a.out),vmlinux若要用于除错时则必须要在开机前增加symbol table。

 

位置

一般来说,核心的位置会在文件系统的 root 目录下,然而当 bootloader 必须使用 BIOS 的硬盘驱动程序,在一些i386的机器上必须要放在前 1024 个磁柱内。

为了克服这个限制,Linux 发行版鼓励用户创建一个扇区用来存放 bootloader 与核心相关的开机文件,例如 GRUB, LILO 与 SYSLINUX ... 。而这个扇区通常会挂载到系统的/boot 上,这是 FHS (Filesystem Hierarchy Standard) 标准内定义的。

压缩

一般来说,当创建一个可启动的核心时,此核心会先经过 zlib 算法压缩,而在核心内会包含一个相当小的解压缩程序 stub,当 stub 解压缩核心程序的时候会对 console 视窗印出"点"来表示解压缩进度。

解压缩所花费的时间在开机时间中所占程度来说其实是相当小的,而在早期的 bzImage 的发展中对于核心的大小会有所限制(特别是 i386 架构),在此情况下压缩则是必须的。

开机镜像文件的名称并不重要,通常习惯上称为 vmlinuz 或 zImage。

bzImage

随着 linux Kernel 的成长,核心的内容日益增加超越了原本的限制大小。bzImage (big zImage) 格式则为了克服此缺点开始发展,利用将核心切割成不连续的存储器区块来克服大小限制。

bzImage 格式仍然是以 zlib 算法来做压缩,虽然有一些广泛的误解就是因为以 bz- 为开头,而让人误以为是使用 bzip2 压缩方式(bzip2 包所带的工具程序通常是以 bz- 为开头的,例如 bzless, bzcat ...)。

bzImage 文件是一个特殊的格式,包含了 bootsect.o + setup.o + misc.o + piggy.o 串接。piggy.o 包含了一个 gzip 格式的 vmlinux 文件(可以参看 arch/i386/boot/下的 compressed/Makefile piggy.o)


这篇关于关于vmlinux和bzImage的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/721424

相关文章

linux 内核映像差异介绍:vmlinux、zImage、zbImage、image、uImage等

一、背景 Linux内核是整个Linux操作系统的核心部分,它是一个负责与硬件直接交互的软件层,并且提供多种服务和接口,让用户程序能够方便地使用硬件资源。 当我们编译自定义内核时,可以将其生成为以下内核映像之一:vmlinux,zimage、bzimage、image和bzImage。 了解其中的差异,可以帮忙我们更好地选择。 二、Linux内核映像 内核映像是包含内核代码和其他组件的二进

linux内核调试技巧四:gdb调试+vmlinux

vmlinux是个elf文件,它的符号表中包含了所有内核符号。 注意linux中很多文件是没有后缀的,比如我见到的这个elf文件的文件名是“vmlinux-3.10.62”,没有后缀。 既然是elf文件那就可以用 点击打开链接 里面的方法直接查看符号表。 要想看得更仔细,可以用gdb调试工具。 (1)进入vmlinux所在目录 (2)执行 arm-wrs-linux-gnu-gdb  v

vmlinux.lds解读

vmlinux.lds.S用于对ld的输出进行组版,这个文件的格式在ld.info手册中有详细的说明。vmlinu x.lds.S的主要目的是对输出文件中段进行排序,并定义相关的符号名,以下是简要注释。 /* ld script to make i386 Linux kernel  * Written by Martin Mares ;  */ OUTPUT_FORMAT("elf3

Linux如何安装kernel-debuginfo包以支持获取未压缩内核映像vmlinux?(yum | wget、rpm -ivh)

基础信息 本文以AnolisOS为例子,Centos和Ubuntu类似,核心都是安装kernel-debuginfo和kernel-debuginfo-common的rpm包 并且需要和内核版本子版本完全一致(本质是使用同一份代码编译的)假设系统安装的是8.6版本:比如https://mirrors.openanolis.cn/anolis/8.6/isos/GA/x86_64/ 下面的Anol

[转载]vmlinux,vmlinuz,uImage,zImage,bzImage之间的异同

http://www.th7.cn/system/lin/201301/36417.shtml vmlinux,vmlinuz,uImage,zImage,bzImage之间的异同 转自:http://www.cnblogs.com/hnrainll/category/283519.html   linux内核镜像格式 一、Linux内核镜像格式      Linux内核有多种格式的镜像,包括

vmlinux,vmlinuz,uImage,zImage,bzImage 之间的异同

vmlinux,vmlinuz,uImage,zImage,bzImage之间的异 同   在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内 核。编译Linux 内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件,进入/b

Linux 内核连接脚本vmlinux.lds.S

源码基于:Linux5.4 0. 前言 现代软件工程中,一个大的工程通常都会有多个源文件组成,其中包括高级计算机语言编写的源文件,以及汇编语言编写的汇编文件。在编译构建过程中会分别对这些源文件进行汇编、编译生成目标文件,这些目标文件包含:代码段、数据段、符号表等内容。链接器主要任务是将符号引用解析到符号定义上,将多个目标文件和库文件合并成为一个可执行文件或者动态链接库,生成符号表,并对程序

vmlinux, zImage, Image的区别 (

下面的内核编译过程,可以看出vmlinux, arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage 之间的区别     LD      vmlinux   SYSMAP  System.map   SYSMAP  .tmp_System.map   OBJCOPY arch/arm