Skip to content

Commit 180c67e

Browse files
committed
config(apple): do not create devices that does not support snapshots for macOS guests
1 parent ccf956b commit 180c67e

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

Configuration/UTMAppleConfiguration.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ extension UTMAppleConfiguration {
250250
func appleVZConfiguration(ignoringDrives: Bool = false) throws -> VZVirtualMachineConfiguration {
251251
let vzconfig = VZVirtualMachineConfiguration()
252252
try system.fillVZConfiguration(vzconfig)
253-
if #available(macOS 12, *) {
253+
if #available(macOS 12, *), !sharedDirectories.isEmpty {
254254
let tag: String
255255
if #available(macOS 13, *), system.boot.operatingSystem == .macOS {
256256
tag = VZVirtioFileSystemDeviceConfiguration.macOSGuestAutomountTag

Configuration/UTMAppleConfigurationVirtualization.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ extension UTMAppleConfigurationVirtualization {
120120
@available(macOS 11, *)
121121
extension UTMAppleConfigurationVirtualization {
122122
func fillVZConfiguration(_ vzconfig: VZVirtualMachineConfiguration, isMacOSGuest: Bool = false) throws {
123-
if hasBalloon {
123+
if hasBalloon && !isMacOSGuest {
124124
vzconfig.memoryBalloonDevices = [VZVirtioTraditionalMemoryBalloonDeviceConfiguration()]
125125
}
126126
if hasEntropy {
@@ -140,6 +140,11 @@ extension UTMAppleConfigurationVirtualization {
140140
}
141141
if hasKeyboard {
142142
vzconfig.keyboards = [VZUSBKeyboardConfiguration()]
143+
#if arch(arm64)
144+
if #available(macOS 14, *), isMacOSGuest {
145+
vzconfig.keyboards = [VZMacKeyboardConfiguration()]
146+
}
147+
#endif
143148
}
144149
if hasPointer {
145150
vzconfig.pointingDevices = [VZUSBScreenCoordinatePointingDeviceConfiguration()]
@@ -168,7 +173,7 @@ extension UTMAppleConfigurationVirtualization {
168173
throw UTMAppleConfigurationError.rosettaNotSupported
169174
}
170175
#endif
171-
if hasClipboardSharing {
176+
if hasClipboardSharing && !isMacOSGuest {
172177
let spiceClipboardAgent = VZSpiceAgentPortAttachment()
173178
spiceClipboardAgent.sharesClipboard = true
174179
let consolePort = VZVirtioConsolePortConfiguration()

Platform/macOS/VMConfigAppleVirtualizationView.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ struct VMConfigAppleVirtualizationView: View {
2222

2323
var body: some View {
2424
Form {
25-
Toggle("Enable Balloon Device", isOn: $config.hasBalloon)
25+
if operatingSystem == .linux {
26+
Toggle("Enable Balloon Device", isOn: $config.hasBalloon)
27+
}
2628
Toggle("Enable Entropy Device", isOn: $config.hasEntropy)
2729
if #available(macOS 12, *) {
2830
Toggle("Enable Sound", isOn: $config.hasAudio)

0 commit comments

Comments
 (0)