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

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

我正在尝试跟随本指南在我的 SheevaPlug 上设置 Ventrilo 服务器,运行 Debian armel。此页面指出我可以使用 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

看来这ld-linux.so.2是我在 armel as 中的 i386 版本ld-linux.so.3

所以我知道如何操作是针对不同的 Linux 发行版的,但似乎我应该能够在 Debian 中运行它,如果他们可以在他们疯狂的发行版中运行的话。我可以获得一个可以安装的软件包libc-i386这样我就可以让它运行(类似于ia32 库对于 x64 系统?)我也尝试so.2从另一个 i386 系统复制,但这并没有让我有任何进展。

答案1

是的,您可以在 QEmu 中运行 x86 二进制文件,并且 QEmu 在 ARM 处理器上运行。它会非常慢,因为 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 

我不保证这会起作用。您可能需要确保 QEmu 的版本匹配。

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

答案2

我通过复制我的 PC i3​​86 解决了 ARM 设备上的问题ld-linux.so.2如下 :

scp /lib/ld-linux.so.2 [email protected]:/lib

然后复制所有需要的共享库。就我而言,在复制它们之前,我已将它们全部组织到设备内的一个新文件夹中:

mkdir /lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libstdc++.so.6 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libgcc_s.so.1 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libc.so.6 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libm.so.6 [device]:/lib/i386-linux-gnu

相关内容