Rasbianでx86エミュレート

Rasbianでx86エミュレート

Rasbianを実行しているRaspberry PiでStarboundサーバーを実行したいです。
サーバーはx86アーキテクチャで実行するように構築されているので、私の目標はx86アーキテクチャをエミュレートしてサーバーを実行することです。

編集:box86は64ビットx86バイナリを実行しません。

そのためにボックス86
x86プログラムを実行できます(steamcmdはサーバーをダウンロードできるプログラムです)。ただし、サーバーを実行すると

bash: ./program: cannot execute binary file: Exec format error

box86がx86プログラムに会ったらエミュレートする必要があるため、これは奇妙です。

Qemuを使用してサーバーをシミュレートしようとしています。

sudo apt install qemu-user qemu-system qemu
sudo qemu-x86_64 starbound_server

~につながる

/lib64/ld-linux-x86-64.so.2: No such file or directory

一部の動的ライブラリが欠落しているようです。私はこのライブラリがqemuに付属すると思ったので、パラメータを使用して別のldファイルを指定してみ
ました。-Lところで、プログラムは/lib64フォルダだけを見ているようです。
私の最後の試みは、x86システムのlibファイルを使ってこのフォルダを作成することでした。ただし、これは次のような結果につながります。

ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.

この問題を解決するために、人々は/etc/ld.so.preloadへの参照を削除するように変更を提案しましたが、libarmmemファイルはRasbianシステムには存在しません。

x86プログラムをエミュレートするより良い方法があるかどうか疑問に思います。
そうでない場合は、/lib64フォルダを埋めるのに適したライブラリをどこで見つけることができますか?

readelfから得られた情報は次のとおりです。

machine: Advanced Micro Devices X86-64
type: EXEC
class: ELF64

共有ライブラリ

[libpthread.so.0]
[libdl.so.2]
librt.so.1]
[libm.so.6]
[libc.so.6]
[ld-linux-x86-64.so.2]

ベストアンサー1

コメントいただいたStephen Kittに感謝します。

使用chrootこのチュートリアル問題を解決しました。

64ビットDebianを使用してディレクトリを作成します。

apt install binutils debootstrap
mkdir my-directory
debootstrap --arch amd64 stretch my-directory http://deb.debian.org/debian

qemu次に環境にインストールします。

chroot my-directory
apt install qemu qemu-system

その後、いつでもプログラムを実行します。

chroot my-directory
qemu-x86_64 my_x86_programm

おすすめ記事