Возможно изобрести такую машину, которая справится с любой вычислимой последовательностью.
— Алан Тьюринг, «О вычислимых числах применительно к проблеме разрешения» (On Computable Numbers, with an Application to the Entscheidungsproblem) (1936)
UTM — это полноценный эмулятор системы и хост виртуальных машин для iOS и macOS. В основе UTM лежит QEMU. UTM позволяет запускать Windows, Linux и другие операционные системы на Mac, iPhone и iPad.
Дополнительная информация на getutm.app и mac.getutm.app.
- Полная эмуляция системы (с поддержкой блоков управления памятью, устройств и т.д.) на основе QEMU
- Более 30 архитектур процессора, в том числе x86_64, ARM64 и RISC-V
- VGA-графика на основе SPICE и QXL
- Режим текстового терминала
- Поддержка USB-устройств
- JIT-оптимизация на основе QEMU TCG
- UI, разработанный специально для macOS 11+ и iOS 11+ с помощью нативных API
- Возможность создавать, настраивать и запускать виртуальные машины прямо на устройстве
- Аппаратное ускорение виртуализации с помощью фреймворка Hypervisor и QEMU
- Возможность запускать macOS в виртуальных машинах с помощью фреймворка Virtualization (требуется macOS 12 или новее на хосте)
Для максимальной скорости работы UTM и QEMU используют кодогенерацию just-in-time, которая ограничена на iOS. Чтобы запустить UTM, можно воспользоваться джейлбрейком или — для некоторых версий iOS — одним из обходных путей (см. раздел «Установка»).
UTM SE (“slow edition”) использует поточный интерпретатор, который работает быстрее традиционного, но всё же медленнее JIT. Подобный подход используется в проекте iSH для динамического исполнения. В результате версия UTM SE не требует джейлбрейк или прочие хаки и может быть установлена как любое другое приложение.
Чтобы оптимизировать время сборки и размер приложения, UTM SE поддерживает только x86, ARM, PowerPC и RISC-V (все — в 32- и 64-битном вариантах).
UTM распространяется по лицензии Apache 2.0.
Однако некоторые компоненты проекта используют более строгие лицензии из группы (L)GPL. Большинство таких компонентов использует динамическую связку, но плагины gstreamer
связаны статически, а некоторые части кода взяти из QEMU. Пожалуйста, обращайте внимание на ограничения этих лицензий, если планируете распространять UTM.
Кроме того, UI приложения использует следующие компоненты, распространяемые по лицензиям MIT или BSD:
Некоторые значки взяты с Flaticon и сгенерированы с помощью Freepik.
Хостинг для CI предоставлен MacStadium.