Run virtual machines on iOS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
osy b4f60304b6
Merge pull request #6742 from changanmoon/main
8 months ago
.github github: update to Xcode 16 10 months ago
Configuration Merge pull request #6720 from CharlesJS/fix-m68k-scsi 8 months ago
Documentation Merge pull request #6742 from changanmoon/main 8 months ago
Icons Use current Fedora logo 2 years ago
JailbreakInterposer interposer: disable for simulator builds 4 years ago
Platform Merge pull request #6742 from changanmoon/main 8 months ago
QEMUHelper Improve translations for zh-Hans 10 months ago
QEMULauncher Polish localization updates 1 year ago
Remote remote(server): fix crash when invalid port is specified 11 months ago
Renderer project: refactored CocoaSpice into package 4 years ago
Scripting scripting: fix missing retain on scripted object 1 year ago
Services registry: support saving dynamic resolution 8 months ago
UTM.xcodeproj vm(apple): support installing guest tools 8 months ago
patches build: updated SPICE dependencies 9 months ago
scripts build: updated SPICE dependencies 9 months ago
utmctl utmctl: implement USB commands 2 years ago
zh-HK.lproj Import localization for zh-hk 2 years ago
zh-Hans.lproj Add more translations for zh-hans 2 years ago
zh-Hant.lproj l10n: zh-Hant: update translation 4 years ago
.gitignore project: move code signing config to external file 4 years ago
Build.xcconfig project: bumped version 10 months ago
CodeSigning.xcconfig.sample build: make entitlement use configurable 4 years ago
LICENSE UTM: implemented main view and configuration views 6 years ago
README.bn.md Added README.bn.md (#6263) 11 months ago
README.cz.md readme: add README.cz.md (#5017) 2 years ago
README.es.md Minor proposals on README.md 2 years ago
README.fr.md project: update fr translation 3 years ago
README.ja.md Add README.md's Japanese translation. 3 years ago
README.ko.md docs: added README for korean 2 years ago
README.md readme: update license credits 3 years ago
README.pl-PL.md Update some more strings for 4.1 3 years ago
README.ru.md `README` in Russian 2 years ago
README.uk.md Create 2 years ago
README.zh-HK.md Update README.zh-HK.md 1 year ago
README.zh-Hans.md Improve translations for zh-Hans 10 months ago
README.zh-Hant.md Fix/Update zh-Hant localization 2 years ago
screen.png Update screenshot in README.md 3 years ago
screenmac.png Add image of UTM running on macOS 3 years ago

README.md

UTM

Build

It is possible to invent a single machine which can be used to compute any computable sequence.

-- Alan Turing, 1936

UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU. In short, it allows you to run Windows, Linux, and more on your Mac, iPhone, and iPad. More information at https://getutm.app/ and https://mac.getutm.app/

UTM running on an iPhone
UTM running on a MacBook

Features

  • Full system emulation (MMU, devices, etc) using QEMU
  • 30+ processors supported including x86_64, ARM64, and RISC-V
  • VGA graphics mode using SPICE and QXL
  • Text terminal mode
  • USB devices
  • JIT based acceleration using QEMU TCG
  • Frontend designed from scratch for macOS 11 and iOS 11+ using the latest and greatest APIs
  • Create, manage, run VMs directly from your device

Additional macOS Features

  • Hardware accelerated virtualization using Hypervisor.framework and QEMU
  • Boot macOS guests with Virtualization.framework on macOS 12+

UTM SE

UTM/QEMU requires dynamic code generation (JIT) for maximum performance. JIT on iOS devices require either a jailbroken device, or one of the various workarounds found for specific versions of iOS (see "Install" for more details).

UTM SE ("slow edition") uses a threaded interpreter which performs better than a traditional interpreter but still slower than JIT. This technique is similar to what iSH does for dynamic execution. As a result, UTM SE does not require jailbreaking or any JIT workarounds and can be sideloaded as a regular app.

To optimize for size and build times, only the following architectures are included in UTM SE: ARM, PPC, RISC-V, and x86 (all with both 32-bit and 64-bit variants).

Install

UTM (SE) for iOS: https://getutm.app/install/

UTM is also available for macOS: https://mac.getutm.app/

Development

macOS Development

iOS Development

  • iSH: emulates a usermode Linux terminal interface for running x86 Linux applications on iOS
  • a-shell: packages common Unix commands and utilities built natively for iOS and accessible through a terminal interface

License

UTM is distributed under the permissive Apache 2.0 license. However, it uses several (L)GPL components. Most are dynamically linked but the gstreamer plugins are statically linked and parts of the code are taken from qemu. Please be aware of this if you intend on redistributing this application.

Some icons made by Freepik from www.flaticon.com.

Additionally, UTM frontend depends on the following MIT/BSD License components:

Continuous integration hosting is provided by MacStadium

MacStadium logo