国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
解壓vmlinuz和解壓initrd(initramfs)

有時就算只得到一個Linux kernel的rpm包或者直接是編譯后的vmlinuz和initrd的binary文件,也需要了解其中的一些細節(jié),可能需要去查找這些binary有沒有將我想要的patch編譯進去。所以,就有了解壓vmlinuz和initrd的需求,記錄一下其方法吧。

1. 解壓vmlinuz:

vmlinuz是采用 gzip 壓縮的,但它不僅是一個壓縮文件,而且在這兩個文件的開頭部分內(nèi)嵌有 gzip 解壓縮代碼,所以你不能用 gunzip 或 gzip -dc 命令來解壓 vmlinuz??梢杂萌缦碌牟僮鱽斫鈮簐mlinuz:

[root@jay-rhel boot]# file vmlinuz-2.6.32-372.el6_jay.x86_64vmlinuz-2.6.32-372.el6_jay.x86_64: Linux kernel x86 boot executable bzImage, version 2.6.32-372.el6.bz635846_jay.x86, RO-rootFS, root_dev 0x802, swap_dev 0x3, Normal VGA # 查找gzip壓縮內(nèi)容的開始頭部,通過“1f 8b 08”這個簽名來查找[root@jay-rhel boot]# od -t x1 -A d vmlinuz-2.6.32-372.el6_jay.x86_64 | grep "1f 8b 08"0014432 48 8d 83 70 81 3d 00 ff e0 1f 8b 08 00 c4 01 9c# 計算bizip壓縮內(nèi)容開始處的offset,為:14432 + 9 = 14441  (9是從0014431起到"if 8b 08"之間的字節(jié)數(shù))# 解壓出被壓縮的kernel中的內(nèi)容[root@jay-rhel boot]# dd if=vmlinuz-2.6.32-372.el6_jay.x86_64 bs=1 skip=14441 | zcat > vmlinux-jay gzip: stdin: decompression OK, trailing garbage ignored[root@jay-rhel boot]# file vmlinux-jayvmlinux-jay: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped [root@jay-rhel boot]# strings vmlinux-jay | grep 'Linux version'Linux version 2.6.32-372.el6.bz635846_jay.x86_64 (n0ano@sobek.n0ano.com) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP Tue May 21 17:21:56 MDT 2013[root@jay-rhel boot]# strings vmlinux-jay | grep '/sbin/'/sbin/init/sbin/request-key/sbin/poweroff/sbin/modprobe

2. 解壓initrd(initramfs):initrd一般是一個用gzip壓縮的cpio格式的image,所以可以先gunzip解壓,然后用cpio命令提取里面的信息。

[root@jay-linux temp]# cp /boot/initramfs-3.9.0-rc3+.img initramfs-3.9.0-rc3+.img.gz[root@jay-linux temp]# gunzip -d initramfs-3.9.0-rc3+.img.gz[root@jay-linux temp]# lsinitramfs-3.9.0-rc3+.img # 現(xiàn)在較新的initrd一般是cpio文檔格式,而很老的initrd(如Linux 2.4 kernel的年代)則直接就是普通image# #### mount -o loop initrd-kernel-2.4.img /mnt/  ##基本很少見了[root@jay-linux temp]# cpio -idmv < initramfs-3.9.0-rc3+.img.sbinsbin/rmmodsbin/blkidsbin/cryptsetupsbin/insmodpost.sh......mount/99mount-root.shproc49757 blocks[root@jay-linux temp]# lsbin      dracut-004-283.el6  init                initqueue-settled         lib    pre-pivot    proc  sysroot  varcmdline  emergency           initqueue           initqueue-timeout         lib64  pre-trigger  sbin  tmpdev      etc                 initqueue-finished  initramfs-3.9.0-rc3+.img  mount  pre-udev     sys   usr

簡單記錄一下以前寫過的一段筆記(主要來自網(wǎng)上資料,加上了自己一點理解和注釋):

通常在Linux系統(tǒng)的/boot/目錄下有vmlinuz、initrd、System.map等幾個文件,這里對其進行一點簡單的介紹。

vmlinuz 是可引導的、壓縮的內(nèi)核?!皏m”代表“Virtual Memory”。內(nèi)核編譯時通過命令 make bzImage 創(chuàng)建,然后通過如下命令產(chǎn)生。bzImage 是壓縮的內(nèi)核映像,需要注意,bzImage 不是用 bzip2 壓縮的,bzImage 中的 bz 容易引起 誤解,bz 表示“big zImage”。 bzImage 中的 b 是“big”意思。 zImage(vmlinuz) 和 bzImage(vmlinuz) 都是用 gzip 壓縮的。它們不僅是一個壓縮文件,而且在這兩個文件的開頭部分內(nèi)嵌有 gzip 解壓縮代碼。所以你不能用 gunzip 或 gzip -dc 解包 vmlinuz。

老的 zImage 解壓縮內(nèi)核到低端內(nèi)存(第一個640K),bzImage 解壓縮內(nèi)核到高端內(nèi)存(1M以上)。如果內(nèi)核比較小,那么可以采用 zImage 或 bzImage 之一,兩種方式引導的系統(tǒng)運行時是相同的。大的內(nèi)核采用 bzImage,不能采用 zImage。 vmlinux 是未壓縮的內(nèi)核,vmlinuz 是 vmlinux 的壓縮文件。

initrd 是“initial ramdisk”的簡寫。initrd 一般被用來臨時的引導硬件到實際內(nèi)核 vmlinuz 能夠接管并繼續(xù)引導的狀態(tài)。一般 initrd 主要是用于加載 ext3 等文件系統(tǒng)及 SCSI 設(shè)備的驅(qū)動。initrd 映象文件是使用 mkinitrd 創(chuàng)建的。(比較新的initrd的名稱一般為這樣的:initramfs-3.10.0-rc1+.img,較老一點,命名形如:initramfs-2.6.32-358.el6.x86_64.img。)關(guān)于initrd,以前轉(zhuǎn)過一篇文章,“initrd詳解(轉(zhuǎn))”。

System.map 是一個特定內(nèi)核的內(nèi)核符號表。它是你當前運行的內(nèi)核的 System.map 的鏈接。Linux 符號表使用到2個文件: /proc/kallsyms 和 System.map。雖然內(nèi)核本身并不真正使用 System.map,但其它程序比如 klogd,lsofps 等軟件需要一個正確的 System.map。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
幾種linux內(nèi)核文件的區(qū)別
幾個重要的Linux系統(tǒng)內(nèi)核文件介紹
關(guān)于vmlinux,vmlinuz,bzImage,zImage的區(qū)別和聯(lián)系
zImgage,uImage 區(qū)別
initrd映像文檔的作用和制作
linux的幾個內(nèi)核鏡像格式Image 和 u-boot啟動內(nèi)核和文件系統(tǒng)時的一些環(huán)境變量的設(shè)置
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服