1. 程式人生 > >Linux核心之vmlinux與vmlinuz

Linux核心之vmlinux與vmlinuz

因為是初次系統的學習Linux核心,過程中遇到了一些常常出現的名詞。似曾相識,但對他們的含義又不是非常清楚。因此,將搜尋到的內容進行一下彙總。

1.vmlinux

  vmlinux是一個包括linux kernel的靜態連結的可執行檔案。檔案型別是linux接受的可執行檔案格式之中的一個(ELF、COFF或a.out)。

  2.vmlinuz   vmlinuz是可引導的,壓縮的linux核心,“vm”代表的“virtual memory”。

vmlinuz是vmlinux經過gzip和objcopy(*)製作出來的壓縮檔案。vmlinuz不僅是一個壓縮檔案,並且在檔案的開頭部分內嵌有gzip解壓縮程式碼。所以你不能用gunzip 或 gzip –dc解包vmlinuz。

vmlinuz是一個統稱。有兩種詳細的表現形式:zImage和bzImage( big zImage)。
 zImage和bzImage的差別在於本身的大小和載入到記憶體的地址不同。zImage是0~640KB,bzImage是1M以上。假設核心比較小。那麼能夠採用zImage 或bzImage之中的一個,兩種方式引導的系統執行時是同樣的。大的核心採用bzImage。不能採用zImage。


3. 綜述 總結起來就是例如以下的幾句話: vmlinux 是ELF檔案。即編譯出來的最原始的檔案。

 
vmlinuz應該是由ELF檔案vmlinux經過OBJCOPY後。並經過壓縮後的檔案 
zImage是vmlinuz經過gzip壓縮後的檔案,適用於小核心
bzImage是vmlinuz經過gzip壓縮後的檔案,適用於大核心


*objcopy:將一種目標檔案的內容拷貝到還有一種目標檔案裡。