Explorar el Código

config(apple): do not create devices that does not support snapshots for macOS guests

osy hace 2 años
padre
commit
180c67e585

+ 1 - 1
Configuration/UTMAppleConfiguration.swift

@@ -250,7 +250,7 @@ extension UTMAppleConfiguration {
     func appleVZConfiguration(ignoringDrives: Bool = false) throws -> VZVirtualMachineConfiguration {
         let vzconfig = VZVirtualMachineConfiguration()
         try system.fillVZConfiguration(vzconfig)
-        if #available(macOS 12, *) {
+        if #available(macOS 12, *), !sharedDirectories.isEmpty {
             let tag: String
             if #available(macOS 13, *), system.boot.operatingSystem == .macOS {
                 tag = VZVirtioFileSystemDeviceConfiguration.macOSGuestAutomountTag

+ 7 - 2
Configuration/UTMAppleConfigurationVirtualization.swift

@@ -120,7 +120,7 @@ extension UTMAppleConfigurationVirtualization {
 @available(macOS 11, *)
 extension UTMAppleConfigurationVirtualization {
     func fillVZConfiguration(_ vzconfig: VZVirtualMachineConfiguration, isMacOSGuest: Bool = false) throws {
-        if hasBalloon {
+        if hasBalloon && !isMacOSGuest {
             vzconfig.memoryBalloonDevices = [VZVirtioTraditionalMemoryBalloonDeviceConfiguration()]
         }
         if hasEntropy {
@@ -140,6 +140,11 @@ extension UTMAppleConfigurationVirtualization {
             }
             if hasKeyboard {
                 vzconfig.keyboards = [VZUSBKeyboardConfiguration()]
+                #if arch(arm64)
+                if #available(macOS 14, *), isMacOSGuest {
+                    vzconfig.keyboards = [VZMacKeyboardConfiguration()]
+                }
+                #endif
             }
             if hasPointer {
                 vzconfig.pointingDevices = [VZUSBScreenCoordinatePointingDeviceConfiguration()]
@@ -168,7 +173,7 @@ extension UTMAppleConfigurationVirtualization {
                 throw UTMAppleConfigurationError.rosettaNotSupported
             }
             #endif
-            if hasClipboardSharing {
+            if hasClipboardSharing && !isMacOSGuest {
                 let spiceClipboardAgent = VZSpiceAgentPortAttachment()
                 spiceClipboardAgent.sharesClipboard = true
                 let consolePort = VZVirtioConsolePortConfiguration()

+ 3 - 1
Platform/macOS/VMConfigAppleVirtualizationView.swift

@@ -22,7 +22,9 @@ struct VMConfigAppleVirtualizationView: View {
     
     var body: some View {
         Form {
-            Toggle("Enable Balloon Device", isOn: $config.hasBalloon)
+            if operatingSystem == .linux {
+                Toggle("Enable Balloon Device", isOn: $config.hasBalloon)
+            }
             Toggle("Enable Entropy Device", isOn: $config.hasEntropy)
             if #available(macOS 12, *) {
                 Toggle("Enable Sound", isOn: $config.hasAudio)