如何从 vmlinux.bin 中提取文件系统映像?

Jan*_*sen 4 archive linux-kernel

jor1k 附带一个 vmlinux.bin。我认为里面有一个 initrd,因为我不知道它还会在哪里。我正在尝试提取文件系统映像以便我可以更改它,但我不知道如何进行。

我尝试使用 Linux 源代码发行版中的 extract-vmlinux,但它Cannot find vmlinux.

Sté*_*las 8

您可以查找 cpio newc 标头(以 开头0707010):

$ grep -abo 0707010 vmlinux.bin | head -n1
2531404:0707010
Run Code Online (Sandbox Code Playgroud)

-a(对于aLL文件甚至二进制的), -b(对于bYTE偏移),和-o(对于o唯一一句匹配的部分(和报告字节匹配的部分,而不是包含该匹配的部分)的线的偏移)是非标准的GNU扩展到grep但是可以方便地找出给定字符串在文件中的位置(与许多其他grep实现相反,GNUgrep还支持非文本文件(即,可能包含 0 字节值的文件可能在两个字节之间具有任意长的字节序列) LF 字符,可能不以 LF 字符结尾,或者可能包含在当前语言环境中不构成有效字符的字节或字节序列),这是这方面的要求。

$ tail -c +2531405 vmlinux.bin| cpio -t | head
bin
bin/sleep
bin/kill
bin/watch
bin/deluser
bin/getopt
bin/uname
bin/nice
bin/zcat
bin/cpio
Run Code Online (Sandbox Code Playgroud)

grep -b偏移量从 0 开始,而偏移量从tail -c1 开始)。