ptitSeb/box64
GitHub: ptitSeb/box64
在 ARM64、RISC-V 和龙芯等非 x86_64 架构的 Linux 系统上高效运行 x86_64 应用程序的用户空间模拟器。
Stars: 5367 | Forks: 425

# Box64:独具特色的 Linux 用户空间 x86-64 模拟器
[官网](https://box86.org/) | [更新日志](https://github.com/ptitSeb/box64/blob/main/docs/CHANGELOG.md) | [中文](https://github.com/ptitSeb/box64/blob/main/README_CN.md) | [Українська](https://github.com/ptitSeb/box64/blob/main/README_UK.md) | [报告错误](https://github.com/ptitSeb/box64/issues/new)
     
**请查看我们的游戏兼容性列表:[https://box86.org/app/](https://box86.org/app/),也请帮助我们[完善它](https://github.com/ptitSeb/box86-compatibility-list/issues)!**
Box64 允许在非 x86_64 的 Linux 系统(例如 Arm,需要 64 位小端序主机系统)上运行 x86_64 Linux 程序(包括游戏)。
Box64 利用了原生的系统库(libc、libm、SDL、OpenGL),不仅易于集成,而且在许多应用中表现出令人惊讶的性能。有关性能基准测试,请查看[此分析](https://box86.org/index.php/2021/06/game-performances/)。
借助针对 Arm、RISC-V 和 LoongArch 平台的 DynaRec,Box64 实现了比仅使用解释器快 5 到 10 倍的速度提升。有关 DynaRec 的深入了解,请参阅[内部原理](https://box86.org/2021/07/inner-workings-a-high%e2%80%91level-view-of-box86-and-a-low%e2%80%91level-view-of-the-dynarec/)。
_Logo 和图标由 @grayduck 设计 - 感谢他!_
## 用法
- `$ box64 ./program [args]` 用于运行 Linux x86_64 程序。
- `$ box64 -k` 用于终止所有模拟进程。
- `$ box64-bash` 用于获取 x86_64 的 bash 环境。
- 想使用 Wine?请参阅 [Wine 文档](docs/WINE.md)。
Box64 还提供了环境变量和 rcfile 来控制其行为。有关详细信息,请参阅[使用文档](docs/USAGE.md)。
## 编译与安装
- [编译说明](https://github.com/ptitSeb/box64/blob/main/docs/COMPILE.md)
- [打包 x86 库](https://github.com/ptitSeb/box64/blob/main/docs/BUNDLE-X86-LIBS.md)
- [Box64 的 Wine 安装](https://github.com/ptitSeb/box64/blob/main/docs/WINE.md)
## 版本历史
有关版本更新,请参阅[更新日志](docs/CHANGELOG.md)。
## 平台兼容性说明
Box64 需要主机系统提供 64 位库,因为它会直接翻译 x86_64 函数调用。对于 32 位二进制文件,请使用 Box86 或 Box32。
**注意**
1. Box32 仍处于实验阶段。
2. 某些 shell 脚本(例如 GOG 游戏安装程序)可能依赖于 `uname -m` 来确定当前的系统架构。请使用 `box64 script.sh` 的方式运行它们,以便让 Box64 接管。
## 配置
Box64 的配置文件位于 `/etc/box64.box64rc` 和 `~/.box64rc`,两者均采用 `.ini` 文件格式。如果您不想使用默认的 `/etc/box64.box64rc` 文件,请将其复制到 `~/.box64rc` 以确保兼容性。
设置优先级:`~/.box64rc` > `/etc/box64.box64rc` > 命令行。
有关更多信息,请查看[使用文档](docs/USAGE.md)。
## 其他平台特定说明
### Unity 游戏模拟
- 许多 Unity 游戏需要 OpenGL 3+,这在 ARM/RISC-V SBC 上可能具有挑战性。
- **Pi4 和 Pi5 用户提示**:设置 `MESA_GL_VERSION_OVERRIDE=3.2` 并配合 `BOX64_DYNAREC_STRONGMEM=1` 可以防止卡死并启用强内存模式。
- **使用 Panfrost**:为了在 ARM 上获得更好的兼容性,请启用 `PAN_MESA_DEBUG=gl3` 以强制使用更高的 OpenGL 配置文件。如果游戏启动后在显示任何内容之前意外退出,这会有所帮助。
### Steam
请参阅 [Steam 文档](docs/STEAM.md)。
### Wine
Box64 支持 Wine64 和 Proton。对于 32 位组件,则需要 Box86。同时安装了 Box64 和 Box86 的系统可以运行 32 位和 64 位的 Windows 程序。
**注意**:您可以使用 Wine WOW64 版本在仅安装了 Box64 的环境中运行 x86 Windows 程序,这仍处于实验阶段,但在大多数情况下都能正常工作。
有关更多信息,请查看 [Wine 文档](docs/WINE.md)。
## 结语
我要感谢所有为 Box64 开发做出贡献的人。
做出贡献的方式有很多:代码贡献、资金支持、硬件提供以及宣传推广!
因此,排名不分先后,我要感谢:
* 感谢他们做出的主要代码贡献:rajdakin、mogery、ksco、xctan
* 感谢他们做出的重大资金贡献:[Playtron](https://playtron.one)、tohodakilla、FlyingFathead、stormchaser3000、dennis1248、sll00、[libre-computer-project](https://libre.computer/)、[CubeCoders Limited](http://cubecoders.com/)
* 感谢他们提供硬件以及完成 LoongArch 迁移:[xiaoji](https://www.linuxgame.cn/)、Deepin 北京开发团队
* 感谢他们提供硬件:[ADLINK](https://www.adlinktech.com/Products/Computer_on_Modules/COM-HPC-Server-Carrier-and-Starter-Kit/Ampere_Altra_Developer_Platform?lang=en) 与 [Ampere](https://amperecomputing.com/home/edge)、[SOPHGO](https://www.sophon.ai/)、[Radxa](https://rockpi.org/)、[StarFive](https://rvspace.org/)、[Pine64](https://www.pine64.org/)、[AYN](https://www.ayntec.com/)、[AYANEO](https://ayaneo.com/)、[jiangcuo](https://github.com/jiangcuo)
* 感谢他们持续为 Box64 项目进行宣传:salva ([microLinux](https://www.youtube.com/channel/UCwFQAEj1lp3out4n7BeBatQ))、[PILab](https://www.youtube.com/channel/UCgfQjdc5RceRlTGfuthBs7g)/[TwisterOS](https://twisteros.com/) 团队、[The Byteman](https://www.youtube.com/channel/UCEr8lpIJ3B5Ctc5BvcOHSnA)、[NicoD](https://www.youtube.com/channel/UCpv7NFr0-9AB5xoklh3Snhg)、ekianjo ([Boilingsteam](https://boilingsteam.com/))
同时,我也要感谢许多甚至只参与过一次该项目的其他人。
(如果您在您的项目中使用了 Box64,请不要忘记提及它!)
_Logo 和图标由 @grayduck 设计 - 感谢他!_
## 用法
- `$ box64 ./program [args]` 用于运行 Linux x86_64 程序。
- `$ box64 -k` 用于终止所有模拟进程。
- `$ box64-bash` 用于获取 x86_64 的 bash 环境。
- 想使用 Wine?请参阅 [Wine 文档](docs/WINE.md)。
Box64 还提供了环境变量和 rcfile 来控制其行为。有关详细信息,请参阅[使用文档](docs/USAGE.md)。
## 编译与安装
- [编译说明](https://github.com/ptitSeb/box64/blob/main/docs/COMPILE.md)
- [打包 x86 库](https://github.com/ptitSeb/box64/blob/main/docs/BUNDLE-X86-LIBS.md)
- [Box64 的 Wine 安装](https://github.com/ptitSeb/box64/blob/main/docs/WINE.md)
## 版本历史
有关版本更新,请参阅[更新日志](docs/CHANGELOG.md)。
## 平台兼容性说明
Box64 需要主机系统提供 64 位库,因为它会直接翻译 x86_64 函数调用。对于 32 位二进制文件,请使用 Box86 或 Box32。
**注意**
1. Box32 仍处于实验阶段。
2. 某些 shell 脚本(例如 GOG 游戏安装程序)可能依赖于 `uname -m` 来确定当前的系统架构。请使用 `box64 script.sh` 的方式运行它们,以便让 Box64 接管。
## 配置
Box64 的配置文件位于 `/etc/box64.box64rc` 和 `~/.box64rc`,两者均采用 `.ini` 文件格式。如果您不想使用默认的 `/etc/box64.box64rc` 文件,请将其复制到 `~/.box64rc` 以确保兼容性。
设置优先级:`~/.box64rc` > `/etc/box64.box64rc` > 命令行。
有关更多信息,请查看[使用文档](docs/USAGE.md)。
## 其他平台特定说明
### Unity 游戏模拟
- 许多 Unity 游戏需要 OpenGL 3+,这在 ARM/RISC-V SBC 上可能具有挑战性。
- **Pi4 和 Pi5 用户提示**:设置 `MESA_GL_VERSION_OVERRIDE=3.2` 并配合 `BOX64_DYNAREC_STRONGMEM=1` 可以防止卡死并启用强内存模式。
- **使用 Panfrost**:为了在 ARM 上获得更好的兼容性,请启用 `PAN_MESA_DEBUG=gl3` 以强制使用更高的 OpenGL 配置文件。如果游戏启动后在显示任何内容之前意外退出,这会有所帮助。
### Steam
请参阅 [Steam 文档](docs/STEAM.md)。
### Wine
Box64 支持 Wine64 和 Proton。对于 32 位组件,则需要 Box86。同时安装了 Box64 和 Box86 的系统可以运行 32 位和 64 位的 Windows 程序。
**注意**:您可以使用 Wine WOW64 版本在仅安装了 Box64 的环境中运行 x86 Windows 程序,这仍处于实验阶段,但在大多数情况下都能正常工作。
有关更多信息,请查看 [Wine 文档](docs/WINE.md)。
## 结语
我要感谢所有为 Box64 开发做出贡献的人。
做出贡献的方式有很多:代码贡献、资金支持、硬件提供以及宣传推广!
因此,排名不分先后,我要感谢:
* 感谢他们做出的主要代码贡献:rajdakin、mogery、ksco、xctan
* 感谢他们做出的重大资金贡献:[Playtron](https://playtron.one)、tohodakilla、FlyingFathead、stormchaser3000、dennis1248、sll00、[libre-computer-project](https://libre.computer/)、[CubeCoders Limited](http://cubecoders.com/)
* 感谢他们提供硬件以及完成 LoongArch 迁移:[xiaoji](https://www.linuxgame.cn/)、Deepin 北京开发团队
* 感谢他们提供硬件:[ADLINK](https://www.adlinktech.com/Products/Computer_on_Modules/COM-HPC-Server-Carrier-and-Starter-Kit/Ampere_Altra_Developer_Platform?lang=en) 与 [Ampere](https://amperecomputing.com/home/edge)、[SOPHGO](https://www.sophon.ai/)、[Radxa](https://rockpi.org/)、[StarFive](https://rvspace.org/)、[Pine64](https://www.pine64.org/)、[AYN](https://www.ayntec.com/)、[AYANEO](https://ayaneo.com/)、[jiangcuo](https://github.com/jiangcuo)
* 感谢他们持续为 Box64 项目进行宣传:salva ([microLinux](https://www.youtube.com/channel/UCwFQAEj1lp3out4n7BeBatQ))、[PILab](https://www.youtube.com/channel/UCgfQjdc5RceRlTGfuthBs7g)/[TwisterOS](https://twisteros.com/) 团队、[The Byteman](https://www.youtube.com/channel/UCEr8lpIJ3B5Ctc5BvcOHSnA)、[NicoD](https://www.youtube.com/channel/UCpv7NFr0-9AB5xoklh3Snhg)、ekianjo ([Boilingsteam](https://boilingsteam.com/))
同时,我也要感谢许多甚至只参与过一次该项目的其他人。
(如果您在您的项目中使用了 Box64,请不要忘记提及它!)标签:ARM64, Box64, CPU模拟, DNS解析, DynaRec, LoongArch, OpenGL, RISC-V, SDL, x86_64, 二进制兼容, 仿真器, 动态二进制翻译, 原生库调用, 客户端加密, 开源项目, 性能优化, 指令集转换, 架构适配, 检测绕过, 游戏兼容, 用户态模拟, 系统工具, 自动回退, 虚拟化技术, 跨架构运行