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:將一種目標文件的內容拷貝到還有一種目標文件里。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM