Cygwin: Changing the Face of Windows

Glueing together Cygwin's odds and ends to make life on your Linux-by-way-of-Windows desktop more comfortable.

I recently found myself working at a company that uses Windows as the
desktop environment. I was used to Linux, however, and wanted to have
that on my desktop instead. Should you find yourself, for one reason or another, working in a Windows
desktop environment but want to use Linux, Cygwin offers the
opportunity to do so. Cygwin is a dynamic link library (DLL) that acts as a Linux API
emulation layer. Included with the Cygwin suite are most of the common
Linux command-line tools and quite a few graphical applications,
giving you the look and feel of a Linux machine on top of your MS Windows box.
Cygwin provides substantial Linux functionality on all non-beta, non-Release
Candidate, x86, 32-bit versions of Windows, starting with Windows95. The
only exception is Windows CE.

Cygwin does not convert your Windows machine into a UNIX-compatible one,
however. Cygwin does not enable your computer to understand UNIX
signals, pseudo-terminals (PTYs) and such; it only provides mappings of UNIX
actions to the Windows platform. It is not a way to make native Linux
applications run on Windows. If you want an application to run on your
Windows workstation, and it is not yet a part of the Cygwin suite, you will have to compile the source.
If the application is a graphical one, another solution is to run the application
remotely by using X functionality. We discuss the set up for remote
display later in this article.

Installation

You can download the Cygwin tools freely from the
Cygwin Web site. Click on
the Install Cygwin Now icon, and save the setup.exe tool somewhere on
your hard disk. Then, double-click to install the Cygwin base configuration. You can either
install everything directly or download to a directory on your local
system and then install from that directory.

When the installation procedure asks to specify the root install directory, it
is best to change the default, C:\cygwin, to some other path. Doing so
keeps the Cygwin files separated from your native Windows files. There have been problems
of this sort in the past, and even though Cygwin developers are 99% sure that no
conflicts can happen anymore, it is wise not to take the risk. I installed Cygwin
in D:\cygwin.

You can install the Cygwin programs for your own use or for the entire
system. If you are not too deeply involved with development on Windows, select the UNIX
text file type. If you need text files from your Windows machine, in some cases
it is necessary to use DOS file types. In any case, the CYGWIN variable can be
set to specify explicitly the text file type that you want to work with,
should you need to switch file types at a later time. Compatibility with DOS
text files is built in to Cygwin. Details about this and other UNIX-to-Windows mapping
specifics can be found in the user guides on the Cygwin Web site.

Next, specify the package directory that should be used for downloading. With
Firefox installed on my machine, my directory was C:\Program Files\Mozilla Firefox by
default. To connect to the Internet, I had to pass an MS ISA proxy/firewall
server--Internet security and acceleration server--which runs on Windows and
does not agree with the normal standards. So I had setup.exe import the MS IE5
settings in order to download through the proxy server. This worked, at least
in part; I will explain more about the ISA proxy/firewall troubles later.

Usage of a mirror for this part of the download and installation process is required.
If you try to download directly from the Cygwin site you encounter errors, so select
a mirror near you.

A minimal installation requires the base packages, which include the
DLL, a bash shell, the coreutils, findutils, diffutils, documentation, libraries and a
couple of basic UNIX tools, such as tar and grep. Select these basic packages and
let the setup.exe tool do the rest.

The X Server

The X server was the most important component for me, because I wanted to be
able to do remote display. Unfortunately, the X server is not included in the
base package. I was able to install most packages using the setup.exe
tool, but my company's proxy/firewall settings prevented me from downloading
bigger packages, such as the 75 dpi fonts, with this method. I tried playing with the proxy settings
in the setup tool for a while, but to no avail. In the end, I manually
downloaded the necessary packages from the mirror to a local directory, using
HTTP in my browser, and instructed setup.exe to use that local repository.

After installing all the packages necessary for running X, you can start the
server from the bash shell using one of several methods: an MS-DOS batch
file, a shell script, the startx
command or a direct call to XWin.exe. Example batch files and scripts are included
in the Cygwin package. The batch file works the easiest, because it does a lot of
things for you, including starting an X terminal.

When the X server is started successfully, the X logo is displayed in the task
bar of your Windows desktop. From this moment on, your Windows workstation can display UNIX graphical
applications. To test it, log in to a UNIX or Linux host and run a simple and
small program, such as xclock or xlogo. When everything proves to work as it
should, you can start the applications you need.