本文主要介绍如何使用 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
- 首先更新操作系统。
sudo apt update
sudo apt full-upgrade
- 安装编译 box86 所需的所有软件包。
sudo apt install git build-essential cmake
build-essential软件包包含编译器,以及我们在Raspberry Pi 上编译 box86 所需要的其它模块
cmake用于生成构建文件
- 下载代码
git clone --branch "v0.2.2" https://github.com/ptitSeb/box86
Code language: PHP (php)
或者,你可以使用以下命令将最新版本的 Box86 源代码克隆到你的 Raspberry Pi。
git clone https://github.com/ptitSeb/box86
Code language: PHP (php)
64 位操作系统的额外步骤
如果你使用 32 位操作系统的话直接跳到下一步
64 位系统需要执行一些额外的操作
- 我们需要添加 32 位 ARM (armhf) 作为 Raspberry Pi 操作系统的潜在架构。
sudo dpkg --add-architecture armhf
sudo apt update
- 安装 Box86 在多架构系统(在我们的例子中是 ARM64)上运行所需的所有包。
sudo apt install gcc-arm-linux-gnueabihf libc6:armhf libncurses5:armhf libstdc++6:armhf
Code 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.bz2
Code 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:18
Code language: CSS (css)
这段文字表示box86现在负责仿真软件。
结论
box86 模拟器是一款功能强大的软件,可以以不错的速度运行大量软件
如果你在 Raspberry Pi 上运行 box86 时遇到问题,请通过下方评论告诉我
《在树莓派上运行 x86(Linux) 软件》有1条评论