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常用的内核镜像格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lk启动流程详细分析
- 下一篇: arm-linux内核编译过程小结