web-dev-qa-db-ja.com

qemuを介してDebian armelでDebian i386バイナリを実行する

私はフォローしようとしています このガイド Debian armelを実行しているSheevaPlugにVentriloサーバーをセットアップするこのページでは、QEMUを使用してi386用に作成されたバイナリを私の腕のシステムで実行できると述べています。

qemuのセットアップ は、qemu、qemu-user、およびqemu-libc-i386をインストールする必要があることを示しています。 apt-getで最初の2つを見つけましたが、qemu-libc-i386はパッケージではありません。だから私はこのようにventriloサーバーを実行するためにqemuを実行しようとしました:

# qemu-i386 ./ventrilo_srv
/lib/ld-linux.so.2: No such file or directory

ld-linux.so.2は、私がarmelにld-linux.so.3として持っているもののi386バージョンのようです。

Linuxの別のディストリビューションのハウツーは知っていますが、クレイジーなディストリビューションでできれば、これをDebianで実行できるはずです。 libc-i386をインストールするために取得できるパッケージはありますか?これで実行できます(ia32-libsx64システムの場合)別のi386システムからso.2もコピーしてみましたが、どこにも行きませんでした。

9
muncherelli

はい、ARMプロセッサでQEmuを実行してQEmuでx86バイナリを実行できます。QEmuはx86プロセッサのソフトウェアエミュレーションを行うため、非常に遅くなります、しかしそれは働くことができます。

qemu-userパッケージには、仮想マシン自体、つまりx86プロセッサーのエミュレーターといくつかのハードウェアデバイス、およびそのハードウェア上で実行されるLinuxカーネルが含まれています。 (qemu-systemパッケージには、選択したオペレーティングシステムをインストールできるハードウェアのみのエミュレーターが含まれています。)/lib/ld-linux.so.2(動的ローダー(動的にリンクされた実行可能ファイルを実行するために必要)およびライブラリーの束。これは、Optwareのqemu-libc-i386パッケージが提供するものです。 AMD64システムのia32-libsに似ていますが、AMD64プロセッサはi386バイナリをネイティブに実行できるため、はるかに簡単です。ここでは、x86 VM内にライブラリが必要です。

Optwareから qemu-libc-i386 パッケージを取得してみてください。 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システムから同じファイルを取得)し、control.tar.gzpostinstスクリプトの機能を確認して、qemu-i386への適切なパスを指定します。