在瀏覽器裡面跑exe不是夢!?這樣的話,我們就能在Android/iOS平台跑Windows程式了。
v86 Emulator這個專案好厲害,可以在瀏覽器裡面跑完整的32位元作業系統。
根據Github的說明,v86是一個"x86PC emulator and x86-to-wasm JIT, running in the browser"。
只要造訪這個網頁,就能使用線上使用:https://copy.sh/v86/
這不是用網頁框架模擬Windows介面,也不是遠端桌面,而是真正的在瀏覽器載入ISO開機,進入完整作業系統。原理是在瀏覽器裡面模擬x86架構的CPU,將機器碼翻譯為WebAssembly執行,並且實現了JIT加速。
理論上WebAssembly是platform-agnoistic的技術,所以不論是在x86還是ARM平台上模擬x86的CPU,都不會有太大效能損失?就看你的CPU多會算!
v86執行的作業系統,網路預設是停用的。
作業系統開機後的狀態要使用者手動點選Save state才能保存。在網頁關掉後,資料都會消失。
1. 適用的場合?#
v86沒有用到任何虛擬化技術,瀏覽器也不可能允許調用吧。從這點看來,v86不算是虛擬機,而比較像是模擬器吧!雖說,透過WebAssembly與JIT加速,能夠跑Windows 2000、Android-x86,和一些輕量級的Linux發行版的系統,不過目前的實用性也就醬以了。為啥呢?瀏覽器可沒辦法像虛擬機軟體一樣,分配太多的CPU與RAM資源,導致目前的v86註定只能跑20年前的古早系統,或者是精簡到不能再精簡的Linux發行版。
儘管v86理論上能跑近代的Windows 7系統(作者說你需要用qemu指令自行製作映像檔),可是速度非常之慢呀。
好吧,這樣看來v86顯得很尷尬,除了proof of concept之外,還能有什麼用呢?
這有什麼用呢?我第一時間想到的是…在iPad上模擬跑Windows吧!
說到iOS 26上模擬x86指令集的應用,我第一時間想到的是iSH Shell,透過模擬x86指令來在iOS跑Alpine Linux的userspace程式,效率可能比qemu user mode要好,但是缺乏JIT加速。
UTM能夠跑其他作業系統的虛擬機。但因為需要側載才能取得效能較好的JIT加速。實用性不高。沒有JIT的UTM SE連Windows XP開機都非常地慢。
RetroArch雖然能夠模擬DOS與Windows 98的系統,不過它畢竟不是完整的環境。
說回v86,我覺得v86比較有用的場合是在iPadOS上使用,因為v86使用Safari瀏覽器就能跑,繞過了一般APP無法存取JIT的問題啊!
我覺得v86或許能夠成為UTM的替代品,雖然作業系統硬碟狀態需要手動下載保存,不過如果能掛載CDROM載入exe的話,作為一個暫時處理檔案的瀏覽器內攜帶系統也是不錯的用途吧!也可以玩很老的DOS遊戲。
就實用性來說,最好的系統應該是Windows XP,能夠跑一些古早的Office版本文書程式,也能透過Supermium瀏覽器上網。v86作者沒有提供Windows XP映像檔,可能是檔案太大了,那麼相容性接近Windows NT 4.0的「ReactOS」也是能夠考慮的選項。
可惜的是,根據我在iPadOS 26的測試結果,Safari似乎不想讓這個網站抓取我的滑鼠,導致不好操作。
2. 一個類似v86的有趣專案:BoxedWine#
BoxedWine這個技術同樣很有趣,它將Wine封裝在一個最小Linux環境裡面,透過模擬Linux核心與x86架構的CPU,使其能做到跨平台支援,在Windows它可以當成32位元的懷舊遊戲模擬器使用。
另一方面,它可以透過WebAssembly在瀏覽器執行。還沒加入JIT所以效能很差。
作者有做一些網頁版Demo,跑得都是20年前的老遊戲,如此一來在EmulatorJS以外,又多了一個網頁玩老遊戲的解決方案。