沟通无国界让Windows程序在Linux中跑起来
整机外设
许多Windows程序都可以很好地运行在Linux中。实现方法目前主要有两大类,一种是在Linux上直接运行Windows程序,这种方法的解决思路就是在Linux中调用Windows的API(应用程序接口),另一种解决方法就是采用虚拟技术来建一台虚拟PC,然后在这台虚拟的PC中安装Windows操作系统并安装运行需要的程序,下面就分门别类地向大家介绍一下这两种方式实现的具体方法。
一、在Linux中直接运行Windows程序
1. Wine篇
Wine是什么?是香醇的红葡萄酒吗?在英文词典中这个解释可能是正确的,但在Linux中Wine是一个著名的开源项目,它是Wine Is Not Emulator首字母的缩写,直译是“Wine不是一台虚拟机”的意思。
其实,Wine就是一个Windows API的Linux/Unix可实现项目,它可以在Linux中运行各种DOS和Windows程序(包括Win 3.X和Win32的可执行程序)。Wine主要包括一个Windows程序装载器和一个库──Winelib,它就是实现Windows API调用的接口集。
Wine的安装
a.下载编译好的安装包进行安装
对于使用主流的发行版本的朋友来说,最为简单的安装方法就是直接下载相应版本的安装包来安装,具体的下载地址为:http://www.winehq.com/site/download,该地址提供了大量的不同版本以及不同版本的编译包下载,选择相应的安装包下载后便可直接安装。
特别需要注意的是,由于提供的版本版号繁多,所以一定要看清楚版本版号以及CPU类型,这些信息通常会在安装包名称中有所体现。例如,下载FC1的RPM包的下载地址为http://prdownload
s.sourceforge.net/wine/wine-200408
13-1fc1winehq.i386.rpm?download,安装方法如下:
[root@localhost root]#rpm -ivh wine-20040813-1fc1winehq.i386.rpm
提示:Wine的官方安装文件通常为Wine-年月日-发行版本.CPU信息来命名,这样就可以通过其日期、版本来判断其版本的新旧。需要注意的是CPU信息中,i386、i686通常是Intel的CPU,而althon则是AMD的CPU,目前Wine最新的版本为20040813(图1)。
b.编译安装
如果Wine没有提供你所使用的Linux发行版对应的编译包,可以使用RedHat的编译安装包试一试,毕竟它的兼容性是最好的。这种情况下我们推荐使用编译安装,编译安装最大的好处就是可以根据你的计算机进行优化,达到最好的运行效果。
Wine源码包的下载
http://heanet.dl.sourceforge.net/sourceforge/wine/Wine-20040813.tar.gz
安装文件为Wine-20040813.tar.gz,安装文件大小为10.3MB。
提示:使用编译安装的方式最大的好处就是可以适用于各种平台,但要确定系统gcc编译器的版本,编译Wine最好使用gcc 3.2.x 来编译。可以使用如下命令查看gcc的版本:
[root@localhost root]#gcc -v
同时,Wine的解压解包以及编译需要很大的空间,所以磁盘至少要有1000MB的空闲空间才够用;
Step1.将安装文件解压解包
[root@localhost root]# tar zxvf Wine-20040813.tar.gz
Step2.编译Wine
[root@localhost root]# cd wine-20040813/
[root@localhost wine-20040813]# ./configure --prefix=/usr/local/wine
提示:编译组态脚本configure的 -prefix参数是用来设定Wine的安装路径的,建议最好设定安装目录,这样会给后面的安装使用带来许多方便。
接下来,便会出现一大堆的检测信息,如果一切顺利的话,就会出现“Configure finished. Do 'make depend && make' to compile Wine”的信息,表示编译环境已经检查并设置成功,可以进行编译了!然后运行如下命令编译:
[root@localhost wine-20040813]# make depend && make
这时屏幕上便会出现大量的编译信息,编译时间与具体的硬件配置有关,一般需要半小时到1个小时不等。
Step3 编辑配置文件
由于指定了安装目录,所以还要编辑一下/etc/ld.so.conf文件。在该文件尾部添加/usr/local/wine/lib,保存后再运行ldconfig命令更新路径,最后再使用export命令将LD_LIBRARY_PATH导入即可。
[root@localhost root]#vi /etc/ld.so.conf
[root@localhost root]#ldconfig
[root@localhost root]#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/wine/lib
Step4 完成安装Wine
[root@localhost root]#make install
便可完成安装。
Step5 检验安装情况
只要运行如下命令便可检验Wine安装得是否正确:
[root@localhost root]# wine –version
Wine的配置
新版本一般无须设置,如果要设置的话,那就是Wine的路径:编辑.bashrc文件,加入如下一行:
[root@localhost root]#export PATH=$PATH:/usr/local/wine/bin
还有,如果想设置一个和Windows共享的分区,则只需建立一个链接,便可如同在Windows中使用磁盘一样,具体方法是:
[root@localhost root]#ln -s /mnt/win_d ~/.wine/dosdevices/d:
注意:Wine不会自动挂接该分区,需要自己手工挂接或配置自动挂接。
实战Wine运行Windows程序
EmEditor是Windows中一个十分受欢迎的编辑器,与vi等工具相比,它的界面友好性更加突出,不少Windows下的程序员都用它来写代码,“移民”到Linux平台后,他们也可以延续自己的这一使用习惯。
首先要有EmEditor中文版的安装文件eme328cs.exe。笔者为了安装方便,将它放到root目录下,然后运行如下命令安装EmEditor(见图2:EmEditor的安装):
[root@localhost root]#wine eme328cs.exe
稍等片刻就会出现熟悉的EmEditor安装界面,一路点“下一步“便可以完成安装。
虽然EmEditor会默认C:\Program Files\EmEdito为安装目录,但不需要挂接真正的Windows分区。在安装Wine的时候它会创建一个虚拟的Windows目录结构。
安装完成后便可自动运行EmEditor了,但你会发现输入汉字后无法显示,这是因为没有安装字体。解决这个问题很简单,挂接Windows分区后,找到Windows目录下的Fonts目录,将它复制到.wine/driver_c/Windows/fonts目录中,然后在EmEditor的设置中选择Simsun便可显示漂亮的汉字了。(见图3:让EmEditor显示漂亮的汉字)
使用EmEditor解决Linux乱码问题
目前许多Linux发行版本都存在这样的一个问题:在Linux中编辑的文档在Windows中打开就面目全非,显示为乱码,十分烦人。
如果在Linux中安装了EmEditor,就可以解决这个问题了:
将在Linux中编辑的文档使用EmEditor打开,然后选择“文件/另存为”,这时就会出现“另存为”对话框,在该对话框底部有两个选项,一个是文字编码,一个是换行方式。如果要想在Windows中取得较好的显示效果,这两个选项必须全部设置,具体设置方式是在文字编码中选择“简体中文(cp936)”,而在换行方式中选择“Windows换行方式”即可。
在Linux中安装运行WinRAR
WinRAR是一个常用的压缩解压程序,在Windows中普及程度颇高。虽然也有RAR for Linux版本,但它只是一个字符界面的命令集而已,远没有WinRAR使用起来方便、快捷。
安装了Wine以后我们便可以在Linux中使用图形界面的WinRAR了。
首先还是用WinRAR的安装文件将它复制到root目录之下。然后运行如下命令完成安装:
[root@localhost root]# wine wrar330sc.exe
成功安装(见图4:使用Wine安装WinRAR)后就可以使用WinRAR了。
到哪启动WinRAR呢?你可以到开始菜单中,打开Wine菜单,在子菜单中选择WinRAR。如果没有该子菜单项,则可以打开Konqueror,选择“查看→显示隐藏文件”,就可以看到 .Wine这个隐藏目录,进入该目录的driver_c,就能找到熟悉的Windows和Program Files目录。
找到WinRAR.exe,双击后就会弹出文件关联对话框。该对话框和Windows中的“运行”类似,在运行命令中加入Wine即可运行WinRAR。
小技巧:如果没有出现Wine的菜单也没有关系,你可以自己建一个快捷方式来方便运行。具体方法是打开WinRAR目录,选中WinRAR.exe,并将它拉到桌面,在弹出的菜单中选择链接即可。
使用Wine来运行小游戏
Wine对Flash的小游戏一向支持很好,可以使用Wine来运行那些打包成EXE格式或普通SWF格式的Flash小游戏或者其他的小游戏。具体的方式是使用Wine命令直接运行那些EXE格式的Flash 小游戏。下面笔者就以一个街机空战游戏为例来介绍一下Wine的使用,笔者下载的小游戏是一个自解压包,所以运行如下命令:
[root@localhost root]# wine scwin.exe
随后就出现了WinRAR的自解压对话框,在该对话框中有许多类似Windows的磁盘,如C盘、D盘等,为了方便,将它解压到根目录下的Games目录之下。然后就可以运行游戏了:
[root@localhost root]# cd /Games
[root@localhost Games]# wine scwin.exe
稍等片刻便出现了这个熟悉的空战游戏,快投入激烈的战斗吧!(见图5:在Linux玩街机空战游戏)。
Wine安装使用中的常见问题
1.Wine的汉字问题
采用GB18030为默认汉字编码,第一次运行Wine会提示如下问题,如何解决?
[root@localhost wine-20040813]# ./wine
fixme:nls:get_env_lcid charset GB18030 was not recognized
/root/.wine updated successfully.
fixme:nls:get_env_lcid charset GB18030 was not recognized
Wine 20040813
Usage: wine PROGRAM [ARGUMENTS...] Run the specified program
wine --help Display this help and exit
wine --version Output version information and exit
解决方法:编辑.bashrc文件,在该文件尾部添加如下两行:
export LANG=zh_CN.gb2312
export LC_ALL=zh_CN.2312
重新运行bash后敲入locale命令,默认的编码就会显示GB2312了,再次运行Wine就不会有上述问题。
使用Wine运行程序后,无法看到和输入中文,如何解决?
解决方法:在GBK或 GB2312 编码状态下可以输入中文,但如果没有进行默认编码设置,就无法输入中文。
按照上面的方法设置locale。还有就是如果没有中文字体也无法显示中文,自然也就看不见汉字。
2.Wine的运行问题
无法安装 Windows中由Installshield制作的安装程序,如何解决?
解决方法:要运行Installshield制作的安装程序需要安装支持文件DCOM98(DCOM95或其他支持文件),所以为了在 Linux中安装使用 Installshield 做的安装程序,必须要装DCOM98,下载地址:http://www.microsoft.com/com/dcom/dcom98/download.asp,然后再使用 wine dcom98.exe 命令来安装。
Wine对NTFS文件系统的支持如何?可以使用NTFS分区中的文件和程序吗?
解决方法:由于Linux内核默认不支持NTFS文件系统,即使重新编译内核支持 NTFS 也仅限于只读,如果要写的话,是十分危险的。所以最好不要在Linux中使用NTFS 分区上的程序和文件,建议使用 FAT32 文件系统分区或Linux分区。
如何知道哪些Windows程序可以在Wine中良好地运行?
解决方法:关于某个Windows应用程序是否可以在 Wine 下良好地运行,可以到Wine的应用程序数据库搜索搜索,Wine应用程序数据库地址为:http://appdb.winehq.com/。
配置Wine驱动器,需要将系统盘指向一个真实的Window系统分区吗?如果是这样又如何操作?
解决方法:不要将Wine配置文件中的[Driver X:] 指向一个存在的真实 Windows分区,只须使用Wine安装时创建 “虚拟”的Windows系统结构即可。
2.CrossOver Office篇
CodeWeavers 公司的CrossOver Office给大多数朋友的印象是一个Office产品,其实它跟办公软件一点边也不沾。
目前 CrossOver Office 的最新版本为 3.0.1,其支持的软件比2.1增加不少,如Authorware Web Player、Cortona VRML Client、Microsoft Project 2000和2002等,同时在稳定性上又有所提高。需要注意的是CrossOver Office虽然是基于Wine的,但它是商业软件。
CrossOver Office试用版下载网址:
http://www.codeweavers.com/site/products/download_trial/。
经过简单的注册后,便可收到发给你的下载登录名和序列号,使用它们便可以下载CrossOver Office的最新试用版。下载的CrossOver Office的安装文件为install-crossover-standard-demo-3.0.1.sh,大小为11.3MB。
CrossOver Office的安装
安装CrossOver Office十分简单:
Step1 为CrossOver Office的安装文件添加可执行权限:
[root@localhost root]# chmod u+x
install-crossover-standard-demo-3.0.1.sh
Step2 运行CrossOver Office的安装文件:
[root@localhost root]#./install-crossover-standard-demo-3.0.1.sh
随后就会出现图形化的安装界面。
Step3 首先要接受许可,选择“OK”按钮即可;
Step4 设定安装路径,通常采用默认的安装路径即可。
实战CrossOver Office
1.安装微软Office XP
Step1 选择开始菜单中的“CrossOver”下的“CrossOver Setup”选项来运行CrossOver Office 3.0.1。
使用CrossOver Office 安装软件时,最好能保持在线状态,因为它在安装某些软件时会下载一些库或者组件,例如安装微软Office XP时就要下载安装DCOM95。
Step2 启动CrossOver Setup后,稍等片刻就会弹出其安装主界面,单击其下方的“Install...”按钮便可开始Windows程序安装之旅。
Step3 在其界面的右侧列表框中会显示其支持良好的软件,有大家熟悉的微软Office97/2000/XP,还有Adobe Photoshop 6/7,这对于使用Linux的办公一族和平面设计师来说可真是太方便了。选中Photoshop或微软Office XP后便可单击“Next”按钮继续安装了。
Step4 接下来是选择安装方式了,CrossOver Office提供了光盘安装和硬盘安装两种方式,这里笔者选择从光盘安装,由于CrossOver Office默认的光盘挂接点为/mnt/cdrom,所以只须将软件安装光盘插入光驱,CrossOver Office便会自动挂接光驱并开始初始化,稍等片刻就会出现微软Office或Photoshop熟悉的安装界面,接下去的安装和在Windows中完全相同,这里就不再赘述了。
2.安装Micromedia三剑客:FlashMX、DreamweaverMX、FireworksMX
刚才介绍了比较简单的光盘安装软件,而硬盘安装在Windows中十分常用,在Linux下进行硬盘安装,首先要将三剑客软件的安装文件复制到硬盘,然后在上述的安装方式界面中选择Other *.exe files,然后找到软件安装文件,单击“Next”按钮即可开始安装!
3.Gedega游戏篇
Gedega就是原来的WineX,是Wine项目的一个分支,可以对DirectX 8.x以及DirectX 9提供良好的支持(图6:在Gedega中玩CS)。Gedega的主页为http://www.transgaming.com/,也是一个商业软件。
这里介绍的是稳定的3.3.2版本的使用(该版本对中文支持也比较好)。
首先通过以下地址下载:http://www.321211.net/TransGaming_WineX_v3.3.2.rar,用压缩包管理器将这个多重打包的文件解开,再解压pdxtgwx.001、pdxtgwx.002、pdxtgwx.003这3个文件。
打开终端进入winex3_3.3.2-1.i386.tar所在目录后输入以下命令直接回车安装:
#tar zxf winex3_3.3.2-1.i386.tar -C /
然后在终端中输入#winex3 /mnt/Disk/G/CS/cstrike.exe即可玩CS,若想以窗口模式运行,请在上述命令后加-w参数。但要根据情况更改路径。
其他游戏的运行方式请在终端中输入:
#winex3 路径\程序名 参数
4.豪杰兼容层篇
豪杰兼容层能够将原来在Windows平台下运行的各种应用软件完好地移植到Linux平台下运行。
首先到豪杰的网站下载关键安装包,然后执行如下操作
[root@localhost root]#unzip heroSP_linux.zip
[root@localhost root]#cd heroSP
[root@localhost heroSP]#chmod u+x HeroSP
[root@localhost heroSP]#./HeroSP
接着定位豪杰兼容层:在根目录下的安装目录herosoft中找到执行文件目录bin,其中的class就是兼容层了。
只须在终端中键入/herosoft/bin/class+PATH/*.exe文件即可运行之。
二、使用虚拟机间接运行Windows程序
上面的方法都是采用在Linux中直接运行的方式来运行Windows应用程序,对于Wine、CrossOver解决不了的应用程序,便可以使用虚拟机来解决。
1.VMware运行Windows及其程序
Vmware可以说是老牌的虚拟机了,下面就详细介绍一下其安装、配置和使用方法。
到http://www.vmware.com/download/workstation.html,经过简单注册便可下载该软件,然后用RPM命令安装:[root@localhost root]# rpm -ivh VMware-workstation-4.5.1-7568.i386.rpm
配置VMware
成功安装后,在虚拟终端中键入vmware,运行其中的vmware-config.pl,便可以开始配置VMware,配置过程都是以问题的方式给出,需要回答一些问题。下面就详细介绍一下VMware的配置。
当系统显示版权信息时输入yes接受,开始配置:
Step1 系统提示“your system (you need to have a C compiler installed on your system)? [yes]”时,选yes。
Step2 系统提示把vmmon模块编译进系统内核,键入yes并回车开始编译。
接下来一路回车,直到看到系统提示The module loads perfectly in the running kernel。
随后是一些询问设置过程的必要问题,下面就详细解释这几问题的回答:
Do you want networking for your virtual machines? (yes/no/help)
此问题是询问是否需要进行虚拟机的网络配置,当然回答yes了。
Do you want to be able to use NAT networking in your virtual machines?
此问题是询问VMware的NAT是否启用,通常选yes。
Do you want this program to probe for an unused private subnet? (yes/no/help)
此问题询问是否要搜索未使用的专用子网地址。键入yes即可。
Do you want to be able to use host-only networking in your virtual machines?
你要应用宿主网络到你的虚拟机吗?如果要与外网连接选择no。
后面的问题就简单多了,通常根据其提示回答即可完成配置。
运行VMware:
[root@localhost root]# vmware
启动VMware后,首先按F2键进入BIOS后选择Boot,将启动顺序改为从光盘启动,最后按F10键保存,然后便可将Windows的光盘插入光驱,启动后便可装Windows系统了。
需要注意的是VMware不支持DirectX,所以对于需要DirectX支持的游戏VMware就无能为力了。
2.使用Win4Lin运行Win9x程序
Win4Lin目前的最新版本为Win4Lin 5.0。它可以在Linux环境中安装运行Windows98/Me,虽然从Win4Lin 5开始基本支持DirectX,但还是会有不少游戏程序不能运行。
Win4Lin的下载地址:https://www.netraverse.com/。
Win4Lin的安装
Step1 使用tar命令解压解包:
[root@localhost Snapshot]# tar zxvf netraverse_installer5.tgz
Step2 运行安装文件,安装Win4Lin Desktop 5.0:
[root@localhost Snapshot]# cd netraverse_installer
[root@localhost netraverse_installer]# ./win4lin-install
Step3 运行上述命令后就会出现Win4Lin的图形化安装界面,安装比较简单,接受许可,一路Next即可。安装Win4Lin要在Internet网络环境下进行。
安装完成启动Win4Lin后,放入Windows光盘,一路“OK”下去就行了。拷贝安装文件完成后,注销超级用户root,然后再登录,进入系统后便可开始安装使用Windows及其应用程序(见图7:在Win4Lin中运行Windows 程序)。
3.使用Bochs安装Windows系统及应用程序
Bochs是一个x86硬件平台的虚拟机,它是开源免费的虚拟机,它几乎可以虚拟运行x86平台上所有的操作系统。连XBOX改机也义无反顾地选择了它。
最新Bochs下载地址为:http://bochs.sourceforge.net/cvs-snapshot/bochs-20040712.tar.gz,文件大小为3.5MB。
虚拟系统的下载地址:http://bochs.sourceforge.net/guestos/freedos-img.tar.gz
注意:测试镜像要下载到Bochs的安装目录并解压解包。
下载后执行以下操作:
Step1 解压解包Bochs:
[root@localhost root]# tar zxvf bochs-20040712.tar.gz
Step2 编译安装Bochs:
[root@localhost root]# cd bochs-1.4
[root@localhost bochs-1.4]#./configure --enable-sb16=linux --enable-pci –enable-cdrom –enable-ne2000
[root@localhost bochs-1.4]#make install
[root@localhost bochs-1.4]#make
在bochs目录解压freedos的镜像文件:
[root@localhost bochs-1.4]#tar zxvf freedos-img.tar.gz
[root@localhost bochs-1.4]#cd freedos-img
[root@localhost freedos-img]#bochs
现在就可启动Bochs虚拟机,进入DOS。
限于篇幅,如果大家要安装Windows,可以参照http://bochs.sourceforge.net/docs-html/guestNT.html安装NT的介绍来安装Win98或WinMe。
三、在特殊发行版本中运行Windows程序
与前两种方法相比,选择一个对Wine支持良好的Linux发行版本也不错。
1.使用红旗4.1桌面版运行Windows程序
即将推出的红旗桌面版 4.1将集成Wine,可以直接安装部分常用的Windows应用程序,例如IE浏览器、腾讯QQ(图8)。
目前红旗4.1的正式版本还没有发布,但可以下载其EA版先尝尝鲜。下载地址为:http://www.redflag-linux.com/xiazai/xiazai.php?id=1361,但遗憾的是EA版并没有集成Wine。
2.使用LinXP运行Windows应用
LinXP是深圳雷音软件公司推出的一个Linux发行版本,目前最新版本为 LinXP桌面3.0版,关于它的使用请参考第35期《电脑报》C9版的内容。
四、方案全面比较
比较一:直接法各个程序的比较
Wine、CrossOver Office以及Gedega它们设计的思想相同,都是通过实现Windows的API来实现在Linux中运行Windows程序,CrossOver Office专攻微软的办公软件以及常用的大型软件,而Gedega则专攻Windows游戏,对DirectX的支持也是最完善的。
比较二:间接法运行Windows程序的工具比较
VMware,Win4Lin和Bochs它们都是虚拟机,但Vmware是为Windows建立了一个虚拟的FAT文件系统,而Win4Lin使用的却是 Linux的EXT文件系统,这样效率高,资源消耗也比Vmware小得多。
Win4Lin只支持Win95、Win98及WinMe且对中文支持较差,VMware支持所有Windows版本。Bochs则是一个开放架构的自由分子,它支持的操作系统最多,基于x86的操作系统多数都支持,并且可以运行在多个平台之上,免费但使用起来过于专业让许多人望而生畏!
特殊发行版本法效果基本一样,看读者的喜好。
五、方案推荐
1.游戏玩家
对于游戏玩家,推荐Gedega+VMware,使用Gedega来对付DirectX8或DirectX9的游戏,VMware来收拾一般的游戏,技术不错的玩家完全可以使用Wine+VMware这个组合。
2.文员和平面设计师
文员和平面设计师推荐使用CrossOver Office。装了它,微软Office以及Photoshop就都可以在Linux中运行了,而且稳定。
3.普通用户和初学者
普通用户和初学者首选Wine或是配置好Wine的Linux系统,推荐使用红旗桌面版4.1正式版或是LinXP。
4.Linux爱好者
对于铁杆的Linux爱好者来说,Wine+Bochs是最好的选择,所有系统的软件基本上都能运行。
至此,Linux中运行Windows程序的话题就告一段落了,但笔者相信随着Linux的普及与技术的进步,软件平台问题不会成为Linux普及的障碍的,Linux的明天一定会更好!















