11.5. Running Windows Programs from Linux
If you are willing to make a monetary investment that will enable your Linux clients to run Windows applications, there are two popular and related methods to consider. Both methods run a Windows desktop session on a server that you connect to and control from a Linux desktop running the appropriate client software. This is similar to VNC on Windows as described in the previous section, but one of the major differences is that multiple Linux desktops, possibly several hundred, can connect to a single Windows server at a time. This is a perfect setup when you want to deploy Linux desktops but still need the ability to run one or more Windows programs in their native form. Nearly all programs should run flawlessly because they really are running on a Windows computer; it's simply their display output that's shown on the Linux machine. However, processor or memory-intensive applications should not be run in this fashion because a single program consuming most of the system's resources may ruin the experience for the users.
The minimum requirement for this kind of setup is a Windows server, preferably Windows Server 2003, that has Terminal Services enabled. Windows 2000 also has this ability built-in, but Windows NT requires the special Terminal Server version. On the Linux side, you can use a program called rdesktop, which speaks Microsoft's Remote Desktop Protocol (RDP), to connect to the Windows server and run a desktop session. Just like VNC, these sessions can run at full screen or inside a program window. It is possible to cut, copy, or paste text between the remote Window desktop and the local Linux desktop, but you can't drag and drop files. Beyond the cost for a Windows server and server license, you have to purchase a Terminal Services Client Access License for each user or machine that will connect to the Windows server. The rdesktop program isn't supported by anyone other than the open source community, so if you have problems using it, Microsoft won't help you. This is one reason you might want to consider the second method.
The second most popular way to run Windows applications on Linux uses a third-party application called Citrix Metaframe that runs on top of Windows Terminal Services. This program provides additional features not found in regular Terminal Services, such as concurrent licensing, server pooling, and a native Linux client that uses Citrix's thin client protocol known as ICA. Citrix licensing fees are on top of the ones that already exist for the first solution, but if the extra features are needed, the price is easily justified.
Setting up either server is beyond the scope of this book. However, if you want a quick test to see how well this works, you can use rdesktop to connect to a Windows XP Professional computer. Microsoft includes support for one remote desktop connection in Windows XP Professional to enable administrators to make a remote GUI connection for troubleshooting purposes. In most cases, this service is already running on the computer, and you simply need to install rdesktop on your Linux client and run a command, such as: rdesktop -g 800x600 IP address (where IP address is replaced with the actual address of the Windows computer) to connect to the Windows computer.