vmlinux

✍ dations ◷ 2025-12-06 12:19:12 #Linux内核

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

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

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

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

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

vmlinuz 是vmlinux 经过 gzip和objcopy 制作出来的压缩文件,当然不再是vmlinux的一个简单的压缩版,这么简单。vmlinuz是一种统称,有两种具体的表现形式zImage 和bzImage。bzimage和zImage的区别在于本身的大小,以及加载到内存时的地址不同,zImage在0~640KB,而bzImage则在1M以上的位置。

随着 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)

相关

  • Centers for Disease Control and Prevention美国疾病控制与预防中心(英语:Centers for Disease Control and Prevention,缩写为CDC)是美国卫生与公众服务部所属的一个机构,总部设在乔治亚州亚特兰大。作为美国联邦政府行政
  • 女儿女儿,是家庭中的成员,由父母所生的子女中的女性孩子,当然女儿也可能是继女,即是配偶与前妻、前夫或其他人所生的女儿。一些父权社会中,女儿(尤其是已婚的)没有继承权,在出嫁后会被视
  • 神迹神迹或者奇迹来自于希腊语dy′na·mis,英语中常翻译为“miracle”,字面意思是“力量”,也有能力、异能的意思,是指无法用人们的常识所解释的而归于神的作为的一些现象,也就是来自
  • 涡虫涡虫类(拉丁语:Turbellaria)属扁形动物门,生活在池塘、溪流的石块下,或者在海水中也有些生活在土中。体表具纤毛,摆动时积水呈涡状。多数为自由生活种类。繁殖方式使用断裂生殖,是
  • 存储器计算机存储器(英语:Computer memory)是一种利用半导体、磁性介质等技术制成的存储数据的电子设备。其电子电路中的数据以二进制方式存储,不同存储器产品中基本单元的名称也不一
  • 月球运动论月球运动论的目的是计算月球的运动。月球有许多不规律(或是摄动)的运动,历史上科学家曾多次尝试去了解并计算它们,经历屡次失败下这一课题曾经是历史上的世纪难题,但月球运动已是
  • 湖泊是内陆洼地中相对静止、有一定面积,不与海洋发生直接联系的水体。全世界共有约1.17亿个湖泊,共覆盖了地球近500万平方公里。从地球历史上来看,湖泊只是暂时性存在的水体,会
  • 苏奈杰夫德特·苏奈(Cevdet Sunay) (土耳其语:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000"
  • 莱昂纳尔·巴里摩尔1954年11月15日(1954-11-15)(76岁)美国加利福尼亚州洛杉矶Van Nuys赖尼尔·巴利摩(英语:Lionel Barrymore,1878年4月28日-1954年11月15日),美国演员,曾获得奥斯卡最佳男主角奖。赖尼尔
  • 199<< 190191192193194195196197198199>> 199是198与200之间的自然数。