【Raspberry Pi】x64バイナリをラズパイで動かす。

Linux

ラズパイのCPUはarm

ラズベリーパイに搭載されている、CPUはArm製のものでAArch64というアーキテクチャがつかわれております。そのためx64といったアーキテクチャの異なるバイナリを直接実行することはできません。つまり、使いたいソフトがあってもArm用にビルドしたものでなければ使えないわけです。ですがこの記事では、そういったx64向けにしかビルドされていないソフトでもラズパイで実行できしまう便利なソフトウェアを紹介します。

スポンサーリンク

環境

ラズベリーパイ4の8GBモデルを使って試しました。

Box64

概要

box64は、ユーザー空間で動作するx86_64エミュレータです。OpenGLやSDL、LIBCなどを含めた様々なライブラリをネイティブで使うため、他のエミュレータと比べてパフォーマンスが良いといった特徴があります。

 ちなみに、これをAndroidに移植したBox64Droidというプロジェクトもあります。

GitHub - ptitSeb/box64: Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices
Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices - ptitSeb/box6...

インストール方法

自分でビルドするか、リポジトリを追加することでインストールできます。

apt

sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
wget -qO- https://ryanfortner.github.io/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
sudo apt update && sudo apt install box64-arm64 -y

ビルド

デバイスによってビルドオプションが異なるため、ドキュメントを見てビルドすることをお勧めします。

box64/docs/COMPILE.md at main · ptitSeb/box64
Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices - ptitSeb/box6...

ラズパイ4の例

git clone https://github.com/ptitSeb/box64
cd box64
mkdir build; cd build; cmake .. -D RPI4ARM64=1 -D CMAKE_BUILD_TYPE=RelWithDebInfo
make -j4  
sudo make install

初回インストール時にsystemd-binfmtをリスタートする必要があります。

sudo systemctl restart systemd-binfmt

使い方

インストールが完了すれば、x64バイナリが実行された際に自動的にbox64を介してプログラムが実行されるようになります。

./your-x64-program

先頭にbox64を付けて実行することも可能です

box64 ./your-x64-program

パフォーマンスについて

C++でベンチ用のコードを書いて、それぞれネイティブ(AArch64)とBox64で動かしてみました。

# x64
real    0m15.828s
user    0m15.667s
sys     0m0.169s
# AArch64
real    0m14.946s
user    0m14.944s
sys     0m0.000s

上がx64で、下がAArch64のバイナリを動かした実行結果です。

差は1秒以内で、かなりパフォーマンスが良いといえます。

その他

32ビットバイナリの実行について

box64では対応していませんが、box86という別のプロジェクトで対応しています。

GitHub - ptitSeb/box86: Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices - ptitSeb/box86

Steamについて

box64またはbox86を使用してSteamを起動することもできます。またSteamメモリ消費は多いらしく、4GB Ramでは起動すらしなかったりするそうです、またSteamをSmallモードで実行することが推奨されています。

詳細については、Readmeをご覧ください。

GitHub - ptitSeb/box86: Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices - ptitSeb/box86

Wine等のWindows互換レイヤのサポート

Box64ではWine64Protonもサポートしています。ただ、Wine64のコンポーネントには32ビットのプログラムも含まれており、それを実行するためにBox86が必要です。なので、Wineを完璧に動作させるにはBox64とBox86をインストールするとよいでしょう。

コメント

タイトルとURLをコピーしました