linux內核相關鏡像zImage、zImage、bzImage、vmlinuz、vmlinux、Image關係分析(摘自《國嵌-嵌入式Linux內核驅動進階班實驗手冊》)

嵌入式系統構建之 2440 開發板內核製作,目地是讓大家學會嵌入式內核的配置與編譯,學習時應注意與前面 X86 平臺內核製作做對比。比如,從生成的鏡像上來看,在 pc 的 x86 平臺下,我們生成的是 bzImage 、這裏我們生成的是 uImage ,它們有什麼聯繫?下面來討論一下這幾種鏡像之間的關係:

  zImage 與 uImage

zImage 是 ARM Linux 常用的一種壓縮映像文件, uImage 是 U-boot 專用的映像文件,它是在 zImage 之前加上一個長度爲 0x40的 “ 頭 ” ,說明這個映像文件的類型、加載位置、生成時間、大小等信息。換句話說,如果直接從 uImage 的 0x40 位置開始執行,zImage和 uImage 沒有任何區別。

  zImage 與 bzImage

bzImage 是壓縮的內核映像,需要注意, bzImage 不是用 bzip2 壓縮的, bzImage 中的 bz 容易引起 誤解, bz 表示 “big zImage” 。 bzImage 中的 b 是 “big” 意思。 zImage(vmlinuz) 和 bzImage(vmlinuz) 都是用 gzip 壓縮的。它們不僅是一個壓縮文件,而且在這兩個文件的開頭部分內嵌有 gzip 解壓縮代碼。所以你不能用 gunzip 或 gzip –dc 解包 vmlinuz 。

  vmlinuz 與 vmlinux

vmlinuz 是可引導的、壓縮的內核。 “vm” 代表 “Virtual Memory” 。 Linux 支持虛擬內存,不像老的操作系統比如 DOS 有 640KB內存的限制。 Linux 能夠使用硬盤空間作爲虛擬內存,因此得名 “vm” 。 zImage 和 bzImage 是 vmlinuz 的存在形式,在 x86 系統中,我們是直接通過將 bzImage 拷貝爲 /boot/vmlinuz 獲得 vmlinuz 的。

vmlinux 是 ELF 文件,即編譯出的最原始的文件,或者稱之爲基本內核。 vmlinuz ( zImage 或 bzImage )是由 ELF 文件 vmlinux經過 objcopy 後得到 binary 文件 Image ,再經過壓縮後的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章