苹果扩展 macOS 虚拟化功能并引入针对 Linux 二进制文件的 Rosetta

WWDC 2022:Apple在macOS上展示虚拟化技术的最新进展

在2022年的WWDC大会上,Apple展示了其在macOS虚拟化支持方面的最新进展。通过Apple Virtualization Framework,开发者可以在Apple Silicon芯片上配置和创建虚拟机(VM),以运行macOS或Linux。在即将发布的macOS Ventura中,Linux虚拟机可以利用GPU,并通过Rosetta运行未经修改的x86-64 Linux二进制文件。

虚拟化框架的背景

Apple的Virtualization Framework最初在macOS Big Sur(macOS 11)中引入,作为Hypervisor Framework的替代方案。该框架提供了一个高级API,允许开发者使用Swift在macOS上配置和创建虚拟机。事实上,Virtualization Framework是在Hypervisor Framework之上运行的一个更高层次的抽象。

虚拟机的配置与创建

VZVirtualMachineConfiguration是核心类,开发者可以通过它定义虚拟机中的硬件配置,包括CPU数量、内存大小、存储设备等。配置完成后,可以使用VZVirtualMachine实例化并运行虚拟机,并通过VZVirtualMachineView将其显示在macOS窗口中。

var configuration = VZVirtualMachineConfiguration()
configuration.cpuCount = 4
configuration.memorySize = (4 * 1024 * 1024 * 1024) as UInt64
configuration.storageDevices = [newBlockDevice()]
configuration.pointingDevices = [newPointingDevice()]

let virtualMachine = VZVirtualMachine(configuration: configuration)
try await virtualMachine.start()

let virtualMachineView = VZVirtualMachineView()
virtualMachineView.virtualMachine = virtualMachine

这种方式创建的虚拟机类似于物理设备,可以在其上安装操作系统。此外,虚拟机还支持GPU,使得在虚拟机中运行Metal的性能几乎接近原生。

Linux虚拟化的改进

在macOS Ventura中,Apple引入了对EFI引导加载程序的支持,使得可以从附加到虚拟机的虚拟设备中启动Linux。开发者可以下载ISO Linux镜像,将其附加到虚拟存储设备,并创建引导加载程序来启动操作系统。此外,VirtioGPU 2D的引入使得Linux可以在macOS窗口中显示GUI界面。

Rosetta支持

macOS Ventura中最引人注目的新功能之一是通过Rosetta运行未经修改的x86-64 Linux二进制文件。开发者可以将macOS中的Rosetta目录共享到Linux虚拟机中,并在Linux shell中启动Rosetta解释器,从而实现x86-64二进制文件到ARM的自动翻译。

let rosettaDir = try! VZLinuxRosettaDirectoryShare()
let directorySharingDevice = VZVirtioFileSystemDeviceConfiguration(tag: "RosettaShare")
directorySharingService.share = rosettaDirectoryShare

configuration.directorySharingDevice = directorySharingService

其他新功能

macOS Ventura还引入了对触控板的支持,并扩展了VirtioFS功能。VirtioFS原本用于与Linux虚拟机共享文件,现在也可以用于与macOS虚拟机共享文件。

总结

Apple通过Virtualization Framework在macOS上提供了强大的虚拟化能力,特别是在macOS Ventura中,进一步增强了Linux虚拟化的支持,并引入了Rosetta的跨架构翻译功能。这些改进使得开发者能够更灵活地在Apple Silicon设备上运行多种操作系统和应用程序。

阅读 20
0 条评论