Wine-CE是在不同指令集架构Linux系统上运行Windows程序的兼容层,它基于Wine项目和Qemu项目。与Wine相比,Wine-CE可以模拟执行不同指令集的Windows软件,它使用修改过的Qemu作为指令翻译层。
相比其它跨指令集Win32模拟方案,Wine-CE有以下优势:
1.采用奇美拉架构,将基于修改版QEMU的指令模拟层嫁接于Wine的WindowsDLL和Unix库之间,非必要不模拟,可以直接调用本机的应用程序接口。因此性能上面具有优势。模拟代码和本机代码采用双协程模式,通过特定数据结构的数据进行交互,从而兼容性大幅提升。
2.安装方便,运行时无须ROOT权限。以往的方案都是采用指令模拟层(Box86、Exagear、QEMU等)和Windows模拟层(Wine)分开的模式,部署配置复杂,且部分方案需要ROOT权限进行chroot操作。Wine-CE方案只有一个APP,部署简单,无需ROOT权限进行chroot操作,因此配置更为方便。
3.构建方式简单,只需构建2个模块,基于Wine的构建方案进行构建,只需按照文档中显示的内容构建即可。
其软件架构如下:
+---------------------+\|WindowsEXE|}application+---------------------+/+---------++---------+\|Windows||Windows|\application&systemDLLs|DLL||DLL|/+---------++---------+/+---------++---------++-----------++--------+\|GDI32||USER32|||||\|DLL||DLL||||Wine|\+---------++---------+|||Server|\coresystemDLLs+---------------------+||||/(ontheleftside)|Kernel32DLL||Subsystem||NT-like|/|(Win32subsystem)||Posix,OS/2||Kernel|/+---------------------++-----------+||/||+---------------------------------------+|||NTDLL|||+---------------------------------------++--------++---------------------------------------+\|Qemuloaderexecutable|}emulateloader+---------------------------------------+/+---------------------------------------+\|QEMU|}specialQEMU+---------------------------------------+/+---------------------------------------------------+\|Winedrivers|}WinespecificDLLs+---------------------------------------------------+/+------------++------------++--------------+\|libc||libX11||otherlibs|}unixsharedlibraries+------------++------------++--------------+/(userspace)+---------------------------------------------------+\|Unixkernel(Linux,*BSD,Solaris,OS/X)|}(Unix)kernelspace+---------------------------------------------------+/+---------------------------------------------------+\|Unixdevicedrivers|}Unixdrivers(kernelspace)+---------------------------------------------------+/该项目已经测试可以在树莓派上运行WindowsX86软件,测试视频如下:
测试平台:Raspberrypi400
仙剑奇侠传3:https://www.bilibili.com/video/BV1Kd4y157Lm
魔兽争霸III:https://www.bilibili.com/video/BV1qK411k7mu
评论