<!--
{
  "availability" : [
    "macOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Virtualization",
  "identifier" : "/documentation/Virtualization",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Virtualization"
    ],
    "preciseIdentifier" : "Virtualization"
  },
  "title" : "Virtualization"
}
-->

# Virtualization

Create virtual machines and run macOS and Linux-based operating systems.

## Overview

The Virtualization framework provides high-level APIs for creating and managing virtual machines (VM) on Apple silicon and Intel-based Mac computers. Use this framework to boot and run macOS or Linux-based operating systems in custom environments that you define. The framework supports the [Virtual I/O Device (VIRTIO)](https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.html) specification, which defines standard interfaces for many device types, including network, socket, serial port, storage, entropy, and memory-balloon devices.

To set up a VM, configure a [`VZVirtualMachineConfiguration`](/documentation/Virtualization/VZVirtualMachineConfiguration). If you’re creating a macOS guest also configure a [`VZMacPlatformConfiguration`](/documentation/Virtualization/VZMacPlatformConfiguration), and then add the devices you want to expose to the guest operating system. Then, create a [`VZVirtualMachineConfiguration`](/documentation/Virtualization/VZVirtualMachineConfiguration) object with your configuration data, and use that VM object to start, pause, and resume the VM environment. To interact with the guest, you create a [`VZVirtualMachineView`](/documentation/Virtualization/VZVirtualMachineView) with the [`VZVirtualMachine`](/documentation/Virtualization/VZVirtualMachine) object to display and interact with the graphical content in a window.

## Topics

### Essentials

[Adding the Virtualization Entitlement to Your Project](/documentation/Virtualization/adding-the-virtualization-entitlement-to-your-project)

Configure your project to use the Virtualization framework.

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.security.virtualization>

[Using iCloud with macOS virtual machines](/documentation/Virtualization/using-icloud-with-macos-virtual-machines)

Access iCloud from macOS guest virtual machines.

### Virtual machine setup

Configure and boot different guest operating systems.

[Running macOS in a virtual machine on Apple silicon](/documentation/Virtualization/running-macos-in-a-virtual-machine-on-apple-silicon)

Install and run macOS in a virtual machine using the Virtualization framework.

[Running Linux in a Virtual Machine](/documentation/Virtualization/running-linux-in-a-virtual-machine)

Run a Linux operating system on your Mac using the Virtualization framework.

[Running GUI Linux in a virtual machine on a Mac](/documentation/Virtualization/running-gui-linux-in-a-virtual-machine-on-a-mac)

Install and run GUI Linux in a virtual machine using the Virtualization framework.

[Installing macOS on a Virtual Machine](/documentation/Virtualization/installing-macos-on-a-virtual-machine)

Download a macOS restore image and install it in a new VM.

[Creating and Running a Linux Virtual Machine](/documentation/Virtualization/creating-and-running-a-linux-virtual-machine)

Design and run custom Linux guests on Apple silicon or Intel-based Mac Computers.

[Virtualize macOS on a Mac](/documentation/Virtualization/virtualize-macos-on-a-mac)

Configure and run macOS guests on Apple silicon.

[Virtualize Linux on a Mac](/documentation/Virtualization/virtualize-linux-on-a-mac)

Configure and run Linux guests on Apple silicon and Intel-based Mac computers.

[Running Intel Binaries in Linux VMs with Rosetta](/documentation/Virtualization/running-intel-binaries-in-linux-vms-with-rosetta)

Run x86_64 Linux binaries under ARM Linux on Apple silicon.

[Accelerating the performance of Rosetta](/documentation/Virtualization/accelerating-the-performance-of-rosetta)

Improve Rosetta performance by adding support for the total store ordering (TSO) memory model to your Linux kernel.

### Runtime

View or control guest operating systems.

[`VZVirtualMachine`](/documentation/Virtualization/VZVirtualMachine)

An object that manages the overall state and configuration of your VM.

[`VZVirtualMachineView`](/documentation/Virtualization/VZVirtualMachineView)

A view that allows user interaction with a VM.

[`VZLinuxRosettaDirectoryShare`](/documentation/Virtualization/VZLinuxRosettaDirectoryShare)

The Linux directory share for Rosetta.

### Devices

Configure and connect devices to guest operating system instances.

[Audio](/documentation/Virtualization/audio)

Configure audio devices that enable the guest operating system to perform audio playback and capture through the host’s audio devices.

[Graphics](/documentation/Virtualization/graphics)

Configure a device for a guest to display its UI.

[Keyboards and pointing devices](/documentation/Virtualization/keyboards-and-pointing-devices)

Configure devices that connect a mouse and keyboard to the guest system.

[Memory](/documentation/Virtualization/memory)

Configure a memory balloon device to change the allocated memory for the guest system.

[Network](/documentation/Virtualization/network)

Configure the devices that connect the guest system to the network.

[Randomization](/documentation/Virtualization/randomization)

Configure a device for the guest system to use to generate random numbers.

[Serial ports](/documentation/Virtualization/serial-ports)

Configure the serial devices that you use to communicate with the guest system.

[Shared directories](/documentation/Virtualization/shared-directories)

Configure devices that share directories from the host into the guest system.

[Sockets](/documentation/Virtualization/sockets)

Configure a device that manages port-based communication with the guest system.

[Storage](/documentation/Virtualization/storage)

Configure the block-storage devices that represent the disks of the guest system.

[Consoles](/documentation/Virtualization/consoles)

Configure a device that manages multiport console communication with the guest system.

[Clipboard sharing](/documentation/Virtualization/clipboard-sharing)

Share the pasteboard between the host and guest system.

[USB Devices](/documentation/Virtualization/usb-devices)

### Enumerations

[Virtualization enumerations](/documentation/Virtualization/virtualization-enumerations)

Control the caching modes, disk synchronization, and macOS auxiliary storage options of VMs.

### Errors

[`VZErrorDomain`](/documentation/Virtualization/VZErrorDomain)

The error domain for the Virtualization framework.

[`VZError`](/documentation/Virtualization/VZError)

Errors that you might encounter when configuring or using a VM.

### Reference

[Virtualization macros](/documentation/Virtualization/virtualization-macros)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
