使用 qemu-user 在 Linux 上运行 FreeBSD 二进制文件

使用 qemu-user 在 Linux 上运行 FreeBSD 二进制文件

我想使用 qemu-user(qemu-i386)在 Linux 上运行 FreeBSD 二进制文件。

这是我正在尝试运行的二进制文件:https://tug.org/texlive/xz/xz.i386-freebsd

这是我正在使用的模拟器:https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-i386-static

我已经从以下网址下载了 FreeBSD 的 ld-elf.so 和 libc.so.7http://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/11.0-RELEASE/base.txzhttp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.3-RELEASE/base.txz

但是,我遇到了段错误和奇怪的系统调用strace -f ./qemu-i386-static ./xz.i386-freebsd

就像一个健全性检查一样,运行./qemu-i386-static ./xz.i386-linux是有效的,所以qemu-i386-静态可以运行 Linux i386 二进制文件。

我的用例(在 Linux 上运行 FreeBSD 二进制文件)是否受 qemu-user 支持?如果受支持,那么我该如何让它工作?

请注意,这个问题不是在 Linux 上运行 FreeBSD 二进制文件,因为在这里我尝试使用 qemu-user,而在另一个问题中,他们尝试本地运行二进制文件。

答案1

看起来像 qemu-user (https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-i386-static) 无法在 Linux 上运行 FreeBSD 二进制文件。

它不会报告错误消息,而是尝试像运行 Linux 二进制文件一样运行它们,这会很快导致崩溃,因为 qemu-user 正在模拟 Linux 系统调用 ABI,而二进制文件正尝试使用 FreeBSD 系统调用 ABI 进行系统调用。

如果使用 FreeBSD 二进制文件运行,那么让 qemu-user 在启动时报告错误将是一个简单的改进。

相关内容