box86

box86

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

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

Box86x86模拟器LinuxARM动态重编译Github开源项目

官方标志

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

<img src="https://raw.githubusercontent.com/ptitSeb/box86/master/img/Box86Icon.png" width="96" height="96">

标志和图标由@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,请别忘了提及它!)

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多