沟通无国界让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的明天一定会更好!