在树莓派上运行 x86(Linux) 软件

本文主要介绍如何使用 box86 软件在 Raspberry Pi 上运行Linux x86 应用程序

box86 是一款用户空间仿真软件,可让你在 ARM 设备(如 Raspberry Pi)上运行 Linux x86 应用程序。

使用这个软件,我们可以在我们的树莓派上运行各种 x86 软件, 比如 Zoom 等应用程序或 World of Goo 等游戏

注意事项

在 Raspberry Pi 上使用box86有一些注意事项:

  • 首先是它只能运行 x86 Linux 32位应用程序。为 64 位编译的软件无法运行
  • 第二是你需要运行 32 位系统。box86 的设计方式是将典型的 x86 调用转换为 32 位 ARM 调用
  • 无法使用 box86 直接运行 Windows 应用程序,可以考虑 Box86 + wine + win app的形式

Box86 的最佳功能之一是它支持动态重新编译(DynaRec)。顾名思义,动态重新编译获取指令并主动将它们重新编译为优化的 ARM 指令。

相比之下,解释器会将 x86 指令映射到 ARM 等效指令,而不考虑结果的优化程度。

在 box86 下,DynaRec 功能模拟器运行软件的速度比其解释器的速度快 5 到 10 倍。

准备工作

在我们将 x86 模拟器编译到我们的 Raspberry Pi 之前,我们需要做一些准备工作。
在 Raspberry Pi 上编译 box86 需要一些当前可能未安装在系统上的软件包。
以下测试基于Raspberry Pi OS

  1. 首先更新操作系统。
sudo apt update
sudo apt full-upgrade
  1. 安装编译 box86 所需的所有软件包。
sudo apt install git build-essential cmake

build-essential软件包包含编译器,以及我们在Raspberry Pi 上编译 box86 所需要的其它模块
cmake用于生成构建文件

  1. 下载代码
git clone --branch "v0.2.2" https://github.com/ptitSeb/box86Code language: PHP (php)

或者,你可以使用以下命令将最新版本的 Box86 源代码克隆到你的 Raspberry Pi。

git clone https://github.com/ptitSeb/box86Code language: PHP (php)

64 位操作系统的额外步骤

如果你使用 32 位操作系统的话直接跳到下一步
64 位系统需要执行一些额外的操作

  1. 我们需要添加 32 位 ARM (armhf) 作为 Raspberry Pi 操作系统的潜在架构。
sudo dpkg --add-architecture armhf
sudo apt update
  1. 安装 Box86 在多架构系统(在我们的例子中是 ARM64)上运行所需的所有包。
sudo apt install gcc-arm-linux-gnueabihf libc6:armhf libncurses5:armhf libstdc++6:armhfCode language: CSS (css)

在树莓派上编译 x86 模拟器

现在可以编译 box86 了

1. 切换到 box86 代码目录

cd ~/box86

2. 创建一个额外的目录,编译器将在其中存储 box86 构建。

mkdir build
cd build

3. 使用cmake 准备编译

注意此命令在 Raspberry Pi 2、3 或 4 编译 x86 模拟器方面略有不同

在 Raspberry Pi 4 上生成 Makefile

如果你在 32 位操作系统上运行它,请使用以下命令。
cmake .. -DRPI4=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
你也可以使用以下命令在 64 位操作系统上编译此软件。
cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

在 Raspberry Pi 3 上使用 CMake 命令

cmake .. -DRPI3=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

树莓派 2 的 CMake 命令

cmake .. -DRPI2=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

虽然 box86 确实支持 Raspberry Pi 1 和 Zero,但由于缺乏对动态重新编译器的支持,因此不建议尝试

4. 生成 makefile

make -j$(nproc)Code language: JavaScript (javascript)

我们使用“ -j”参数告诉编译器使用多个处理器来编译软件。
使用“ $(nproc)”,会自动将处理器拥有的内核数量插入到命令中。

5.编译器完成后安装box86 模拟器

运行以下命令安装Box86

sudo make install

6.重启systemd-binfmt服务

安装 box86 后重新启动服务可以让它知道它现在可以支持的其他二进制格式。

sudo systemctl restart systemd-binfmt

如果运行此命令时遇到错误,请尝试重新启动Raspberry Pi:

sudo reboot

在 Raspberry Pi 上使用 box86 运行应用程序

此处TeamSpeak 服务器测试Box86,因为它仅适用于 x86 版本的 Linux,并且是免费提供的

1.回到主目录后,下载 TeamSpeak并解压缩

cd ~
wget https://files.teamspeak-services.com/releases/server/3.13.3/teamspeak3-server_linux_x86-3.13.3.tar.bz2
tar -xvpf teamspeak3-server_linux_x86-3.13.3.tar.bz2Code language: JavaScript (javascript)

2. 运行TeamSpeak

cd teamspeak3-server_linux_x86
touch .ts3server_license_accepted
./ts3server

Box86 的神奇之处在于,你无需使用任何其他命令即可在 Raspberry Pi 上运行 x86 软件。
box86 配置为自动检测 x86 应用程序运行并从接管,神奇吧?

3. 当你在 Raspberry Pi 的命令行上运行 x86 软件时,你应该会看到出现以下文本。

Box86 with Dynarec v0.2.1 ddd4d37a built on Feb 26 2021 05:11:18Code language: CSS (css)

这段文字表示box86现在负责仿真软件。

结论

box86 模拟器是一款功能强大的软件,可以以不错的速度运行大量软件
如果你在 Raspberry Pi 上运行 box86 时遇到问题,请通过下方评论告诉我

《在树莓派上运行 x86(Linux) 软件》有1条评论

发表评论