編譯kernel:make Image uImage與zImage的區別

make Image uImage與zImage的區別  http://blog.chinaunix.net/uid-25322094-id-3589796.htmlhtml

內核編譯(make)以後會生成兩個文件,一個Image,一個zImage,其中Image爲內核映像文件,而zImage爲內核的一種映像壓縮文件,Image大約爲4M,而zImage不到2M。

    那麼uImage又是什麼的?它是uboot專用的映像文件,它是在zImage以前加上一個長度爲64字節的「頭」,說明這個內核的版本、加載位置、生成時間、大小等信息;其0x40以後與zImage沒區別。

     如 何生成uImage文件?首先在uboot的/tools目錄下尋找mkimage文件,把其copy到系統/usr/local/bin目錄下,這樣就 完成製做工具。而後在內核目錄下運行make uImage,若是成功,即可以在arch/arm/boot/目錄下發現uImage文件,其大小比 zImage多64個字節。 其實就是一個自動跟手動的區別,有了uImage頭部的描述,u-boot就知道對應Image的信息,若是沒有頭部則須要本身手動去搞那些參數。 U-boot的U是「通用」的意思。 zImage 是ARM Linux經常使用的一種壓縮映像文件,uImage是U-boot專用的映像文件,它是在zImage以前加上一個長度爲0x40的「頭」,說明 這個映像文件的類型、加載位置、生成時間、大小等信息。換句話說,若是直接從uImage的0x40位置開始執行,zImage和uImage沒有任何區 別。另外,Linux2.4內核不支持uImage,Linux2.6內核加入了不少對嵌入式系統的支持,可是uImage的生成也須要設置。

 make uImage(uImage生成過程) http://blog.chinaunix.net/uid-20799298-id-99670.htmllinux

======0. 生成頂層下的vmlinux    
            /usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-ld -EL -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o arch/arm/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/arm/kernel/built-in.o arch/arm/mm/built-in.o arch/arm/common/built-in.o arch/arm/mach-s3c2410/built-in.o arch/arm/mach-s3c2400/built-in.o arch/arm/mach-s3c2412/built-in.o arch/arm/mach-s3c2440/built-in.o arch/arm/mach-s3c2442/built-in.o arch/arm/mach-s3c2443/built-in.o arch/arm/plat-s3c24xx/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o --end-group              
======1. 生成Image二進制文件,未壓縮的     
            /usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S  vmlinux arch/arm/boot/Image
======2. arch/arm/boot/compressed/目錄下壓縮../Image獲得piggy.gz
            gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz
======3. arch/arm/boot/compressed目錄下 head.S 編譯生成 head.o
======4. arch/arm/boot/compressed/目錄下 piggy.S生成 piggy.o
======5. arch/arm/boot/compressed/目錄下 misc.c 生成 misc.o
======6. 生成arch/arm/boot/compressed/vmlinux
======7. 生成zImage
======8. 將zImage用mkimage工具製做成uImage工具

相關文章
相關標籤/搜索