https://github.com/ptitSeb/box64 Skip to content Sign up * Why GitHub? + Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories - * Team * Enterprise * Explore + Explore GitHub - + Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - + Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing + Plans - + Compare plans - + Contact Sales - + Education - [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} ptitSeb / box64 Public * * Notifications * Star 614 * Fork 28 * Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices box86.org MIT License 614 stars 28 forks Star Notifications * Code * Issues 85 * Pull requests 0 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 2 branches 8 tags Code Loading Latest commit @ptitSeb ptitSeb Merge pull request #168 from Jai-JAP/patch-1 ... 1874c57 Nov 20, 2021 Merge pull request #168 from Jai-JAP/patch-1 Fix typo in release.yml [box86 -> box64] 1874c57 Git stats * 1,497 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Fix typo box86 -> box64 Nov 20, 2021 LLVMprivateGenerator Added a useful script Aug 1, 2021 docs Bumped to v0.1.6 Nov 19, 2021 pkgbuilds Added PKGBUILD-x86_64-DEBUG Oct 21, 2021 src Bumped to v0.1.6 Nov 19, 2021 system Update comment for binfmt conf Jul 6, 2021 tests Improved CMPSS/CMPSD opcodes, improved test17 ([DYNAREC] too, and imp... Nov 7, 2021 x64lib Added x86_64 version of libgcc_s and libstdc++ Feb 28, 2021 .gitignore Added a useful script Aug 1, 2021 .travis.yml [TRAVIS] Try to use Graviton2 for Arm64 Oct 14, 2021 CMakeLists.txt Added wrapped libxslt (from box86) (should help #161) Nov 14, 2021 LICENSE Moved LICENSE file back to root (for #93) Aug 21, 2021 cmake_uninstall.cmake.in Added some minimal set of source (now box64 compile and say hello at ... Feb 28, 2021 postinst Refined .deb build script with arch naming and postinst Jul 10, 2021 rebuild_wrappers.py Removed the Mapping import Aug 1, 2021 runTest.cmake Added some minimal set of source (now box64 compile and say hello at ... Feb 28, 2021 View code [ ] box64 Usage Compiling/Installation Version history Notes about 32-bit platforms Notes about Unity game emulation Notes about GTK programs Notes about Steam Notes about Wine Notes about Vulkan Final word README.md box64 Official logo Linux Userspace x86_64 Emulator with a twist --------------------------------------------------------------------- box64 build status Zhong Wen Box64 lets you run x86_64 Linux programs (such as games) on non-x86_64 Linux systems, like ARM (host system needs to be 64bit little-endian). You can find many more Box64 video on Youtube in the MicroLinux, Pi Labs or The Byteman Channels Because Box64 uses the native versions of some "system" libraries, like libc, libm, SDL, and OpenGL, it's easy to integrate and use with most applications, and performance can be surprisingly high in many cases. Take a look at thoses bench analysis for an example here. Box64 integrates a DynaRec (dynamic recompiler) for the ARM64 platform, providing a speed boost between 5 to 10 times faster than only using the interpreter. Some high level information on how the Dynarec work can be found here. Some x64 internal opcodes use parts of "Realmode X86 Emulator Library", see x64primop.c for copyright details [Box64Icon] Logo and Icon made by @grayduck, thanks! --------------------------------------------------------------------- Usage There are a few environment variables to control the behaviour of Box64. See here for all environment variables and what they do. Note: Box64's Dynarec uses a mechanism with Memory Protection and a SegFault signal handler to handle JIT code. In simpler terms, if you want to use GDB to debug a running program that use JIT'd code (like mono/Unity3D), you will still have many "normal" segfaults triggering. It is suggested to use something like handle SIGSEGV nostop in GDB to not stop at each segfault, and maybe put a breakpoint inside my_memprotectionhandler in signals.c if you want to trap SegFaults. --------------------------------------------------------------------- Compiling/Installation Compilation instructions can be found here --------------------------------------------------------------------- Version history The change log is available here --------------------------------------------------------------------- Notes about 32-bit platforms Because Box64 works by directly translating function calls from x86_64 to host system, the host system (the one Box64 is running on) needs to have 64-bits libraries. Box64 doesn't include any 64-bits <-> 32-bits translation. So understand that box64 will only runs 64bits linux binaries. For 32bits binaries, you need box86 (with all the multiarch or proot trickery it imply on 64bits OS). Note that many installer (mojo setup based) will fall back to "x86" when detecting ARM64 OS, and so will try to use box86 for the setup, even if an x86_64 version exist. You can hack your way around with a fake "uname" that return "x86_64" when argument is "-m" --------------------------------------------------------------------- Notes about Unity game emulation Running Unity games is a hit or miss for now. Unity uses Mono (which uses signals that are not always emulated in a 100% accurate way). You should also note that some Unity3D games require OpenGL 3+ which can be tricky to provide on ARM SBC (single-board computers) for now. So, not all Unity games work and can require a high OpenGL profile, but many actualy works now Hint: on Pi4, use MESA_GL_VERSION_OVERRIDE =3.2 and with Panfrost use PAN_MESA_DEBUG=gl3 to use higher profile if the game start then quit before showing anything. --------------------------------------------------------------------- Notes about GTK programs GTK libraries are not wrapped yet on box64 (contrary to box86). Many games use gtk (setup too), like Unity game for the Screen Selection dialog. While Unity game can run without that dialog (using default setup), many just can't. For now, you'll need o put the set of gtk x86_64 libraries in the game folder (or some other folder known by box64) to get gtk support. GTK Wrapping is planned on box64. --------------------------------------------------------------------- Notes about Steam Not that Steam is an hybrid 32bits / 64bits. You NEED box86 to run steam, as the client app is a 32bits binaries. It also use a 64bits local server binaries, but like most stuff using libcef/chromium. it's not working correctly on box64 for now. So: no Steam for now on box64. --------------------------------------------------------------------- Notes about Wine Wine 64bits is supported on box64. Be aware that 64bits wine also include 32bits componant, to be able to run 32bits windws programs. The 32bits will need box86 and will not run without it. On a system where both box64 and box86 are present and working, a wine 64bits setup can run both 32bits and 64bits windows program (just use wine and wine64 respectivelly) --------------------------------------------------------------------- Notes about Vulkan Box64 Does not wrap Vulkan libraries yet. It's planned, but for now, vulkan program will not run on box64. --------------------------------------------------------------------- Final word I want to thank everyone who has contributed to box64 developpement. There are many ways to contribute: code contribution, financial, hardware and advertisement! So, in no particular order, I want to thank: * For their major code contribution: rajdakin, mogery * For their major financial contribution: FlyingFathead, stormchaser3000 * For hardware contribution and LoongArch migration: xiaoji, Deepin Beijing Develop Team * For their hardware contribution: Radxa, Pine64 * For their continous advertisement of box64 project: salva ( microLinux), PILab/TwisterOS team, The Byteman, NicoD, ekianjo ( Boilingsteam) And I also thank the many other people who participated even once in the project. (If you use Box64 in your project, please don't forget to mention it!) About Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices box86.org Topics linux emulator arm64 dynarec box64 Resources Readme License MIT License Releases 8 v0.1.6 Latest Nov 19, 2021 + 7 releases Sponsor this project * * paypal.me/0ptitSeb Learn more about GitHub Sponsors Packages 0 No packages published Contributors 11 * @ptitSeb * @rajdakin * @Jai-JAP * @Heasterian * @bbbruni * @mogery * @shouhuanxiaoji * @krishenriksen * @Azkali * @nniro * @eerykitty Languages * C 97.9% * Python 0.9% * CMake 0.6% * C++ 0.5% * Assembly 0.1% * Makefile 0.0% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.