Project Icon

box86

高性能Linux x86模拟器支持在ARM等非x86系统运行

Box86是一款开源的Linux x86模拟器,能在ARM等非x86系统上运行x86 Linux程序。它通过使用本地系统库和集成动态重编译器实现高性能,速度提升5-10倍。Box86支持多种游戏和应用,包括Unity3D游戏、Steam平台,以及通过Wine运行Windows程序。该项目为非x86 Linux设备提供了广泛的x86软件兼容性。

官方标志

Linux用户空间x86模拟器,别具特色

查看更新日志 | 中文 | Українська | 报告错误

构建 星标 分支 贡献者 拉取请求 问题


Box86让你能在非x86的Linux系统上运行x86 Linux程序(如游戏),比如ARM系统(主机系统需要是32位小端序)。

需要32位子系统来运行和构建Box86。Box86在纯64位系统上毫无用处。此外,你需要32位工具链来构建Box86。仅支持64位的工具链无法编译Box86,你会遇到错误(通常在aarch64上,会出现"-marm"无法识别的错误,你需要一个多架构或chroot环境)。

由于Box86使用一些"系统"库的本地版本,如libc、libm、SDL和OpenGL,因此它易于集成和使用于大多数应用程序,在许多情况下性能可能出奇地高。看看这些基准分析的例子点击这里。这也意味着你需要在64位操作系统上有32位用户空间,比如在64位aarch64操作系统上有armhf

大多数x86游戏需要OpenGL,所以在ARM平台上可能需要像gl4es这样的解决方案。(一些ARM平台只支持OpenGL ES和/或它们的OpenGL实现不稳定。(参见Android上的OpenGL))

Box86现在为ARM平台集成了DynaRec(动态重编译器),提供了5到10倍于仅使用解释器的速度提升。关于DynaRec如何工作的一些高层次信息可以在这里找到。

许多游戏无需太多调整就能运行,例如:WorldOfGoo、Airline Tycoon Deluxe和FTL。许多GameMaker的Linux游戏也运行良好。(有一个很长的列表,其中包括UNDERTALE、A Risk of Rain和Cook Serve Delicious)。Unity3D游戏也运行良好,但OpenGL要求可能在某些ARM平台上是个问题。

如果你认真开发Box86,你应该安装ccache并用它构建Box86。(例如使用ccmake。) 要启用TRACE(即将所有执行的单个x86指令及寄存器转储输出到stdout),你还需要在系统上安装Zydis库

一些x86内部操作码使用了"实模式X86模拟器库"的部分,版权详情见x86primop.c


编译/安装

编译说明可以在这里找到
为Box86安装Wine的说明可以在这里找到


这里有6个视频,前2个视频是"Airline Tycoon Deluxe"和"Heretic 2"在GigaHertz OpenPandora上运行的视频(第二个使用了动态重编译器),接下来2个视频是"Bit.Trip.Runner"和"Neverwinter Night"在ODroid XU4上运行的视频(没有使用动态重编译器),最后2个视频是在Pi4上运行的:Shovel Knight(视频来自@ITotalJustice)和Freedom Planet(视频来自@djazz),也没有使用动态重编译器。 在YouTube上播放 在YouTube上播放 在YouTube上播放 在YouTube上播放 在YouTube上播放 在YouTube上播放

你可以在MicroLinuxPi LabsThe Byteman的YouTube频道上找到更多Box86视频。

兼容性列表在这里:https://github.com/ptitSeb/box86-compatibility-list/issues

标志和图标由@grayduck制作,谢谢!

请注意,本项目不要与86box混淆,后者是一个专门针对早期(到相当近期)PC硬件的不错的"全系统"模拟器。


使用方法

有几个环境变量可以控制Box86的行为。

查看这里了解所有环境变量及其作用。

注意:Box86的动态重编译使用内存保护和SegFault信号处理程序来处理JIT代码。简单来说,如果你想使用GDB调试使用JIT代码的运行程序(如mono/Unity3D),你仍会遇到许多"正常"的段错误触发。建议在GDB中使用类似handle SIGSEGV nostop的命令来避免在每个段错误处停止,如果你想捕获段错误,也许可以在signals.c中的my_box86signalhandler内设置断点。


版本历史

更新日志可在这里查看。


关于64位平台的说明

由于Box86通过直接将x86函数调用翻译到主机系统,主机系统(运行Box86的系统)需要有32位库。Box86不包含任何32位<->64位转换。因此,要在ARM64平台上运行Box86,你需要为ARM 32位构建Box86,并且需要有一个带32位库的chroot环境。

如果你在寻找64位版本的box86,可以看看Box64:它能在64位平台上运行x86_64二进制文件。但请注意,你仍然需要Box86(和32位chroot)来运行x86二进制文件(就像在实际的x86_64 Linux上需要x86库和多架构二进制文件来运行x86程序一样)。


关于Box86配置的说明

Box86现在有配置文件。它会加载两个文件:/etc/box4.box86rc~/.box86rc。这两个文件具有相同的语法,基本上是ini文件。方括号中的部分定义进程名,其余部分是要设置的环境变量。查看Usage了解可以设置哪些参数。Box86附带了一个默认文件,应该安装它以获得更好的稳定性。该文件位于system/box86.box86rc,应该安装到/etc/box86.box86rc。如果由于某些原因你不想将文件安装在这里,至少将其复制到~/.box86rc,否则某些游戏可能无法正常运行。 注意优先级为:~/.box86rc > /etc/box86.box86rc > 命令行 因此,你在~/.box86rc中的设置可能会覆盖命令行中的设置...


关于Unity游戏模拟的说明

运行Unity游戏现在通常应该可以正常工作,但你还应该注意到许多Unity3D游戏需要OpenGL 3+,这在ARM单板计算机上目前可能比较棘手。 提示:在Pi4上,使用MESA_GL_VERSION_OVERRIDE=3.2,对于Panfrost使用PAN_MESA_DEBUG=gl3来使用更高的配置文件,如果游戏启动后在显示任何内容前就退出的话。


关于Steam的注意事项

Linux版Steam现在可以通过box86运行。但你还需要box64才能完全可用。 建议在小窗口模式下运行Steam,因为它使用的内存较少,但steamwebhelper(一个64位进程)即使不使用也会被加载。 如果系统中没有正确设置box64,登录界面将无法运行,只会显示一个空白窗口。 注意,Steam会使用大量内存,在4GB RAM的系统上勉强能运行。在内存更少的系统上将无法工作(作为变通方法,创建一个交换文件,登录并勾选"记住我",然后使用box64rc禁用steamwebhelper,并在第一次登录后仅在小窗口模式下运行,无需交换)。 最后注意:Steam大屏幕模式可以工作,但也需要steamwebhelper(因此需要box64),以及大量内存。在只有4GB RAM且没有交换分区的系统上无法启动。

  • 如果你在安装Steam时遇到问题,可以在box86仓库的根目录中找到install_steam.sh。这个简单的脚本会在你的主文件夹中下载并安装Steam,然后在/usr/local/bin中创建一个Steam的快捷方式(为此它会请求sudo权限)。安装完成后,只需使用steam命令即可启动。请注意,由于安装在主文件夹中,它只适用于单个用户。如果你需要多用户安装,请不要使用此脚本。
  • 为避免"libc.so.6缺失"的消息,你可以使用STEAMOS=1STEAM_RUNTIME=1作为环境变量(如果你使用了install_steam.sh脚本,它会自动设置)。

如果你在启动Steam时遇到问题,steamwebhelper无法启动,你需要使用-cef-disable-gpu-cef-disable-gpu-compositor参数启动Steam。


关于Wine的注意事项

现在支持Wine。Wine集成的程序都能运行,许多Windows程序和游戏也能正常运行。别忘了大多数Windows游戏使用Direct3D,这可能需要完整的OpenGL驱动程序和尽可能高的配置文件(目前gl4es与ES2后端在Wine中存在问题)。 注意:如果你计划在Raspberry Pi 3或更早型号上使用box86和Wine,这些型号使用的默认操作系统内核采用2/2分割(意味着用户程序有2G空间,内核有2G空间)。这与需要访问>2Gb地址内存的Wine程序不兼容。因此,你需要重新配置内核为3G/1G分割。


关于Vulkan的注意事项

Box86已经包装了Vulkan。如果你的系统有32位Vulkan驱动程序,box86会在需要时使用它。1.0、1.1、1.2和1.3配置文件,以及一些扩展,应该可以正常工作。DXVK(包括2.0版本)也能工作。我知道一些演示在Pi4上可以运行(Sascha Willems为x86构建的演示与直接在armhf上构建的效果相同)。请注意,Pi4的Vulkan驱动目前不支持dxvk(wine的DirectX到Vulkan包装器)。这不是box86的问题,而是缺少扩展(硬件支持)和其他一些使dxvk无法在pi4上工作的因素。在Panfrost方面,PanVK还比较年轻,我还没有用它测试过dxvk。


结语

我要感谢所有为box86开发做出贡献的人。 有很多方式可以贡献:代码、资金、硬件和宣传! 所以,不分先后地,我要感谢:

我还要感谢其他曾经参与过这个项目的人,哪怕只参与过一次。

(如果你在项目中使用Box86,请别忘了提及它!)

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号