Monday, February 11, 2019

Running Windows program on Linux and MacOS: Wine

因为很多原因我工作之外更喜欢使用Linux/Ubuntu操作系统。我在家的常用计算机是双操作系统,Windows10 + Ubuntu。Boot来boot去的到也很快,但还是不很痛快。比如,Linux可以access Windows的硬盘分区,可是Windows不支持Linux的ext4分区。又如Google Drive App只有Windows和Mac版,没有Linux版(很奇怪)。有时我会玩老游戏如微软的帝国时代和红警,感谢开源Wine (Wine Is Not Emulator) enables Linux, Mac, FreeBSD, and Solaris users to run Windows applications without a copy of Microsoft Windows. Wine is free software under constant development. Other platforms may benefit as well. 
https://wiki.winehq.org/Ubuntu 提供了源程序和binary,很容易安装。wine FAQ 提及At present there are some significant bugs that prevent many 32 bit applications from working in a 64 bit wineprefix。很多Windows程序都是32位的,所以需要32位Linux support:

If your system is 64 bit, enable 32 bit architecture (if you haven't already):
sudo dpkg --add-architecture i386
为了用apt安装WINE,需要把WINE加到Ubuntu的软件list里,download and add the repository key:

sudo apt-key add winehq.key

Ubuntu 18.04: sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

sudo apt update && sudo apt install --install-recommends winehq-stable


安装完后,在home folder的.wine目录下,可以找到drive_c,就是mapped的C drive。运行的程序并不必须copy到这个目录下。在这个.wine目录下运行winecfg会自动安装.net等package。之后可以运行wine notepad来确认wine设置成功。

因为我的游戏是中文汉化版,为了中文支持,首先需要在Host OS上加中午支持。
User guide: For Chinese font support, refer to test language: need to install language package for linux first, such as:
sudo apt-get install language-pack-zh-hans
then run like: LANG=zh_CN.UTF-8 wine empires2.exe to start Empire 2.
注意怎样在Ubuntu上添加拼音输入支持,先要安装如上的pack,然后在setting/Language and Region input source里加入拼音输入,注意,一定要加pinyin 而不是Chinese,不然,就没法用拼音。

帝国时代游戏里有选项可以改变游戏分辨率。取决于winecfg的Graphics设置,可能会有不同的效果和问题。如右图所示, Graphics有4个checkbox,最重要的是第3项和第4项:
Allow the window manager to control the windows
Emulate a virtual desktop 和 Desktop size
当这两项都没有选取时,游戏显示是正常的,在游戏中改变分辨率,游戏的显示还是正常,但是游戏的快捷键可能不起作用。如果只选第3项,键盘工作正常,但切换游戏分辨率后,一部分屏幕可能不能正常刷新。我相信应该有办法tweak wine解决这个问题,不过最简单的办法就是把3和4都选上,显示是virtual的,而不是全屏的,看起来画面更细致。
 




WINE也可以安装到Mac OS上。

On MacOS, refer to https://wiki.winehq.org/MacOS
如上述链接所说的,需要先确保Xquartz已安装。Xquartz也是一个开源软件: https://www.xquartz.org/, an open-source effort to develop a version of the X.Org X Window System that runs on OS X. 在MacOS上32bit wine是基本安装, 64bit 是可选项。设置运行和Linux /Ubuntu基本一样。
总的来说,WINE的solution与VM和container完全不同。 VM是在指令一层simulate,container则必须运行在同种OS,而WINE是把Windows API calls 转换成POSIX API calls on-the-fly,各有千秋。 

Update in 2020: 参见winetricks: A useful tool for using common workarounds to current deficiencies in Wine,很方便用来安装runtime support。


0 Comments:

Post a Comment