Wine-CE基于 Wine 和 Qemu 的 Windows 兼容层

联合创作 · 2023-09-29 08:12

Wine-CE 是在不同指令集架构Linux系统上运行Windows程序的兼容层,它基于Wine项目和Qemu项目。与Wine相比,Wine-CE可以模拟执行不同指令集的Windows软件,它使用修改过的Qemu作为指令翻译层。

相比其它跨指令集Win32模拟方案,Wine-CE有以下优势:

1. 采用奇美拉架构,将基于修改版QEMU的指令模拟层嫁接于Wine的Windows DLL和Unix库之间,非必要不模拟,可以直接调用本机的应用程序接口。因此性能上面具有优势。模拟代码和本机代码采用双协程模式,通过特定数据结构的数据进行交互,从而兼容性大幅提升。

2. 安装方便,运行时无须ROOT权限。以往的方案都是采用指令模拟层(Box86、Exagear、QEMU等)和Windows模拟层(Wine)分开的模式,部署配置复杂,且部分方案需要ROOT权限进行chroot操作。Wine-CE方案只有一个APP,部署简单,无需ROOT权限进行chroot操作,因此配置更为方便。

3. 构建方式简单,只需构建2个模块,基于Wine的构建方案进行构建,只需按照文档中显示的内容构建即可。

其软件架构如下:

+---------------------+                                  \
|     Windows EXE     |                                   } application
+---------------------+                                  /

+---------+ +---------+                                  \
| Windows | | Windows |                                   \ application & system DLLs
|   DLL   | |   DLL   |                                   /
+---------+ +---------+                                  /

+---------+ +---------+     +-----------+  +--------+  \
|  GDI32  | |  USER32 |     |           |  |        |   \
|   DLL   | |   DLL   |     |           |  |  Wine  |    \
+---------+ +---------+     |           |  | Server |     \ core system DLLs
+---------------------+     |           |  |        |     / (on the left side)
|    Kernel32 DLL     |     | Subsystem |  | NT-like|    /
|  (Win32 subsystem)  |     |Posix, OS/2|  | Kernel |   /
+---------------------+     +-----------+  |        |  / 
                                           |        |
+---------------------------------------+  |        |
|                 NTDLL                 |  |        |
+---------------------------------------+  +--------+
+---------------------------------------+               \
|            Qemuloader executable      |                } emulate loader
+---------------------------------------+               /
+---------------------------------------+               \
|                 QEMU                  |                } special QEMU
+---------------------------------------+               /
+---------------------------------------------------+   \
|                   Wine drivers                    |    } Wine specific DLLs
+---------------------------------------------------+   /

+------------+    +------------+     +--------------+   \
|    libc    |    |   libX11   |     |  other libs  |    } unix shared libraries
+------------+    +------------+     +--------------+   /  (user space)

+---------------------------------------------------+   \
|         Unix kernel (Linux,*BSD,Solaris,OS/X)     |    } (Unix) kernel space
+---------------------------------------------------+   /
+---------------------------------------------------+   \
|                 Unix device drivers               |    } Unix drivers (kernel space)
+---------------------------------------------------+   /

该项目已经测试可以在树莓派上运行Windows X86软件,测试视频如下:

测试平台:Raspberrypi 400

仙剑奇侠传3:https://www.bilibili.com/video/BV1Kd4y157Lm

魔兽争霸III:https://www.bilibili.com/video/BV1qK411k7mu

 

浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报