实践中在Apple Silicon / M1上使用Linux桌面

2021-03-03 13:38:17

我买了M1 MacBook Air。它是我拥有的最快的计算机,并且长期以来一直是GNOME / GNU / Linux用户。显而易见的结论是,我需要在Apple Silicon / M1上使用实用的Linux桌面环境。

存在两个本机端口,但是它们还没有足够的设备支持。当然需要一些时间。

QEMU可以与Hypervisor.framework一起运行,网址为:https://patchew.org/QEMU/[email protected]/它允许在CPU上本地运行代码。但是GPU呢?不幸的是,QEMU还没有针对macOS进行过优化。

当我现在需要Linux桌面时,我决定破解QEMU。最困难的挑战显然是图形加速,但是还有Virgil 3D。向主机显示OpenGL的小鸟。 https://virgil3d.github.io

不幸的是,它无法在macOS主机上运行。因此,我使它工作了。就是这样。这是演示在Apple Silicon / M1上Linux上的OpenGL的视频:

向访客告知物理/像素窗口大小。现在,Ubuntu可以正确处理Retina并响应窗口大小更改。

添加打孔操作。 (磁盘映像仅在实际有数据时才占用物理存储。)

它不会消耗物理空间,直到它具有数据,因此您可以使图像非常大。但是,如果您尝试编写数据,则会看到奇怪的行为,而不是物理磁盘允许。

VHOST-User-GPU将通过隔离图形加速过程阻止QEMU进程崩溃,但它需要修改在Linux外部运行,因为:

从历史上看,vhost-user是Linux内核' s vhost接口的重新实现,它依赖于接口定义的内核标头和

上游正在进行中。希望我在未来运行Brew Install Qemu的情况下,我所实施的功能将工作。

正如我在此描述的那样,这样的虚拟化软件是运行Linux桌面的实用和有效的方法。日常使用也可以接受性能开销,甚至可以更好地集成Linux和MacOS。例如,您可以在TrackPad上使用三指手势切换MacOS和Linux。您可以使用Virtfs。

但是,存在这种虚拟化添加的复杂性。它基本上意味着与两个系统共享一个硬件,因此您必须正确分配它们,或者它最终以不良的用户体验。各处都发生分配问题(像键盘一样,计算资源,如CPU,电源管理等)。这种方法是有效的,但不是最好的。

长期以来,本机Linux端口是最佳选择。但是,如果在可用之前需要太长,这是不可行的。因此,我们应该考虑混合方法。 Marcan42是Asahi Linux的创始人,有一个想法在Linux上的KVM上运行麦克斯,以支持复杂的设备,例如:https://twitter.com/marcan42/status/136199964819269636

另一种方法是使macOS设备支持软件在Linux上运行。 过去有NDISWrapper,一个将一些Windows驱动程序引入Linux的项目。 还有苹果酒(Cider),这是" duct-tape"的研究项目。 XNU的IOKit到Linux,将macOS驱动程序带到Android。 https://www.cs.columbia.edu/~nieh/pubs/asplos2014_cider.pdf 通过采用这些方法,可以逐渐减少对macOS的依赖,而不是一次减少。