我已经下载了一些固件,我想在其中运行一些命令。我已经提取了固件,安装了 qemu 并配置了 binfmts。问题是 binfmt 在 chroot 中不起作用。
Mipsel 文件由 qemu-mipsel-static 自动执行:
firmware$ bin/ls
/lib/ld-uClibc.so.0: No such file or directory
命令 qemu-mipsel-static 在 chroot 中可用:
firmware$ sudo chroot . /usr/bin/qemu-mipsel-static /bin/ls
webroot tmp sbin media home dev
当两者结合时,它不再起作用:
firmware$ sudo chroot . /bin/ls
chroot: failed to run command ‘/bin/ls’: No such file or directory
它说“没有这样的文件或目录”。有什么方法可以获取更多相关信息,例如找不到哪个文件?这确实是 binfmt 的问题吗?
我的 binfmt 配置如下所示:
$ cat /proc/sys/fs/binfmt_misc/qemu-mipsel
enabled
interpreter /usr/lib/binfmt-support/run-detectors
flags:
offset 0
magic 7f454c4601010100000000000000000002000800
mask ffffffffffffff00fffffffffffffffffeffffff
chroot 中 /usr/lib/binfmt-support/run- detectors 不可用是一个问题吗?
答案1
chroot 中 /usr/lib/binfmt-support/run- detectors 不可用是一个问题吗?
是的,您需要将解释器(及其所需的一切)放在 chroot 中。在我的系统上,/proc/sys/fs/binfmt_misc/qemu-mipsel
包含
enabled
interpreter /usr/bin/qemu-mipsel-static
flags: OC
offset 0
magic 7f454c4601010100000000000000000002000800
mask ffffffffffffff00fefffffffffffffffeffffff
您应该尝试run-detectors
在 chroot 中添加所需的所有内容,或者重新配置binfmt-misc
以直接使用qemu-mips-static
。