天天看點

uImage和zImage的差別

1、各種檔案的意義

vmlinux  編譯出來的最原始的核心檔案,未壓縮。

zImage   是vmlinux經過gzip壓縮後的檔案。

bzImage bz表示“big zImage”,不是用bzip2壓縮的。兩者的不同之處在于,zImage解壓縮核心到低端記憶體(第一個640K),bzImage解壓縮核心到高端記憶體(1M以上)。如果核心比較小,那麼采用zImage或bzImage都行,如果比較大應該用bzImage。

uImage   U-boot專用的映像檔案,它是在zImage之前加上一個長度為0x40的tag。

vmlinuz  是bzImage/zImage檔案的拷貝或指向bzImage/zImage的連結。

initrd   是“initial ramdisk”的簡寫。一般被用來臨時的引導硬體到實際核心vmlinuz能夠接管并繼續引導的狀态。

2、zImage和uImage的差別

        vmlinux是核心檔案,zImage是一般情況下預設的壓縮核心映像檔案,壓縮vmlinux,加上一段解壓啟動代碼得到。而uImage則是使用工具mkimage對普通的壓縮核心映像檔案(zImage)加工而得。它是uboot專用的映像檔案,它是在zImage之前加上一個長度為64位元組的“頭”,說明這個核心的版本、加載位置、生成時間、大小等資訊;其0x40之後與zImage沒差別。其實就是一個自動跟手動的差別,有了uImage頭部的描述,u-boot就知道對應Image的資訊,如果沒有頭部則需要自己手動去搞那些參數。如何生成uImage檔案?首先在uboot的/tools目錄下尋找mkimage檔案,把其copy到系統/usr/local/bin目錄下,這樣就完成制作工具。然後在核心目錄下運作make uImage,如果成功,便可以在arch/arm/boot/目錄下發現uImage檔案,其大小比 zImage多64個位元組。此外,平時調試用uImage,不用去管調整了哪些東西;zImage則是一切OK後直接燒0X0。開機就運作。

3、uboot啟動zImage(go)和uImage(bootm)分析 

繼續閱讀