Five ways to use Windows apps in Linux

February 1, 2007

1. Use an open source alternative instead

When someone asks me if they can run “Windows Application X” on Linux, the first thing I tell them is to look for an open source alternative. For most Windows applications, there will be a high-quality open source alternative that can meet their needs. The biggest hurdle for non-Linux people is simply knowing that these alternative exist and how to find them.

The best place I have found to search for these applications is at On that site, you can enter the name of the Windows application and it will list the open source alternatives that provide similar functionality. Be sure to check it out.

2. Buy a commercial product that was designed for Linux

If you cannot find an open source alternative, and you have not already purchased a Windows application, then you should consider purchasing a commercial product that was designed for Linux.

Here is a story of a civil engineer who wanted to find an open source replacement for AutoCAD. He tried several applications, but he could not find one that met all his requirements. So this engineer decided to use a commercial CAD application that was designed for Linux. He purchased a copy of “BricsCad“, which worked well for him AND it cost a lot less than AutoCAD.

3. Use Wine to run the application in Linux

If you cannot find a suitable open source alternative and you have already purchased a Windows application, then you might be able to run the application in Linux using Wine. Wine is a tool that simulates the Windows environment. Since I had already purchased a copy of Warcraft 3 for Windows, I have configured it to run on Linux using Wine.

However, your success with Wine will vary depending on the application. It is best to search the Wine Application Database to find out if your application will run well under Wine.

4. Run Windows in a Virtual Machine

Before virtualization was widely available, people would dual-boot their machine if they wanted access to both Windows and Linux. Whenever they needed to do something in the other operating system, they would have to close all their applications and reboot into the other operating system.

This time-consuming process can now be replaced by running Windows in a virtual machine on a Linux system. For instance, you can install the open source VirtualBox application which I have written a review about. Once that is installed, you can install Windows and Windows applications inside a virtual machine. Now you can use that virtual machine to have instant access to any of your Windows applications.

5. Run the application on a remote Windows system

The final way that you can run Windows applications is to run the application on a remote Windows system and control it from your local system. This is often called “Terminal Services“, which runs on a Windows server.

This method can be as simple as connecting to a Windows XP Pro workstation using rdesktop. However, you may have many Linux workstations that need to run Windows applications using this method. In that case, there are software options available that provide more scalability and features. The biggest name in this market is Citrix, but there are also others such as Propalms.

Here is a screenshot of Citrix providing Macromedia Dreamweaver, a Windows application, to my Ubuntu Linux desktop.


What to do if you NEED Internet Explorer

January 26, 2007

What do you do if you NEED to use Internet Explorer on your Linux system? Of course, nobody would WANT to use Internet Explorer on Linux but there are times when you need it to get your work done. This is a sad state of affairs, so remember to encourage your software vendors to always support open standards so that we can use the web browser of our choosing.

Fortunately, someone has made it very easy to run IE on Linux. The project is called IEs 4 Linux, which will run IE using Wine. If you read the IE license from Microsoft, you will learn that you should own a copy of Windows if you want to install IE. There is no way for IEs4Linux to know if you have a license, so it simply uses the honor system.

To install IEs4Linux on Ubuntu, you can follow these simple instructions. The script runs a simple text-based wizard, which offers you the choice of installing IE version 5.0, 5.5, or 6.0. If you hit “Enter” four times, it will install IE 6.0 with the Flash Player plugin. There are also several more plugins available that you can install with IEs4Linux.

Here is what the installation wizard looks like:

Once the wizard is completed, you should have an icon on your desktop which will start-up Internet Explorer. Here is a screenshot of me using IE to manage a Cisco MARS appliance, which requires IE. (Shame on them!) You can also see that I managed to successfully install the Google Toolbar for IE, although it is formatted a little awkward.

Using the Cisco console in Linux

January 24, 2007


People who work with Cisco network equipment need to be able to connect to the console port on their devices. In Windows, you can simply fire up HyperTerminal to get basic access to your devices. If you are using Linux, then you need to know how this can be done with an application called Minicom.


First, you are going to need a Cisco console cable, a Cisco device, and a computer. If your computer has a serial port, then you can use the standard console cable that comes with every Cisco device.

If you do not have a serial port (like most new laptops), then you need to purchase a USB to Serial adapter that supports Linux. This device will allow you to use the standard Cisco cable, which has a serial port on one end.

Install Minicom

You can easily install Minicom by using “System > Administration > Synaptic Package Manager”. Search for “minicom” and choose to install the package. Click “Apply” and Minicom should be installed within a few seconds.

Find the name of your serial port

The first thing you need to find out is which device your serial port is mapped to. The easiest way to do this is to connect the console cable to a running Cisco device. Now open up a Terminal using “Applications > Accessories > Terminal” and type this command:

dmesg | grep tty

The output will look something like this:

Look in this output for words that contain “tty”. In this case, it is “ttyS0”. That meas the name of the device the corresponds to your serial port is “ttyS0”. Now we are ready to configure Minicom to use this information.

Configure Minicom

Open a terminal using “Applications > Accessories > Terminal”. Now type this command to enter the configuration menu of Minicom:

sudo minicom -s

Use the keyboard arrow keys to select the menu item labeled “Serial Port Setup” and then hit “Enter”. This will open a window that looks similar to the one below:

Change your settings to match the ones in the picture above. Here is what I had to change:

  • Change the line speed (press E) to “9600”
  • Change the hardware flow control (press F) to “No”
  • Change the serial device (press A) to “/dev/ttyS0”
    • Be sure to use the device name that you learned in the previous step

Once your screen looks like mine, you can hit “Escape” to go back to the main menu. Next, you need to select “Save setup as dfl” and hit “Enter” to save these settings to the default profile. Then select “Exit Minicom” to exit Minicom… 😉

To find out if you have configured Minicom correctly, type this command in the terminal:

sudo minicom

After entering your Ubuntu user password, you should be connected to your Cisco device.

Note: You may want to delete the Minicom init string if you see a bunch of gibberish every time you connect to a device. To do this, enter Minicom configuration with:

sudo minicom -s

Then select “Modem and dialing”. Press “A” to edit the Init string, and delete all characters so that it becomes empty. Make sure you save this to the default profile with “Save setup as dfl”. You should no longer see gibberish when you connect to devices.

Create a desktop launcher

If you want to have quicker access to Minicom, you can create a desktop launcher.

  1. Right-click on the desktop and choose “Create launcher”
  2. Click on “Icon” and choose the picture you want to use
  3. Use the “Type” pull-down menu and select “Application in terminal”
  4. Create a name like “Cisco Console” in the field labeled “Name”
  5. Enter this command into the field labeled “Command”
    • sudo minicom
  6. Hit “OK” and your desktop launcher is ready for you to use.

The life of a front-page Digg

January 24, 2007

I was recently surprised and blessed with a post that reached the front-page of Digg. This means that the post must be good, so you should read it.

I had never really paid attention to Digg before this. I knew what it was, but I didn’t really understand how the process worked, or how much traffic it could drive to my site. The best information that I have found about how Digg works is this article and of course the Wikipedia entry for Digg. The main concept about Digg is that it uses tens of thousands of internet surfers to decide how good a story is. It is easy to search through these submitted stories and decide if you think a story is worth your “Digg”.

Here is a screenshot of my post just as it was about to fall off the front page of Digg.

Here is a graph of traffic to my blog website. As you can see, I went from about 100 visitors a day to over 10,000 visitors on the day of the Digg front-page. Then there is a quickly dwindling amount of visitors following the big day.

After seeing the amount of traffic that Digg could bring to my site, I almost immediately decided to sign-up for Google Adsense. My goal with advertising is to pay for one meal at my favorite mexican restaurant each month. However, it looks like this goal is a little optimistic.

In the past week since I started advertising, I have made $0.23 from Google. If I can just write better posts, perhaps I can get this up to $2.00 a week? That would pay for the meal, but since Google does not send the money until I have made $100, it could be a while before I get my smothered pork burrito at Cafe Rio.

I can honestly say that I am now a Digg addict. Watching my posts go through the Digg life-cycle is almost like watching the stock market in real-time. Will this post be the next big one? Will it make it to the front-page of Digg, or (more likely) will it not gather enough momentum and sink into obscurity?

Open source replacement for VMware

January 18, 2007

No, I’m not talking about Xen

You probably thought that this post was going to be about Xen, which is an excellent piece of virtualization software. Instead, I am going to share with you a newcomer into the field of open source virtualization. On January 15th, InnoTek announced the release of VirtualBox under the GPL license. Lets take a closer look at what this product does.

VirtualBox has a similar feature set to VMware Workstation (~$200). You can use it to create virtual machines and run many different operating systems within the virtual machine. VirtualBox can be installed on Windows or Linux, and it supports many different operating systems as guests inside the virtual machine. VirtualBox also supports creating multiple snapshots of your virtual machines, which is a feature that is missing in the free VMware Player.

By asking around in VirtualBox IRC channel, I learned that VirtualBox was built using some code from the Qemu project. If you have more questions about this, you can read about it in the Developer FAQ.

Installing VirtualBox

Before you install this application, you must first enable the Universe repository (you can do this using “System > Administration > Software Sources”). To install VirtualBox on Ubuntu, simply download the appropriate .deb file from the VirtualBox website. For me, I used the file named “VirtualBox_1.3.2_Ubuntu_Edgy_x86.deb” since I was going to install it on Ubuntu 6.10 (Edgy).

Once the file is downloaded, choose to “Open” it with the default application. This will install the application on your system, and you will have a new entry in “Applications > System Tools > Innotek VirtualBox”.

Before you run this for the first time, you need to add your user to a new group that was created during the package installation. You can do this from “System > Administration > Users and Groups”. Choose “Manage Groups”, select the group labeled “vboxusers”, and click on “Properties”. Now put a check box next to your username. See the diagram below to see how I did this on my system.

If you do not do this before you run VirtualBox, you will get an error message that is described in the User FAQ. You will then need to re-login to Ubuntu after adding yourself to that group.

Using VirtualBox

Here is a beautiful screenshot of running Ubuntu 6.10 on Ubuntu 6.10 using VirtualBox. This was also my feable attempt at artistic recursion: A screenshot of someone taking a screenshot.


VirtualBox is very new to the open source world. One of the benefits of offering software as open source is that you get a large population of users to test and evaluate your product. This should help VirtualBox become more stable, as I ran into a few problems when using it.

For instance, I was not able to install the “Herd 2” alpha-release of Fiesty. The LiveCD booted fine, but during the install wizard the graphics became garbled and I couldn’t see enough to complete the wizard. Another time, the virtual machine crashed while downloading updates for Ubuntu.


Keep your eyes on VirtualBox. The software is currently very usable, except for a few problems in stability. I am hoping that they will quickly correct these issues and become a real competitor in the virtualization market. If this happens, I am going to stop using free software from VMware, and start using open source software from VirtualBox.

Ubuntu beats OpenSuse: Upgrading Versions

January 15, 2007

Take a look at this warning on the OpenSuse website:

Warning: Updating from one version to another is unsupported and may result in system inconsistencies. Performing distribution upgrades in the running system increases the risk of causing damage.

If you ask me, not being able to upgrade my operating system is major problem. Fedora also appears to have sub-par support for upgrading from one version to the next. Take a look at this warning on the Fedora wiki:

Although upgrades with yum have been tested and work, live upgrades are not recommended by the Fedora Project. If you are not prepared to resolve issues on your own if things break, you should probably use the recommend installation methods instead. With a typical installation, this method usually works well, but it can break third-party packages not available in the Fedora repositories. Please search the mailing list archives first if you run into problems.

Based on the information on that page, it appears that upgrading Fedora can be simple, but it is definitely not recommended. While this is not as bad as the Suse warning above, I would still be nervous to upgrade Fedora.

For comparison, you can read on the Ubuntu wiki about how easy it is to upgrade to a new version of Ubuntu. Anyone got a testimonial about your experience with upgrading an operating system?

How to mount Novell network drives

January 11, 2007

One of the major requirements for running Ubuntu at work is that I need to be able to access our department network drives on Novell Netware servers. I thought this was going to be a difficult procedure, but as you will soon learn it is not hard at all.

Novell Netware servers use the NCP protocol to provide network shares. Therefore, an NCP client is needed to connect to these network drives. The NCP client for Linux is called “ncpfs“, which is available in the Universe repository for Ubuntu. Here are the steps it takes to access your Novell network drives.

Enable the “Universe” repository

  1. Click on “System>Administration>Software Sources”
  2. Check this box: “Community maintained Open Source (universe)”
  3. Click on “Close” and let the system update the software catalog

Use Synaptic to install “ncpfs”

  1. Click on “System>Administration>Synaptic Package Manager”
  2. Search for “ncpfs”
  3. Choose to install “ncpfs”
  4. Click on “Apply” and allow it to install any required dependencies

Create a directory that will become the network drive

  1. Create a new directory called “novell”
    • Click on: “Applications>Accessories>Terminal”
    • Run this command: “sudo mkdir /mnt/novell”
  2. Change permissions so that your user can access it
    • Run this command: “sudo chown yourusername:yourusername /mnt/novell”
      • Be sure to use your actual username on the Linux system
  3. Create a link so the folder will be available on your desktop
    • Run this command: “ln -s /mnt/novell/ /home/yourusername/Desktop/novell”
      • Be sure to use your actual username on the Linux system

Create a desktop launcher to mount the drive

  1. Right-click on the desktop and choose “Create launcher”
  2. Click on “Icon” and choose the picture of the green apple. (Green is for GO)
  3. Click on the “Command” tab and select “Application in terminal”
  4. Paste this command into the field labeled “Command”
    • ncpmount -S yourservername -A yourservernamefqdn -U novellusername -V volumename -u linuxusername /mnt/novell/
    • (Be sure to edit each of the fields with your information)

Create a desktop launcher to unmount the drive

  1. Right-click on the desktop and choose “Create launcher”
  2. Click on “Icon” and choose the picture of the red apple. (Red is for STOP)
  3. Click on the “Command” tab and select “Application in terminal”
  4. Paste this command into the field labeled “Command”
    • ncpumount /mnt/novell/

When you are done, you should have two icons that look something like this:

To mount the drive, simply double-click on the green apple (GO) and a terminal will open up and ask you for your password. Once you have typed the password and hit “Enter”, the network drive will be mounted. To unmount the drive, simply double-click the red apple (STOP).

Note: I have posted these instructions to the Ubuntu Wiki.
Credit: I got some of this information from this post by Todd Slater.

What it takes to make Ubuntu ready for use

January 11, 2007

I recently installed Ubuntu 6.10 on a new PC at work. In this post I will document all the steps I had to perform to get it ready for everyday use. Each step is assigned a level of difficulty, which I define below:

Very Easy

  • Step can be completed without using the command prompt
  • Intuitive to complete


  • Step can be completed without using the command prompt
  • May require searching to find the right place to make the change


  • Requires a single command to be entered at the command prompt
  • Requires searching internet resources to find the solution


  • Requires multiple commands to be entered at the command prompt
  • Requires searching internet resources to find the solution

Very Hard

  • Requires multiple commands to be entered at the command prompt
  • Requires searching internet resources to find the solution
  • Requires the user to manually edit a configuration file

These criteria are quite strict, because I believe that using an operating system should be intuitive, and not require any specialized knowledge. With that in mind, let me share with you the steps I performed to get Ubuntu setup ready for me to be productive with it.

1. Install Ubuntu

  • Difficulty Level: Very Easy
  • Description:
    • Ubuntu has one of the easiest install procedures of any operating system. I simply booted to the LiveCD, clicked on the “Install” icon and followed the simple wizard. It only took about 15 minutes to complete the install. You can even surf the net while the operating system is being installed.
  • How it can be improved?:
    • I think it would be a good idea to show a few simple tutorials to the user while Ubuntu is being installed to the hard drive. Use this time to answer some of the most commonly asked questions about Ubuntu. This can be as simple as a slide-show with text and background music, or perhaps a flash video with audio.

2. Enable additional software sources

  • Difficulty Level: Easy
  • Description:
    • The universe, restricted, and backports repositories are an essential part of Ubuntu. By enabling these sources, I am allowing Ubuntu to take advantage of one of its greatest assets. There are now are over 20,000 software packages available that can easily be installed with a few clicks.
  • How it can be improved?:
    • Currently, you can enable these sources via “System>Administration>Software Sources”, or you can let the sources be automatically enabled when you install an application that requires them. There is a specification that proposes that these additional software sources be included by default, and I agree.

3. Install proprietary graphics drivers (Nvidia)

  • Difficulty Level: Medium
  • Description:
    • This step required me to search the internet and follow these instructions that I found on the Ubuntu wiki. The steps included typing a command at the command prompt.
  • How it can be improved?:
    • Steps are already being taken to include these drivers in future versions of Ubuntu. To learn more, read the specification named “Accelerated X“.

4. Configure Ubuntu to use my dual-monitor setup

  • Difficulty Level: Very Hard
  • Description:
    • I have two monitors that I would like to use with Ubuntu. By default, only one screen comes up and the other is blank. I searched for an easy way to configure dual-monitors in Ubuntu, but it doesn’t appear that one exists. I had to manually edit the xorg.conf file just to use a second monitor.
  • How it can be improved?:

5. Install additional multimedia codecs

  • Difficulty Level: Medium
  • Description:
    • Much of the multimedia content available on the internet is encoded in a format that Ubuntu cannot use without installing extra packages. I had to search the internet to find the RestrictedFormats wiki page which shows how to enable support for many additional types of media.
  • How it can be improved?:

6. Install common applications (Add/Remove Applications)

  • Difficulty Level: Very Easy
  • Description:
    • The “Add/Remove Applications” tool is very well designed and easy to use.
  • How it can be improved?:
    • This tool is great, it just needs a bigger selection of applications. How does Ubuntu decide which packages will be in “Add/Remove”, and which ones are only available in Synaptic?

7. Install less common applications (Synaptic Package Manager)

  • Difficulty Level: Easy
  • Description:
    • If I cannot find my application in “Add/Remove Applications”, then I use “Synaptic Package Manager” to install it. Synaptic is a great tool, but it is not as easy to use as the “Add/Remove” tool.
  • How it can be improved?:
    • Provide more packages through the “Add/Remove Applications” interface.

8. Configure my email, calender, and messaging client

  • Difficulty Level: Easy
  • Description:
    • At work we are a Novell shop, so I needed to connect to our Groupwise servers to get my email, calender, and messenger service. Fortunately, there is native support for this in Ubuntu. I configured Evolution to display my email and calender, and I configured GAIM to connect to the Groupwise Messenger service.
  • How it can be improved?:
    • For the most part, everything mentioned above just works. I have discovered that I cannot join some types of chat rooms in GAIM, which I hope is corrected in a future version.

9. Mount my Novell Netware network drives

  • Difficulty Level: Medium
  • Description:
    • I thought this step would be harder, but it turns out that it only takes a few short steps to access your Novell network drives.
  • How it can be improved?:
    • I would like to see support for Novell network drives added to the “Places>Connect to Server” tool. Based on how easy it is to mount Novell drives, I assume that it would be easy to add this functionality. I feel that it would be a great win for Ubuntu to be able to say that it natively supports connecting to Novell network drives.

10. Install a Windows game (Warcraft 3)

  • Difficulty Level: Hard
  • Description:
    • While Linux has some great games available, an Ubuntu user may want to play a Windows game that they have already purchased. Wine allows many applications to run in Linux, but it is unpredictable and requires a few steps to get working. Warcraft 3 is rated “Gold”, but I still had to follow this tutorial to get it working. The steps included installing Wine, running “winecfg” to configure my drives and OS type, and creating a desktop launcher to start the game.
  • How it can be improved?:
    • Wine is getting better with every release, but you still need to research each application to see if it is supported. If it is supported, it will take a few steps to get Wine setup for it.

Overall, this process was not very hard, especially if you consider how far Linux has come in the past few years. Once I completed the steps described above, my computer was ready for me to use. Based on the specifications for Feisty, the next version of Ubuntu will require even less work to get going. You can be sure that I will create a similar post about that version and share my experiences.

World Domination 201: A review

January 9, 2007

Eric S. Raymond and Rob Landley have written an interesting paper called “World Domination 201“. The main idea of this paper is that the entrance of 64-bit processors will force a new operating system to be adopted, which provides a unique opportunity for Linux to become the dominate operating system.

Their conclusion is based on this theory: An operating system will become obsolete when low-end computers are sold with more memory than the operating system can support.

Here is how this transition has happened before:

8-bit processors

  • Dates: 1975-1984 (9 years)
  • Supported Memory: 64 kilobytes
  • Dominate Operating System: BASIC

16-bit processors

  • Dates: 1981-1990 (9 years)
  • Supported Memory: 1 megabyte
  • Dominate Operating System: DOS

32-bit processors

  • Dates: 1987-2008 (21 years)
  • Supported Memory: 4 gigabytes
  • Dominate Operating System: Windows

64-bit processors

  • Dates: 2008-???
  • Supported Memory: 1 terabyte
  • Dominate Operating System: Linux, OS X, or Windows Vista

Historically, the transition to the new operating system occurs around three years after the new hardware was introduced. Since 64-bit processors were first introduced in 2005, this means that the new 64-bit OS will be determined by the end of 2008.

They list these factors as requirements for Linux to succeed:

  • Drivers for all major existing hardware
    • “When it comes to crossing the 32- to 64-bit divide, device driver support is where Linux has its biggest practical advantage over both Microsoft and Apple.”

  • 32-bit legacy platform emulation
    • “Linux needs a Wine 1.0 release, installed and preconfigured on desktop distributions.”

  • Surviving the killer app
    • “As of yet, there is no killer app for Linux, nor for 64-bit hardware.”

  • Enabling preinstalls
    • “To attract enough non-technical end users to make the hardware vendors care about us, we need Linux to come preinstalled on PCs in a configuration that just works.”

  • Support for all major multimedia formats
    • “Idealism about open formats will not solve our multimedia problem in time; in fact, getting stuck on either belief in the technical superiority of open source or free-software purism guarantees we will lose.”

The authors spend some time exploring the solutions to that last point. They describe six possible approaches to dealing with proprietary codecs:

  1. Do without.

  2. Unload the problem on individual users.

  3. Reverse-engineer all codecs for which deployment is legally possible (e.g. not blocked by patents or the DMCA).

  4. Press for delivery in open formats.

  5. Get closed source binaries that are “free as in beer”.

  6. Pay to license codecs, per-copy.

Overall, it is an interesting read. I think the points he make are valid, and the premise of hardware forcing a software upgrade is historically accurate. I believe that Ubuntu is heading the right direction and is poised to be the next major operating system on 64-bit hardware.

Ubuntu beats Fedora: Long-term support

January 1, 2007

The Fedora Legacy Project is shutting down. The goal of the Fedora Legacy Project was to provide security and critical bug fix errata packages for Fedora Core distributions in maintenance mode. Fedora users can no longer get support for releases older than Fedora Core 5, which was released in March, 2006. If you installed Fedora more than 9 months ago, then you need to upgrade if you want to get security updates.

People who use Linux, especially in commercial deployments, need to know that they can get security updates for a reasonable amount time. The Fedora Legacy Project provided an important service, but it was only sponsored by volunteers in the Fedora community. Red Hat decided not to provide this support, mainly because they wanted to encourage people to purchase their “Enterprise Linux” product. To illustrate Red Hat’s position on this, you should read the answer to this question on the Fedora FAQ:

Why should I pay for Red Hat Enterprise Linux when Fedora is free? What is the relationship between Fedora and Red Hat Enterprise Linux?

I can understand Red Hat trying to increase sales of their products, but this is just irresponsible. Red Hat is using the Fedora community as a testing and development environment for their products. Red Hat benefits from Fedora community contributions, and they get an excellent marketing and sales vehicle to potential customers.

The lack of long-term support in Fedora is contrasted by the solid and predictable support that Ubuntu releases provide. I have posted before about Ubuntu’s amazing release schedule. Most Ubuntu releases get 1.5 years of support, but periodically there will be a LTS (long-term-support) version that provides 3 years of desktop support and 5 years of server support.

It is likely that the Fedora Legacy Project will be replaced with a similar entity that provides long-term support for Fedora releases. Let’s hope that Red Hat steps up to the plate and invests resources to make this happen.

Update: Christer pointed out that there will be a similar situation with Ubuntu support. Ubuntu 5.10 is supported for 1.5 years (18 months) which ends in April 2007. If you installed Ubuntu 5.10 in July 2006 (right before Ubuntu 6.06 came out) then you would only get 10 months of support. For all other releases, the minimum amount of support is 12 months if you install a version the day before a new version comes out.

The main point of this post is still true: The future of legacy support for Fedora is now unknown, and Red Hat should spend resources to make this happen.