歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> vmlinux,vmlinuz,bzimage,zimage,initrd.img的區別與聯系

vmlinux,vmlinuz,bzimage,zimage,initrd.img的區別與聯系

日期:2017/3/3 13:54:04   编辑:Linux技術

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的解剖圖:

Copyright © Linux教程網 All Rights Reserved