make Image uImage與zImage的區別

來源:互聯網
上載者:User

make Image uImage與zImage的區別
核心編譯(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的產生也需要設定。
轉http://el84.blog.163.com/blog/static/483438052008311861648/

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能夠接管並繼續引導的狀態。

romfs.img是檔案系統,可以和核心編譯到一起,形成一個獨立的完整的img檔案,核心運行後會自動找到img檔案中romfsi.mg的位置。romfs.img也可以和核心分開,這樣在載入核心後,核心會到指定的地址去尋找掛接romfs.img,如果此時沒有找到romfs.img就會報錯,因此必須在運行核心時,先將romfs.img放到指定的地址上。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.