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

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

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

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

答案1

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

$ grep -abo 0707010 vmlinux.bin | head -n1
2531404:0707010

-a(对于all 文件,甚至二进制文件)、(-b对于byte 偏移量) 和-o(对于only 匹配部分(并报告匹配部分的字节偏移量,而不是包含匹配部分的行))是非标准 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

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

答案2

第一步是file vmlinux.bin

抱歉,“vmlinux.bin: data”通常对此意味着很多。如果file无法识别文件,那么标准实用程序将无法帮助您。

但从下载页面来看,这似乎是 Linux 内核的 OpenRISC 1000 版本。因此,file不承认它是完全有道理的。

我不了解 OpenRISC 1000,但我想在这种特殊情况下不需要 initrd。

相关内容