linux执行bz文件,Linux下解压bzImage为vmlinux
一、首先,簡(jiǎn)單介紹 幾種linux內(nèi)核文件的區(qū)別
vmlinux--編譯出來(lái)的最原始的內(nèi)核文件,未壓縮。
zImage--是vmlinux經(jīng)過(guò)gzip壓縮后的文件。
bzImage--bz表示“big zImage”,不是用bzip2壓縮的,而是要偏移到一個(gè)位置,使用gzip壓縮的。兩者的不同之處在于,zImage解壓縮內(nèi)核到低端內(nèi)存(第一個(gè) 640K),bzImage解壓縮內(nèi)核到高端內(nèi) 存(1M以上)。如果內(nèi)核比較小,那么采用zImage或bzImage都行,如果比較大應(yīng)該用bzImage。
uImage--U-boot專用的映像文件,它是在zImage之前加上一個(gè)長(zhǎng)度為0x40的tag。
vmlinuz--是bzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。
initrd --是“initial ramdisk”的簡(jiǎn)寫(xiě)。一般被用來(lái)臨時(shí)的引導(dǎo)硬件到實(shí)際內(nèi)核vmlinuz能夠接管并繼續(xù)引導(dǎo)的狀態(tài)。
注意:zImage 是ARM Linux常用的一種壓縮映像文件,uImage是U-boot專用的映像文件,它是在zImage之前加上一個(gè)長(zhǎng)度為0x40的“頭”,說(shuō)明這個(gè)映像文 件的類型、加載位置、生成時(shí)間、大小等信息。換句話說(shuō),如果直接從uImage的0x40位置開(kāi)始執(zhí)行,zImage和uImage沒(méi)有任何區(qū)別。另 外,Linux2.4內(nèi)核不支持uImage,Linux2.6內(nèi)核加入了很多對(duì)嵌入式系統(tǒng)的支持,但是uImage的生成也需要設(shè)置
二、然后,開(kāi)始切入正題bzImage->vmlinux:
1. 查找bzImage文件中'1f8b08'所在的偏移,剔除之前所有的二進(jìn)制字符,保存為.gz文件。(其中剔除的過(guò)程可以自己實(shí)現(xiàn),windows下有winhex工具可以直接編輯,Linux下可以使用命令腳本完成)。
2. 將此.gz文件放進(jìn)Linux系統(tǒng)內(nèi),使用root帳戶權(quán)限執(zhí)行g(shù)zip -d xxx.gz。執(zhí)行完成后即得到解壓后的二進(jìn)制內(nèi)核文件vmlinux。
轉(zhuǎn)自:http://peipengshuai.blog.163.com/blog/static/19012266201231214035559/
總結(jié)
以上是生活随笔為你收集整理的linux执行bz文件,Linux下解压bzImage为vmlinux的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 魅蓝android底层是什么,集体去Yu
- 下一篇: android联网程序,android