日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux常用的内核镜像格式

發布時間:2025/4/16 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux常用的内核镜像格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux常用的內核鏡像格式

?

Linux內核有多種格式的鏡像,包括vmlinux、Image、zImage等。

?

1.?????Linux內核鏡像格式

1.1 vmlinux

??vmlinuz是可引導的、可壓縮的內核鏡像,vm代表Virtual Memory.Linux支持虛擬內存,因此得名vm.它是由用戶對內核源碼編譯得到,實質是elf格式的文件.也就是說,vmlinux是編譯出來的最原始的內核文件,未壓縮.這種格式的鏡像文件多存放在PC機上.

?

Elf(ELF,Executableand Linkable Format)格式文件,可執行可鏈接格式,是UNIX實驗室作為應用程序二進制接口而發布的,擴展名為elf.可以簡單的認為,在elf格式的文件中,除二進制代 碼外,還包括該可執行文件的某些信息,比如符號表等。

?

Android平臺,生成的vmlinux文件位于:

out \target\product\msm8909\obj\KERNEL_OBJ

?

1.2? Image

??Image是經過objcopy處理的只包含二進制數據的內核代碼,它已經不是elf格式了,但這種格式的內核鏡像還沒有經過壓縮.

?

Objcopy,標文件中,也就是說,可以將一種格式的目標文件轉換成另一種格式的目標文件. 通過使用binary作為輸出目標(-obinary),可產生一個原始的二進制文件,實質上是將所有的符號和重定位信息都將被拋棄,只剩下二進制數據。

?

Android平臺,生成的Image文件位于:

out \target\product\msm8909\obj\KERNEL_OBJ\arch\arm\boot

?

1.3 zImage

??zImage是ARM linux常用的一種壓縮鏡像文件,它是由vmlinux加上解壓代碼經gzip壓縮而成,命令格式是#make zImage.這種格式的Linux鏡像文件多存放在EMMC上.

?

Android平臺,生成的zImage文件位于:

out \target\product\msm8909\obj\KERNEL_OBJ\arch\arm\boot

?

?

2.?????Linux內核鏡像的產生過程

在嵌入式Linux中,內核的啟動過程分為兩個階段.其中,第一階段啟動代碼放在arch/arm/kernel/head.S文件中,該文件與體系相關,與用戶的開發板無關,主要是初始化ARM內核等.第二階段啟動代碼是init目錄下的main.c.現以執行命令#make zImage為例來說明,arm-linux內核鏡像的產生過程.

(1)??當用戶對Linux內核源碼進行編譯時,kernel的第1/2階段代碼會生成可執行文件vmlinux,該文件是未被壓縮的鏡像文件,非常大,不能直接下載到EMMC中,通常放在PC機上,這也是最原始的Linux鏡像文件,我們Android平臺下此文件大小為144MB左右。

?

(2)??鏡像文件vmlinux由于很大,肯定不能直接燒入EMMC中,因此需要進行二進制化,即經過objcopy處理,使之只包含二進制數據的內核代碼,去除不需要的文件信息等,這樣就制作成了image鏡像文件.該鏡像文件也是未壓縮,只是經過了二進制化而變小,我們Android平臺下此文件大小為17MB左右。

?

(3)??一般來說,內存SDRAM中的內核鏡像是經過壓縮的,只是在運行時再將其解壓.所以,編譯時會先使用gzip將鏡像文件image進行壓縮(壓縮比約為 2:1),再將壓縮后的鏡像文件和源碼中的兩個文件arch/arm/boot/compressed/head.S、arch/arm/boot/compressed/misc.c一起鏈接生成壓縮后的鏡像文件compress/vmlinux,我們Android平臺下此文件大小為7M左右,注意,這兩個源碼文件是解壓程序,用于將內存SDRAM中的壓縮鏡像zImage進行解壓。

?

(4)??壓縮后的鏡像文件compress/vmlinux經過二進制化,最終生成鏡像文件zImage,我們Android平臺下此文件大小為7M左右。當然,在內存 SDRAM中運行壓縮鏡像文件zImage時,會首先調用兩個解壓程序arch/arm /boot/compressed/head.S、arch/arm/boot/compressed/misc.c將自身解壓,然后再執行kernel 的第一階段啟動代碼arch/arm/kernel/head.S.簡而言之,在內存中運行內核時,kernel先自身解壓,再執行第一階段啟動代碼。

?

?

?

總結

以上是生活随笔為你收集整理的linux常用的内核镜像格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。