Library / SDK
adespoton/utmconfigs avatar
adespoton/utmconfigs

utmconfigs: UTM machine definitions for Mac OS 7 through macOS 12

Config files for booting Mac OS 7-9, OS X and macOS on UTM emulator

721 stars46 forksUnknownUnlicense

At a glance

What is it?
This repository is a set of UTM virtual machine definitions, one archive per operating system version, covering System 7.1 through Mac OS 9.2 and OS X 10 through macOS 12 on x86-64 and PowerPC. The work is in the machine definitions, and the documentation is unusually honest about which versions will not work.
Who is it for?
Adopt these configurations if you want a period-correct Mac OS running in UTM for software you cannot get anywhere else, since the per-version notes tell you which of the archives will actually work on your setup and which will not. Keep away if you need a reproducible, scripted environment, because these are hand-tuned GUI machine definitions and the installation media is not included.
Can I use it commercially?
Yes. Unlicense is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 69 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Forty machine definitions and no installation media

utmconfigs is a collection of configuration files for booting Mac OS on the UTM emulator, for macOS and possibly for iPadOS as well. The primary language of the repository is recorded as unknown, because there is no code, only machine definitions and a README.

The top level of the tree is the catalogue. There is a LICENSE, a README, and then around forty archives with names like System 7.1 (Installer).utm.zip, Mac OS 8.1 (Config Only).utm.zip, OS X 10.6 (config only).utm.zip, OS X Server 10.4 PPC (config only).utm.zip, macOS 11 X86-64 (config only).utm.zip and macOS 12 X86-64 (config only).utm.zip. The naming convention is consistent, and the distinction between an installer archive and a config only archive is meaningful, because the System 7.1 entry is the only one that ships an installer.

What is not in the repository is the operating system itself. The README says you need to provide your own installation media, and that a basic unformatted qcow2 disk image is provided as the install target. So the artefacts here are the machine definitions, the virtual hardware layout, the firmware and the drive, and the media is something you fetch yourself.

The licence is the Unlicense, which is as close to public domain as a licence gets, and the last push was on 2026-08-14 with no GitHub releases. The README notes the configurations have been tested with UTM 2, UTM 3 and UTM 4 on macOS for M-series Macs, with the exception of particular configurations that will not work on older versions, as indicated.

Getting the media and pointing UTM at it

The install sequence in the README is four steps, and the first one is the UTM application itself. You need an installed copy of UTM.app for macOS from the project's site, or from the GitHub releases for unstable builds, and you need to provide your own installation media.

Then you copy the .utm file you want to use into the UTM documents container, at /Users/[youruser]/Library/Containers/com.utmapp.UTM/Data/Documents/, and the README says this can be done by double-clicking the unzipped file.

The media comes next. For macOS 10.13 and up, you can use the fetch-macOS-v2.py script from the OSX-KVM project, run from Terminal.app using python fetch-macOS-v2.py, to download a base install image. Other installer locations are provided inside the config notes, which is the right place for them since they differ per version.

If you use full installers instead of the baseconfig.img files, you can run the createinstalliso project to convert the .app installers to a bootable .iso, and the README notes that these can now all be converted from an M-series Mac. There is also a project that automates building ISO images directly from installers on Apple's servers, which lets you download a pre-built ISO of your choosing for 10.7 and up if one is available, or run the build script to make your own directly from Apple's servers.

Then in the UTM interface you select your virtual machine, use the CD/DVD drop-down, click Browse, and open the image you downloaded. And you start the machine. The README warns that you may need to enter Disk Utility and format the included drive image before running the installation if a drive target is not available in the install window, and Disk Utility is in a menu item in the installer.

The 68k section, and the thing that makes it work

The configurations are grouped by system architecture, and the first group is m68k.

The system is a Macintosh Quadra 800, or q800, and it is only available in UTM 4.6.3 and later. Custom builds of qemu-system-m68k are available from the emaculation forum, and Homebrew QEMU will also work.

Under that, the operating system list runs from System 7.1 to Mac OS 8.1, and the notes on the earliest versions are the interesting part. The first versions do not have audio or networking or VirtIO. They do have included ROMs, writeable PRAM, and 1GB HFS HD images.

The sentence about 68k Mac OSes is the practical trick in the whole document. For those systems you can boot off of any bootable drive, mount the install CD you desire to install, and install from that CD to any formatted partition. So you can boot from System 7.1, mount a 7.6.1 CD that is failing to boot correctly, and install 7.6.1 to a blank HD image.

That is a workaround for the fact that some install CDs will not boot. Since a 68k Mac can boot from anything, you sidestep the broken media by using a known-good system as the starting point.

The list of archives follows, one per version from System 7.1 and 7.1.1 and 7.1.2 and 7.5.3 through Mac OS 7.5.5, 7.6.0, 7.6.1, 8.0 and 8.1, and the note on each says whether it boots and installs to the included pre-formatted 1GB HD image, or whether it is config only.

And there is an honesty note at the end of the group. A/UX 3.x does not work in UTM yet, though it works in QEMU 8.2 or later. A system that does not work in UTM yet is listed anyway, with the status stated.

PowerPC, the certificate problem, and OpenCore

Three notes in the README cover the parts of this that will cost you an afternoon.

The first is the certificate. For installing OS X 10.6.8 and up, the certificate is checked to see if it has expired, and if your system clock is past the expiry date, the installer will say it cannot install on the device. The fix is to open Terminal from the Utilities menu and type date -u 0101010115, where the last two digits are the year, or adjust those digits to the year the installer was released, or any year between that and the year the certificate expired. Then you quit Terminal and continue the install session, and the date resets automatically once the install is complete.

The second is keyboard input on an M1. The author has had issues with keyboard input for all emulated hardware types, and the fix is to add -usbdevice keyboard to the QEMU list for OS X 10.2 and up. UTM already adds a tablet device by default, which is why the fix is additive.

The third is the EFI. The x86 installs depend on OpenCore EFI to boot correctly, and if you want to roll your own with tweaked drivers, the latest version is available from the OpenCorePkg releases. You need to configure the EFI packages similar to how it has been done in the khronokernel project.

The PowerPC section is separate, and it has one important caveat. The system is a Mac99 based Power Mac, currently in UTM via qemu-system-ppc-screamer, and the note says this breaks the pause button, which the documentation calls snapshotting, for PowerPC UTM targets, which is why QEMU does not include screamer audio support in the official build.

So a PowerPC configuration gives you sound and no pause button, and the PowerPC archive names follow the same pattern with the PPC suffix, for OS X 10.4 PPC, 10.5 PPC and the Server 10.4 PPC and 10.5 PPC entries.

Where these configurations are the wrong tool

The first wrong case is a reproducible or scripted environment. A .utm file is a GUI machine definition that you adjust by hand, and the README gives you a file to copy and media to attach. There is no declarative provisioning, no version pinning of the guest system, and the image itself is not in the repository, so a teammate reproducing your setup has to make the same choices you did.

The second is a machine that is not an M-series Mac. The instructions assume macOS on an M-series Mac, they need tweaking for iPadOS and iOS, and the results may also differ on Intel Macs. The keyboard fix and the OpenCore requirement are both tuned for that setup.

The third is anything needing the full range of versions. The README says particular configurations will not work on older UTM versions, the m68k group needs UTM 4.6.3 or later, and the 68k configurations themselves lack audio, networking and VirtIO. So the archive you want may not run on the UTM you have, and the earliest systems are the least capable when they do.

The fourth is a production or shared use. This is a hobby arrangement of copyrighted operating system images running under emulation, hosted on a repository with an Unlicense for the configurations. That is fine for personal study, and it is not the basis for anything you distribute.

The alternative worth weighing is writing the machine definition yourself, or using a prebuilt image from a project that maintains one. A single configuration you control is more work than unzipping a file, and you end up with a machine you can reproduce and adjust, rather than a definition whose quirks you are reading about in a README.

Editorial conclusion

Adopt these configurations if you want a period-correct Mac OS running in UTM for software you cannot get anywhere else, since the per-version notes tell you which of the archives will actually work on your setup and which will not. Keep away if you need a reproducible, scripted environment, because these are hand-tuned GUI machine definitions and the installation media is not included. Before you start, check the UTM version requirement listed for your target system, since some entries need UTM 4.6.3 or later, and note that the x86 builds need an OpenCore EFI configuration you must supply.

Frequently asked questions

What are the UTM configurations in the utmconfigs repository?

They are UTM virtual machine definitions for booting classic Mac operating systems, one archive per version, covering System 7.1 through Mac OS 9.2 and OS X 10 through macOS 12 on x86-64 and PowerPC. The operating system media itself is not included and you provide it, with a basic unformatted qcow2 image as the install target.

How do I install a Mac OS version using these UTM configurations?

Copy the .utm file into the UTM documents container at /Users/[youruser]/Library/Containers/com.utmapp.UTM/Data/Documents/, download installation media with the fetch-macOS-v2.py script for macOS 10.13 and up or convert an installer to an ISO, then in UTM select the machine, browse to the image through the CD/DVD drop-down, start it, and format the included drive in Disk Utility if the installer offers no drive target.

Why does the OS X installer say it cannot install on this device?

For OS X 10.6.8 and up the certificate is checked for expiry, so a system clock past that date stops the install. Open Terminal from the Utilities menu and run date -u 0101010115, adjusting the last two digits to a year at or before the expiry, then quit Terminal and continue. The date resets once the install finishes.

Which UTM versions do the classic Mac configurations need?

The 68k Macintosh Quadra 800 configurations are only available in UTM 4.6.3 and later, and the author has tested the set with UTM 2, 3 and 4 on M-series Macs, with particular configurations flagged as not working on older versions. The x86 installs also need an OpenCore EFI configured, and the PowerPC setup uses qemu-system-ppc-screamer, which disables the pause button.

Official sources

  1. adespoton/utmconfigs on GitHub
  2. Issues
  3. License: Unlicense
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/adespoton-utmconfigs.svg)](https://hysenlabs.com/projects/adespoton-utmconfigs)