Answers:
在gentoo Wiki中有关于此的一些信息:https : //wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging
它建议使用binwalk
它的效果非常好。
我将通过一个示例快速介绍一下:
首先使用binwalk提取bzImage文件:
> binwalk --extract bzImage
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Microsoft executable, portable (PE)
18356 0x47B4 xz compressed data
9772088 0x951C38 xz compressed data
我结束了三个文件:47B4
,47B4.xz
和951C38.xz
> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped
现在让我们再次运行binwalk 47B4
:
> binwalk --extract 47B4
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV)
9818304 0x95D0C0 Linux kernel version "4.4.6-gentoo (root@host) (gcc version 4.9.3 (Gentoo Hardened 4.9.3 p1.5, pie-0.6.4) ) #1 SMP Tue Apr 12 14:55:10 CEST 2016"
9977288 0x983DC8 gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
<snip>
这返回了一长串找到的路径和几个可能有趣的文件。我们来看一下。
> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348: ASCII cpio archive (SVR4 with no CRC)
该文件E9B348
是一个(已经解压缩的)cpio存档,正是我们想要的!答对了!
要在当前目录中解压缩未压缩的cpio归档文件(您的initramfs!),只需运行
> cpio -i < E9B348
那简直太容易了。binwalk
绝对是您要寻找的工具。作为参考,我在这里使用v2.1.1。