GitHub - tylertms/Stela: A general purpose Apple Silicon layer for x86-64 PCs

GitHub

3 min read Original article ↗

A general purpose Apple Silicon layer for x86-64 PCs. It is a UEFI boot program with an arm64-to-x86-64 translator, a Metal driver for NVIDIA GPUs and a model of Apple silicon hardware. Stela presents a Mac mini (M2) and runs macOS 27.

Warning

Stela is still in development. It is slow and still may not boot on supported hardware. Fixes are on the way, please submit a GitHub Issue with your boot logs if you encounter an error!

Translator

An ahead-of-time and just-in-time compiler translates arm64e code to x86-64. It covers more than 3,000 AArch64 instruction encodings, maps guest registers to host registers and caches translated code.

NVIDIA driver

The Metal driver compiles AIR, Metal's shader IR, directly to NIR, Mesa's IR, and supports the Metal3 and Apple7 GPU families.

Hardware requirements

Part Requirement
CPU Intel or AMD x86-64-v2 (Intel Nehalem, AMD Bulldozer or newer). AVX2 and AVX-512 are used when present.
Memory 8 GB or more.
Firmware 64-bit UEFI with Secure Boot off.
GPU NVIDIA GeForce GTX 16 or RTX 20, 30, 40 or 50 series.
Disk NVMe, or SATA in AHCI mode. 60 GB or more for macOS: a GPT partition or a whole disk to erase.
USB stick 8 GB for the Online installer, 32 GB for the Offline installer.
Ethernet Intel I225, I226, I210, I211, I350, 82574L, 82575, 82576, 82579, 82580, I217, I218, I219.
Realtek RTL8111, RTL8168, RTL8169, RTL8411, RTL8125, RTL8126, Killer E2600, E3000.
Broadcom BCM5720, BCM5761, BCM5762.
Aquantia AQC100, AQC107, AQC108, AQC109, AQC111, AQC112, AQC113, AQC114, AQC115C, AQC116C.
Qualcomm Atheros AR8131, AR8132, AR8151, AR8152, AR8161, AR8162, AR8171, AR8172, Killer E2200, E2400, E2500.
USB: Realtek RTL8152, RTL8153, RTL8156, ASIX AX88179, AX88178A, AX88772, CDC ECM and NCM.
Wi-Fi None currently supported.
Bluetooth USB and Intel PCIe controllers.
Audio None currently supported.
USB xHCI (USB 3) and EHCI controllers, hubs, USB disks.
Input USB keyboards and mice. PS/2 keyboards, mice and Synaptics or Elantech touchpads.

Install

  1. Download stela from the releases page.
  2. Run sudo ./stela setup (Linux, macOS) or double-click stela.exe (Windows).
  3. Choose the USB stick, the installer, the macOS version and the Mac model, then confirm. Setup erases the USB stick.
  4. Boot the PC from the USB stick.

Update

Download the new stela, plug the USB stick in and run:

sudo ./stela setup update stela

On Windows, open Terminal with Run as administrator and run:

.\stela.exe setup update stela

Logs

If Stela does not work, plug the USB stick into the computer that made it and save the boot log. Include log.txt in your GitHub Issue.

sudo ./stela setup boot-log --output log.txt

On Windows, open Terminal with Run as administrator and run:

.\stela.exe setup boot-log --output log.txt

Build

You need Rust, git, Python 3.10 or newer, and LLVM 21, 22 or 23 with Clang, LLD and libclang. On macOS, Xcode's Apple clang 21 or newer also works.

git clone https://github.com/tylertms/Stela
cd Stela
cargo xtask dist

This writes target/release/stela. The first build fetches and compiles Linux, Mesa and LLVM sources and takes a long time.

Legal

Stela contains no Apple software. You are responsible for following Apple's software license agreement and terms of use.

Stela's code is GPL-2.0-or-later. See LICENSE and NOTICE.

Community

Discord Server