通过 qemu 在 Debian armel 上运行 Debian i386 二进制文件

mun*_*lli 11 embedded arm debian qemu

我正在尝试按照本指南在运行 Debian armel 的 SheevaPlug 上设置 Ventrilo 服务器。这个页面指出我可以使用 QEMU 在我的 arm 系统上运行为 i386 制作的二进制文件。

qemu 的设置说我需要安装 qemu、qemu-user 和 qemu-libc-i386。我在apt-get 中找到了前两个,但qemu-libc-i386不是一个包。所以我尝试运行 qemu 来运行 ventrilo 服务器,如下所示:

# qemu-i386 ./ventrilo_srv
/lib/ld-linux.so.2: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这似乎ld-linux.so.2是我在 armel as 中所拥有的 i386 版本ld-linux.so.3

所以我知道操作方法适用于不同的 Linux 发行版,但如果他们可以在他们疯狂的发行版中运行,我似乎应该能够在 Debian 中运行它。是否有我可以获得的软件包可以安装libc-i386以便我可以运行它(类似于x64 系统的ia32-libs?)我还尝试so.2从另一个 i386 系统复制它,但没有得到我任何地方。

Gil*_*il' 5

是的,您可以使用在 ARM 处理器上运行的 QEmu 在 QEmu 中运行 x86 二进制文件。它会很慢,因为 QEmu 对 x86 处理器进行软件仿真,您可能会发现自己的 RAM 不足,但它可以工作。

qemu-user软件包包含虚拟机本身,即 x86 处理器和一些硬件设备的模拟器以及在该硬件上运行的 Linux 内核。(该qemu-system软件包仅包含一个硬件模拟器,您可以在其上安装您选择的操作系统。)您仍然需要使用运行时环境填充虚拟机,包括/lib/ld-linux.so.2(动态加载程序,运行任何动态链接的可执行文件所必需的)和一堆图书馆。这就是qemu-libc-i386Optware 上的软件包所提供的。它有点类似于ia32-libsamd64 系统,但要简单得多,因为 amd64 处理器可以本地执行 i386 二进制文件;在这里,您需要在 x86 VM 中拥有这些库。

您可以尝试qemu-libc-i386从 Optware获取软件包。Optware 软件包格式非常接近 Debian 的格式,因此您可以手动将 ipk 转换为 deb:

mkdir tmp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/qemu-libc-i386_2.3.6-1_arm.ipk
tar xzf qemu-libc-i386_2.3.6-1_arm.ipk
ar rc qemu-libc-i386_2.3.6-1_arm.deb debian-binary control.tar.gz data.tar.gz 
Run Code Online (Sandbox Code Playgroud)

我不保证这会奏效。您可能需要确保 QEmu 的版本匹配。

如果安装修改后的 ipk 不起作用,请尝试在您的系统上复制其内容。在data.tar.gz某处解压缩(或从其他 x86 系统获取相同的文件),查看postinst脚本的control.tar.gz作用,并提供qemu-i386.