---
title: VZVirtualMachine
framework: virtualization
role: symbol
role_heading: Class
path: virtualization/vzvirtualmachine
---

# VZVirtualMachine

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

## Declaration

```swift
class VZVirtualMachine
```

## Mentioned in

Creating and Running a Linux Virtual Machine Installing macOS on a Virtual Machine

## Overview

Overview A VZVirtualMachine object emulates a complete hardware machine of the same architecture as the underlying Mac computer. Use the VM to execute a guest operating system and any other apps you install. The VM manages the resources that the guest operating system uses, providing access to some hardware resources while emulating others. Create and configure a VZVirtualMachineConfiguration object with details about how you want to configure your VM, and use that object to create the VZVirtualMachine object. After creating the VM, call the start(completionHandler:) method (Swift)  or the start() method (Objective-C) to start the VM and boot the guest operating system. important: The creation of a virtual machine requires your app to have the com.apple.security.virtualization entitlement.

## Topics

### Creating the VM

- [init(configuration:)](virtualization/vzvirtualmachine/init(configuration:).md)
- [init(configuration:queue:)](virtualization/vzvirtualmachine/init(configuration:queue:).md)
- [isSupported](virtualization/vzvirtualmachine/issupported.md)

### Responding to a stopped VM

- [delegate](virtualization/vzvirtualmachine/delegate.md)
- [VZVirtualMachineDelegate](virtualization/vzvirtualmachinedelegate.md)

### Starting and stopping the VM

- [start(completionHandler:)](virtualization/vzvirtualmachine/start(completionhandler:).md)
- [start()](virtualization/vzvirtualmachine/start().md)
- [start(options:completionHandler:)](virtualization/vzvirtualmachine/start(options:completionhandler:).md)
- [stop(completionHandler:)](virtualization/vzvirtualmachine/stop(completionhandler:).md)
- [pause(completionHandler:)](virtualization/vzvirtualmachine/pause(completionhandler:).md)
- [requestStop()](virtualization/vzvirtualmachine/requeststop().md)
- [resume(completionHandler:)](virtualization/vzvirtualmachine/resume(completionhandler:).md)
- [pause()](virtualization/vzvirtualmachine/pause().md)
- [resume()](virtualization/vzvirtualmachine/resume().md)
- [VZVirtualMachineStartOptions](virtualization/vzvirtualmachinestartoptions.md)

### Configuring VM attributes at runtime

- [consoleDevices](virtualization/vzvirtualmachine/consoledevices.md)
- [memoryBalloonDevices](virtualization/vzvirtualmachine/memoryballoondevices.md)
- [networkDevices](virtualization/vzvirtualmachine/networkdevices.md)
- [socketDevices](virtualization/vzvirtualmachine/socketdevices.md)
- [directorySharingDevices](virtualization/vzvirtualmachine/directorysharingdevices.md)
- [usbControllers](virtualization/vzvirtualmachine/usbcontrollers.md)

### Getting the state of the VM

- [state](virtualization/vzvirtualmachine/state-swift.property.md)
- [VZVirtualMachine.State](virtualization/vzvirtualmachine/state-swift.enum.md)
- [graphicsDevices](virtualization/vzvirtualmachine/graphicsdevices.md)
- [canStart](virtualization/vzvirtualmachine/canstart.md)
- [canPause](virtualization/vzvirtualmachine/canpause.md)
- [canResume](virtualization/vzvirtualmachine/canresume.md)
- [canStop](virtualization/vzvirtualmachine/canstop.md)
- [canRequestStop](virtualization/vzvirtualmachine/canrequeststop.md)
- [queue](virtualization/vzvirtualmachine/queue.md)

### Saving and restoring the VM state

- [saveMachineStateTo(url:completionHandler:)](virtualization/vzvirtualmachine/savemachinestateto(url:completionhandler:).md)
- [restoreMachineStateFrom(url:completionHandler:)](virtualization/vzvirtualmachine/restoremachinestatefrom(url:completionhandler:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Runtime

- [VZVirtualMachineView](virtualization/vzvirtualmachineview.md)
- [VZLinuxRosettaDirectoryShare](virtualization/vzlinuxrosettadirectoryshare.md)
