vmlinuz是可引導(dǎo)的、壓縮的內(nèi)核。“vm”代表“Virtual Memory”。Linux 支持虛擬內(nèi)存,不像老的操作系統(tǒng)比如DOS有640KB內(nèi)存的限制。Linux能夠使用硬盤空間作為虛擬內(nèi)存,因此得名“vm”。vmlinuz是可執(zhí)行的Linux內(nèi)核,它位于/boot/vmlinuz,它一般是一個軟鏈接。
vmlinuz的建立有兩種方式。一是編譯內(nèi)核時通過“make zImage”創(chuàng)建,然后通過:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz”產(chǎn)生。zImage適用于小內(nèi)核的情況,它的存在是為了向后的兼容性。二是內(nèi)核編譯時通過命令make bzImage創(chuàng)建,然后通過:“cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”產(chǎn)生。bzImage是壓縮的內(nèi)核映像,需要注意,bzImage不是用bzip2壓縮的,bzImage中的bz容易引起誤解,bz表示“big zImage”。 bzImage中的b是“big”意思。
zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip壓縮的。它們不僅是一個壓縮文件,而且在這兩個文件的開頭部分內(nèi)嵌有g(shù)zip解壓縮代碼。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
內(nèi)核文件中包含一個微型的gzip用于解壓縮內(nèi)核并引導(dǎo)它。兩者的不同之處在于,老的zImage解壓縮內(nèi)核到低端內(nèi)存(第一個640K),bzImage解壓縮內(nèi)核到高端內(nèi)存(1M以上)。如果內(nèi)核比較小,那么可以采用zImage 或bzImage之一,兩種方式引導(dǎo)的系統(tǒng)運行時是相同的。大的內(nèi)核采用bzImage,不能采用zImage。
vmlinux是未壓縮的內(nèi)核,vmlinuz是vmlinux的壓縮文件。
vmlinux 是ELF文件,即編譯出來的最原始的文件。
vmlinuz應(yīng)該是由ELF文件vmlinux經(jīng)過OBJCOPY后,并經(jīng)過壓縮后的文件
zImage是vmlinuz經(jīng)過gzip壓縮后的文件,適用于小內(nèi)核
bzImage是vmlinuz經(jīng)過gzip壓縮后的文件,適用于大內(nèi)核
通常情況下是不能用vmlinuz解壓縮得到vmlinux的