升级到 macOS Catalina 后 Qemu 没有响应

Qemu not responding after upgrading to macOS Catalina

将我的 Mac 升级到 Catalina 后,我不能再使用 qemu。每当我尝试启动它时,它就会挂起。当 qemu window 处于活动状态时,菜单栏也没有响应。 运行 qemu-system-i386 --help 确实有效。

Qemu 版本:4.1.0

编辑:通过 -nographic 修复了问题。

这是 Catalina 行为变化的结果,它打破了 QEMU Cocoa 前端设计中的假设。我们对 QEMU 代码进行了更改(上游 git commit dff742ad27efa474)以避免挂起;这将出现在即将发布的 QEMU 4.2 版本中。同时,一种解决方法是避免使用 Cocoa 前端(例如,使用 -nographic 完全关闭图形,或使用其他显示前端之一,如 VNC 或 Spice)。

(Catalina 行为更改的技术细节是 NSApplicationDelegate::applicationDidFinishLaunching 记录在处理任何事件之前调用它 [https://developer.apple.com/documentation/appkit/nsapplicationdelegate/1428385-applicationdidfinishlaunching ],这在旧版本的 OSX,但在 Catalina 中,至少有一个事件在 applicationDidFinishLaunching 之前发送到应用程序,这在 QEMU 中触发了死锁。)

关于 OSX 行为变化的反馈报告显然已提交给 Apple,错误编号为 FB7380815。

获取 SDL

 brew install sdl2

和 Qemu 源代码

git clone https://git.qemu.org/git/qemu.git

然后使用

配置
./configure --target-list=i386-softmmu,x86_64-softmmu --enable-sdl --disable-cocoa --enable-sdl-image

然后

make & make install 

这会部署使用 SDL 而不是 cocoa 的可用 qemu 二进制文件。 祝你好运!