Xen Project正式将其虚拟机管理程序移植到Raspberry PI 4

2020-09-30 02:34:11

我们即将开始一场深入内存分配器和Linux地址转换层的冒险之旅。

Xen项目已经正式将其虚拟机管理程序移植到Raspberry PI-准确地说是64位模型4。

建立一个官方端口的想法是从Xen社区冒出来的,然后送到了Xen项目顾问委员会主席乔治·邓拉普的办公桌上。邓拉普向一位在树莓PI基金会工作的熟人提到了这个想法,并被告知大约40%的PI卖给了商业用户,而不是业余爱好者。

根据PI Guy Eben Upton的数据,截至2019年12月,基于ARM的PI已售出超过3000万台,2020年4月,销售额达到每月60多万台,邓拉普看到了继续推动Xen向嵌入式和工业应用迈进的机会。

斯特凡诺·斯塔贝利尼(Stefano Stabellini)白天在FPGA公司Xilinx工作,他和前阿帕奇基金会主任罗曼·沙波什尼克(Roman Shaposhnik)承担了港口的任务。两人发现RPI4的片上系统使用了常规的GIC-400中断控制器,Xen支持开箱即用的中断控制器,并认为这是一个信号,总体来说,这将是一项足够容易的工作。两人承认,这是危险的乐观情绪。忘掉IRQ吧,要导航的是物理和虚拟内存地址的整个世界。

我们被告知,这两个人“完全没有意识到我们即将开始一场深入Xen内存分配器和Linux地址转换层的冒险之旅”。

“第一个障碍是低内存地址的可用性,”两人在Xen Pi端口的公告中写道,“寄存器”在Xen Pi端口今天公开发布之前看到了这一消息。“RPi4的设备只能访问前1 GB的RAM。Dom0中低于1 GB的内存量不足。Julien Grall用一个简单的一行修复程序解决了这个问题,将RPi4上Dom0的内存分配增加到1 GB以下。该补丁现在出现在Xen 4.14中。“。

问题解决后,两人再次希望他们的端口能正常工作,并启动来宾ARM Linux操作系统。

这是因为:“Linux中的Xen子系统使用virt_to_phys将虚拟地址转换为物理地址,这适用于大多数虚拟地址,但不适用于所有虚拟地址。事实证明,RPi4Linux内核有时会传递使用virt_to_phys无法转换为物理地址的虚拟地址,这样做会导致严重错误。“。

这两个编码器在适当的时候通过使用不同的地址转换功能找到了修复。这项工作现在出现在Linux内核的主分支中。

RasPad 3.0将Raspberry PI 4转换为平板电脑-准备好应对一些奇怪的情况。

多读。

“Linux内核一直有物理地址和DMA地址的概念,其中DMA地址用于对设备进行编程,并且可能与物理地址不同,”两人解释说。“实际上,Xen可以运行的x86、ARM和ARM64平台都没有与物理地址不同的DMA地址。Linux中的Xen子系统正在利用DMA/物理地址二元性进行自己的地址转换。它使用它将访客看到的物理地址转换成Xen看到的物理地址。“。

但是Raspberry PI4没有使用这种技术,这使得Linux中的Xen子系统崩溃。

这对情侣写道:“缩小范围并不容易。”一旦我们了解了问题,在打了十几个补丁之后,我们就完全支持在Linux中处理DMA/物理地址转换。

“解决地址转换问题是我们有趣的黑客冒险的结束。应用了Xen和Linux补丁后,Xen和Dom0可以完美地工作。一旦Linux5.9发布,我们就会让Xen开箱即用来开发RPi4。“

说到Linux5.9,Linus Torvalds在周一发布了候选版本7,并建议在完整版本发布之前需要另一个测试周期。因此,官方的Xen-on-Pi部署起来还需要一段时间。

对于那些迫不及待的人来说,注册理解项目Eve,物联网边缘的Linux Foundation操作系统,将很快在其Github页面上公布详细信息,详细介绍如何构建自己的Xen-for-RPI。使其正常运行的技巧也应该出现在Xen项目博客上。还有一些非官方的端口,例如这个端口,尽管它们有限制,比如系统RAM限制为1 GB。

Stefano Stabellini告诉The Register,官方的Xen-on-RPI端口将在物联网社区产生影响,因为其他ARM开发板的成本比PI更高,程序员将被吸引到更便宜的原型设计替代方案。他还概述了一些场景,例如,单个边缘设备同时运行实时操作系统和另一个操作系统,每个操作系统专用于不同的任务,但驻留在相同的硬件上,享受虚拟机的出色隔离,而不是将操作系统作为容器共享。

George Dunlap还认为,官方的Xen-on-RPI端口也可能对家庭实验室的建造者有用,或者可能只是为开发人员提供一个比其主计算机上的虚拟机或容器更适合其副项目的环境。®。

The Register-独立于科技界的新闻和观点。情况发布的一部分