2023年8月3日发(作者:)
⼏种linux内核⽂件的区别⼏种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。5、vmlinuz 是bzImage/zImage⽂件的拷贝或指向bzImage/zImage的链接。6、initrd 是“initial ramdisk”的简写。⼀般被⽤来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。对于Linux内核,编译可以⽣成不同格式的映像⽂件,例如:# make zImage# make uImage zImage是ARM Linux常⽤的⼀种压缩映像⽂件,uImage是U-boot专⽤的映像⽂件,它是在zImage之前加上⼀个长度为0x40的“头”,说明这个映像⽂件的类型、加载位置、⽣成时间、⼤⼩等信息。换句话说,如果直接从uImage的0x40位置开始执⾏,zImage和uImage没有任何区别。另外,Linux2.4内核不⽀持uImage,Linux2.6内核加⼊了很多对嵌⼊式系统的⽀持,但是uImage的⽣成也需要设置。
⼀、vmlinuzvmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux ⽀持虚拟内存,不像⽼的操作系统⽐如DOS有640KB内存的限制。Linux能够使⽤硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz 的建⽴有两种⽅式。⼀是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”产⽣。zImage适⽤于⼩内核的情况,它的存在是为了向后的兼容性。⼆是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage/boot/vmlinuz”产⽣。bzImage是压缩的内核映像,需要注意,bzImage不是⽤bzip2压缩的,bzImage中的bz容易引起误解,bz表⽰“big zImage”。 bzImage中的b是“big”意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是⽤gzip压缩的。它们不仅是⼀个压缩⽂件,⽽且在这两个⽂件的开头部分内嵌有 gzip解压缩代码。所以你不能⽤gunzip 或 gzip –dc解包vmlinuz。⼆、trd是“initial ramdisk”的简写。initrd⼀般被⽤来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。initrd 映象⽂件是使⽤mkinitrd创建的。mkinitrd实⽤程序能够创建initrd映象⽂件。这个命令是RedHat专有的。其它Linux发⾏版或许有相应的命令。这是个很⽅便的实⽤程序。具体情况请看帮助:man mkinitrd下⾯的命令创建initrd映象⽂件。
最后⽣成的内核镜象有两种 zImage 以及 uImage 。其中 zImage 下载到⽬标板中后,可以直接⽤ uboot 的命令 go 来进⾏直接跳转。这时候内核直接解压启动。但是⽆法挂载⽂件系统,因为 go 命令没有将内核需要的相关的启动参数传递给内核。传递启动参数我们必须使⽤命令 bootm 来进⾏跳转。 Bootm 命令跳转只处理 uImage 的镜象。uboot 源代码的 tools/ ⽬录下有 mkimage ⼯具,这个⼯具可以⽤来制作不压缩或者压缩的多种可启动映象⽂件。mkimage 在制作映象⽂件的时候,是在原来的可执⾏映象⽂件的前⾯加上⼀个 0x40 字节的头,记录参数所指定的信息,这样 uboot 才能识别这个映象是针对哪个 CPU 体系结构的,哪个 OS 的,哪种类型,加载内存中的哪个位置, ⼊⼝点在内存的那个位置以及映象名是什么⽤法如下:./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:] image-A ==> set architecture to 'arch'-O ==> set operating system to 'os'-T ==> set image type to 'type'-C ==> set compression type 'comp'-a ==> set load address to 'addr' (hex)-e ==> set entry point to 'ep' (hex)-n ==> set image name to 'name'-d ==> use image data from 'datafile'-x ==> set XIP (execute in place)参数说明:
-A 指定 CPU 的体系结构:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1691039473a492792.html
评论列表(0条)