QEMU:一台可以被改写的机器原代码

QEMU:一台可以被改写的机器

31分钟 ·
播放数6
·
评论数0

一台电脑正在一部 iPhone 里面启动。UTM 把 QEMU 链接成 shared library,藏进应用的一条线程;KVM 可以拿走处理器的主要执行工作,Android Emulator 可以增加手机设备,xemu 可以把它改成一台原始 Xbox。底层不断被拆开、包裹和改写,为什么它们仍然属于 QEMU 的故事?

本期《原代码》从 Fabrice Bellard 在空闲时间里维护、没有一张通往 1.0 日程表的个人项目出发,追踪 KVM 与 Xen 的分叉怎样逐步回到共同上游,维护责任怎样从一个名字拆成许多具体位置,以及 QEMU 怎样在服务器之外进入 Android、UTM、xemu 与 GNOME Boxes。它被业界接受,并不是因为所有人最终运行同一个原版程序,而是因为越来越多人能够拿走它最显眼的部分,同时继续处理自己与 upstream 的距离。

你可在官方网站 yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

时间轴

00:00 一条 iPhone 线程

02:27 从程序到机器

06:07 没有一张通往 1.0 的日程表

07:52 内核拿走处理器

10:47 -enable-kvm

15:28 分叉怎样回来

19:02 没有唯一的交接日

22:50 四个窗口,四种 QEMU

28:24 一台不再属于一个人的机器

本期资料

- [QEMU linux-user:2003 首发邮件与 user-mode 历史](events17.linuxfoundation.org)

- [Fabrice Bellard:QEMU 0.4 release](lkml.indiana.edu)

- [QEMU, a Fast and Portable Dynamic Translator](www.usenix.org)

- [Fabrice Bellard:Qemu development schedule?](lists.nongnu.org)

- [QEMU:The Role of Maintainers](qemu.readthedocs.io)

源码与工程记录

- [Linux commit 6aa8b732:KVM userspace interface](git.kernel.org)

- [Avi Kivity:kvm, the Linux Virtual Machine Monitor](www.kernel.org)

- [QEMU commit 7ba1e619:Add KVM support to QEMU](gitlab.com)

- [Anthony Liguori:QEMU 0.10.0 KVM tree](lists.nongnu.org)

- [Ian Jackson:qemu and ioemu](old-list-archives.xenproject.org)

- [Xen 4.3 released](lists.xenproject.org)

- [QEMU Linux-style MAINTAINERS discussion](lists.libreplanet.org)

- [AOSP Android Emulator QEMU README](android.googlesource.com)

- [UTM Architecture](github.com)

- [xemu:About](xemu.app)

- [GNOME Boxes:What is the technology used by Boxes?](help.gnome.org)

- [Apple WWDC19:Getting the Most Out of Simulator](developer.apple.com)

公司与产品采用

- [Red Hat 收购 Qumranet](www.redhat.com)

- [IBM PowerKVM: Configuration and Use](www.redbooks.ibm.com)

- [SUSE:Managing KVM Virtualization](documentation.suse.com)

访谈与历史原声来源

- [Anthony Liguori:QEMU 2.x and Beyond: The Foundation of the Open Cloud](www.youtube.com),The Linux Foundation,2013,来源标记为 CC BY。

- [Alex Bennée、Christoffer Dall、Peter Maydell:QEMU for ARMv8 and the 64-bit Android Emulator](www.youtube.com),Linaro Connect,2014。

说明与延伸阅读

- “业余项目”来自 Bellard 2004 年的同期邮件;“玩具”不是他的原话,也不是本期对早期 QEMU 用途的判断。

- 2003 年 3 月 23 日首发邮件的文字来自后来维护者演讲中的转录。本期没有找到可确认的 Bellard 本人 QEMU 录音,也没有把旁白读信伪装成作者声音。

- KVM 进入 Linux 内核不表示 QEMU 被并入内核。KVM 负责受控的 guest 执行与内存、虚拟 CPU 接口,QEMU 继续提供用户空间机器和设备模型。

- Red Hat 收购的是 Qumranet、KVM 团队和相关产品,不是 QEMU。收购与 KVM 支持进入 QEMU upstream 处在相近时间窗口,但现有材料不支持把收购写成该 commit 的单一原因。

- KVM 和 Xen 的 downstream tree、upstream 支持、默认路径与兼容路径在不同时间变化。一次合入或默认值切换,都不表示分叉和维护成本立即消失。

- 现有材料只能确认到 2013 年 Bellard 已不再参与项目,不能给出唯一的正式离场日,也不能把后来的 QEMU 写成由一个人完整接手。

- Android Emulator 的固定源码快照说明它是 QEMU downstream,并保留从 upstream 合并的路径;快照日期不代表首次采用年份,也不证明全部现代 backend。

- UTM、xemu 和 GNOME Boxes 都有项目方材料支撑其 QEMU 关系。Dolphin、RPCS3、Xenia 等其他游戏主机模拟器没有进入本期 QEMU 系谱;Apple Simulator 则明确不是 emulator。