注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎x210bv3s開發板進行移植。
linux核心經過編譯後會生成乙個elf格式的可執行程式,叫vmlinux或vmlinuz,這個就是原始的未經任何處理加工的原版核心elf檔案;嵌入式系統部署時刻錄的一般不是這個vmlinuz/vmlinux,而是要用objcopy工具去製作成燒錄映象格式,經過製作加工成燒錄映象的檔案就叫image(這個製作燒錄映象主要目的就是縮減大小,節省磁碟)。原則上image就可以直接被燒錄到flash上進行啟動執行(類似於u-boot.bin),但是實際上並不是這麼簡單。實際上linux的作者們覺得image還是太大了所以對image進行了壓縮,並且在image壓縮後的檔案的前端附加了一部分解壓縮**,構成了乙個壓縮格式的映象就叫zimage。解壓的時候,通過zimage映象頭部的解壓縮**進行自解壓,然後執行解壓出來的核心映象。具體的實現流程如下:
uboot為了啟動linux核心,還發明了一種核心格式叫uimage。uimage是由zimage加工得到的,uboot中有乙個工具,可以將zimage加工生成uimage。注意:uimage不關linux核心的事,linux核心只管生成zimage即可,然後uboot中的mkimage工具再去由zimage加工生成uimage來給uboot啟動。這個加工過程其實就是在zimage前面加上64位元組的uimage的頭資訊即可。
注:如果直接在kernel底下去make uimage會提示mkimage command not found。解決方案是去uboot/tools目錄下執行cp mkimage /usr/local/bin/,複製mkimage工具到系統目錄下。再去make uimage即可。
原則上uboot啟動時應該給他uimage格式的核心映象,但是實際上uboot中也可以支援zimage,是否支援就看是否定義了linux_zimage_magic這個巨集。所以大家可以看出:有些uboot是支援zimage啟動的,有些則不支援。但是所有的uboot肯定都支援uimage啟動。
uImage和zImage的區別
zimage是arm linux常用的一種壓縮映像檔案,uimage是u boot專用的映像檔案,它是在zimage之前加上乙個長度為0x40的 頭 說明這個映像檔案的型別 載入位置 生成時間 大小等資訊。換句話說,如果直接從uimage的0x40位置開始執行,zimage和uimage沒有任何區別...
zImage和UImage的區別
1 核心編譯 make 之後會生成兩個檔案,乙個image,乙個zimage,其中image為核心映像檔案,而zimage為核心的一種映像壓縮檔案,image大約為4m,而zimage不到2m。那麼uimage又是什麼的?它是uboot專用的映像檔案,它是在zimage之前加上乙個長度為64位元組的...
zImage和uImage的區別
一 vmlinuz vmlinuz是可引導的 壓縮的核心。vm 代表 virtual memory linux 支援虛擬記憶體,不像老的作業系統比如dos有640kb記憶體的限制。linux能夠使用硬碟空間作為虛擬記憶體,因此得名 vm vmlinuz的建立有兩種方式。一是編譯核心時通過 make ...