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)分析 

1.bootm加載linux鏡像是加載uIamge,uIamge是由mkimage制作而來,和zIamge的差異是uIamge是zIamge壓縮過的,bootm需要先對uIamge解壓,解壓地址為內核入口地址。當解壓完成時uImage和zImage幾乎是相同的,具體差異可以論述。uboot目前只能支持uImage啟動,不支持zImage啟動 2.bootm解壓過程 
--------------------------------------------------------------------------- 
## Booting image at 08808000 ... 
Image Name:   Linux-2.6.14.7 
Image Type:   ARM Linux Kernel Image (uncompressed) 
Data Size:    989172 Bytes = 966 kB 
Load Address: 08008000 
Entry Point:  08008000 
Verifying Checksum ... OK 
OK                                         uboot bootm命令對uIamge的解壓操作 
--------------------------------------------------------------------------- 
Starting kernel ...    

 


免責聲明!

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



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