Introducing vphone-linux: running a real iOS 26 virtual iPhone on Linux (x86_64)
I've been porting vphone-cli to Linux which runs a virtual iPhone using Apple's private "vresearch101" research VM platform, normally only possible on Apple Silicon Macs through Virtualization.framework.
Instead, this boots the same iOS 26.6.2 VM on an ordinary x86 Linux PC:
- CPU: a custom QEMU machine model of Apple's VM platform, running ARM64e (pointer authentication and all) through QEMU's TCG emulation, with SEP emulation good enough for iOS to boot.
- GPU: iOS uses Apple's paravirtual GPU driver. On the host side, a fork of reims-vgpu plus metal2vulkan translate its Metal command streams and shaders to Vulkan.
- Input: a virtual USB touchscreen and keyboard, so it's usable with a mouse.
- Host control: a vsock channel to a guest daemon for scripting (install apps, read logs, take screenshots).
Current state:
- It boots to the home screen with the wallpaper, widgets, Liquid Glass UI, touch input and apps (Settings, Maps, Calendar, Photos and more) working.
- It's still slower than a real device, since everything is emulated, but it's getting usable.
Main Goal: Full iOS app development environment outside macs.
I'll publish it on GitHub with setup instructions once it's cleaned up. You'll still need to supply the firmware yourself: no Apple binaries will be distributed.
453 points · 65 comments
Mentions
@azurita_a @luizfrombrazil Testa o reims, da pra usar uma vm do mac os em qualquer pc com qualquer gpu steelbrain/reims-vgpu
Introducing vphone-linux: running a real iOS 26 virtual iPhone on Linux (x86_64) I've been porting vphone-cli to Linux which runs a virtual iPhone using Apple's private "vresearch101" research VM platform, normally only possible on Apple Silicon Macs through Virtualization.framework. Instead, this boots the same iOS 26.6.2 VM on an ordinary x86 Linux PC: - CPU: a custom QEMU machine model of Apple's VM platform, running ARM64e (pointer authentication and all) through QEMU's TCG emulation, with SEP emulation good enough for iOS to boot. - GPU: iOS uses Apple's paravirtual GPU driver. On the host side, a fork of reims-vgpu plus metal2vulkan translate its Metal command streams and shaders to Vulkan. - Input: a virtual USB touchscreen and keyboard, so it's usable with a mouse. - Host control: a vsock channel to a guest daemon for scripting (install apps, read logs, take screenshots). Current state: - It boots to the home screen with the wallpaper, widgets, Liquid Glass UI, touch input and apps (Settings, Maps, Calendar, Photos and more) working. - It's still slower than a real device, since everything is emulated, but it's getting usable. Main Goal: Full iOS app development environment outside macs. I'll publish it on GitHub with setup instructions once it's cleaned up. You'll still need to supply the firmware yourself: no Apple binaries will be distributed.
后者 metal2vulkan 主要是 steelbrain/reims-vgpu 这个实现。和我之前提到 switch 模拟器用到的 nvn2vulkan 原理都是指令翻译。 性能方面苹果 gpu 走的是 tbdr 大缓存换带宽路线,直接 vulkan 翻译损失比较大,不过问题不大可以大力出奇迹。
reims-vgpu working on Windows (WSL) with nVidia :) Am I the first? reims-vgpu#32
@lin72h Already pushed to the development branch! github.com/steelbrain/reims-vgpu/commit/871e09316…
macOS ventura vm running on RX 7600 with the help of reims-vgpu project steelbrain/reims-vgpu