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