因為是初次系統的學習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:將一種目標文件的內容拷貝到還有一種目標文件里。