Make your own free website on

Windows vs Linux: Linux Introductory User Guide

By Marcel Lambert. Last Revised: March 28, 2009.

My personal and original primary motivation to use Linux was internet security factor and, despite the fact that Linux and Windows are different operation systems, I see them as unified operational environment since virtually any activity, task, feature has its counterpart in another system. These Linux topics (Fedora - Red Hat 9 features) have purpose to see Linux and Windows features side-by-side and intended for those who are flexible with Windows, but who are new to Linux, or any Unix-like operation system. The article(s) is a collection of pieces that might be useful as reference since, unlike Windows, Linux is more demanding to configuration details. If you find this guide useful please tell 3 more people about it!

Several Notes About Topics Selection

  • The key Linux programs, actions, concepts are general for all Linux flavors (Linux is more about kernel version than its flavor). Therefore the topics are generally valid for Linux kernels 2.4-2.6.
  • With Linux you should not expect that you can avoid using command line tools. Many programs require individual configuration and tuning with console even if you use programs from installation CD/DVD only. Furthermore, virtually any online discussion of Linux programs cites console commands. The statement of some novice Linux proponents that Linux does not require the use of command line tools is misleading. Moreover in many instances the use of console, which far surpasses its Windows counterpart, is more ergonomic comparing to UI-enabled programs.
  • I started making notes starting with Red Hat 9 release, and I'm updating the topics with Fedora essential features, which are referenced in footnotes when they are different or new. The important point is that the key features are sustained. For example, the same Xine (DVD video player) source package can be installed on any version from Red Hat 9 to Fedora 7..10 (at least).
  • As a matter of personal preference I use KDE desktop. Albeit I reference major GNOME programs, the screenshots are taken from KDE desktop.
  • Root user symbol (#) in opposite to regular user symbol ($) is used for all referenced commands. This is used for simplicity, and does not mean generally that root access is mandatory.
  • Rarely used programs and topics are shown in yellow.

Standard Windows Actions and their Linux Counterparts

Use CD-ROM (DVD-ROM) or floppy. Under Windows no extra work is required after these devices were physically attached to a machine, and were configured (if required) with plug-and-play.If you are new to Linux, you tend to expect that by calling Linux file manager, e.g. Konqueror (konqueror), and pointing to CD-ROM in its Location drop-down control (/mnt/cdrom), you would see CD or DVD content much like with Windows, where you can use Windows Explorer (explorer), point to CD-ROM in its Address bar to accomplish the same simple thing! Not with Linux typically.

From the user perspective, by default, Linux works with devices like CD-ROM (DVD-ROM), floppy drive in a slightly different way. By default you need to mount a device manually before using it, and unmount a device before you can get the media like DVD disk back from the device.

The following are the simple steps to use CD or DVD:

  • Insert CD into the CD-ROM.
  • Launch KDiskFree (kdf) that provides a UI for mounting/unmounting devices.
  • Locate a record with device name /dev/cdrom (normally it has a CD-ROM icon on the left) and right-click on the record.
  • Select Mount Device.
By now, you can use CD-ROM as you accustomed to do it under Windows. If File Manager is already opened, type /mnt/cdrom for CD-ROM location or launch File Manager from KDiskFree by selecting "Open in File Manager" from the right-click menu. In the last case, File Manager opens CD-ROM directly.

When getting CD back from the CD-ROM, you may wander: "Why do I press CD-ROM's eject button and it does not really open CD-ROM?" As said, the reason is that you need to unmount a device before getting the media back. You can use KDiskFree UI and pickup Unmount Device, and then eject CD as you would do under Windows.

Notice that you can work with devices from console program like konsole (instead of UI-enabled kdf). For example (the commands are valid for floppy and other removable media also):

  • Mount CD-ROM: # mount /mnt/cdrom
  • Unmount CD-ROM: # unmount /mnt/cdrom
  • Eject CD (or DVD): # eject (with no parameters CD-ROM media is ejected)

On the first sight, Linux steps for working with CD-ROM might seem cumbersome and even bizarre. However, the system is more protected (I'm not sure this was an original design idea). It bars unqualified users from playing with the system and loading into the system arbitrary and virus-carrying media. Nevertheless, you can always automate mounting/unmounting devices so that Linux would be working with them as Windows does.

Install programIn the most cases double click on setup program is all you need to install a program under Windows.

  • Windows itself does not enable you to see program dependences (you may opt to use third-party depends). To see package dependences under Linux type:

    # rpm -q --whatrequires samba
  • There is no way to have a list of files a program installs unless a program developer provided setup option to print it out. With Linux, on the other hand, you can see the files that comes with installed package at any time:

    # rpm -ql kdeedu
  • There is no standard way to see what registry settings and initialization files come with installed program. As long as program developer complies with Microsoft conventions for location of program registry entries, an experinced user can look into specific registry hive such as HKLM\SOFTWARE\<company_name>\<application_name>. On the contrary with Linux, which has only plain text configuration files instead of Windows registry and initialization files, a user can see where program persistent values are stored by typing in command prompt:

    # rpm -qc samba

Comparing to Windows, the installation of programs under Linux requires frequently more steps, specific knowledge about a program, and potentially more troublesome. The requirements that are used by Linux developers to make release for a program are still less rigid then under Windows. Actually Linux users are still forced to know specifics of installing of broad set of Linux programs. This is for sure one of the major explanations why Linux is still not so popular and widespread as Windows.

There are two types of Linux installation packages: binary (*.rpm) and source (mostly *.tar.bz2 and *.tar.gz). The information about RPM packages (RPM stands for Red Hat Package Manager) is stored in RPM database making it possible to check availability of packages, and obtain detailed information about them. The package manager makes it easy not only to install packages, but also update, and delete them. Importantly, the same operations with source packages are limited.

The use of binary packages is frequently preferrable option (most of us don't need the source for every package). It is typical to use konsole to install binary packages. While installing a package you can see debugging information about possible errors in its window:

# rpm -i <packagename>.rpm

Notice that it is handy to type # rpm -i plus space and then drag-and-drop RPM package into console area: the konsole will show quoted package name plus its path saving your typing efforts.

Alternatively, when installing stantard Linux program, you can use Add/Remove Applications package manager redhat-config-packages Fedora 7, 1 (similar to Add/Remove Programs in Windows). This UI-enabled program enables you to browse information about available packages (names, groups, short descriptions), and helpful if you are new to Linux.


  • Suppose, you know the name of a package kdeedu, which includes educational programs like ktouch (typing teacher), kstars (sky star map) etc, and want to check if the package is installed. Than run the command:

    # rpm -qi kdeedu

    To obtain merely short (yes/no) information about package availability:

    # rpm -qa kdeedu

    Note: the first command is preferrable since you get with the same command the detailed information about a package if the package installed.

  • Suppose, you unsure or remember only a part of a package name (like edu) and want to check if the package installed.

    # rpm -qa | grep edu

    Note: grep is a standard search program that looks for a string in a file name.

  • Suppose, you know the name of the program itself like ktouch and want to figure out what package ktouch belongs to:

    # rpm -qf $(which ktouch) kdeedu-3.1-2

    Note: since rpm with -qf argument requires full path to the program and frequently you only know the program name, the command uses the result of which program, which returns path to touch program (the use of results of other command is indicated with "$" symbol). This is a one-line short variant of # rpm -qf /usr/bin/ktouch or, more realistically, 2-stepped procedure:

    # type ktouch

    # rpm -qf /usr/bin/ktouch

  • Show all installed packages:

    # rpm -qa

For some programs and specific Linux distributions (and versions), RPM packages are hard to find. This is frequently the case for third-party programs that are not included into the standard Linux distribution. In this case you should download source package (typically *.tar.bz2 or .tar.gz) and compile from the source. Although there are variations of install procedure, you'd typically:

  • Copy source package into /usr/local (this is typically the place where custom packages are installed).
  • Uncompress and unarchive the package:

    # bzip2 -d <packagename>.bz2 (or gzip -d <packagename>.gz)

    # tar xvf <packagename>.tar

    At this point the package directory is created under /usr/local and you can delete <packagename>.tar.

  • Go to the package directory and open konsole window for it (right-click and choose "Open Terminal Here").
  • Run # ./configure
  • Run # make
  • Run # make install

The ./configure, make, make install sequence is the Linux idiom (worth memorizing) for installing packages from source. The right sequence can differ, for example when installing Xine (DVD player), you need to run ./configure, and make install (without intermediate make). Anyway, you should consult always package installation instrustions (frequently INSTALL file) to know what commands to use.

As said before, you have less flexibility when you need to check information about installed source packages, update, or delete them than with binary (RPM) packages. There are several tips:

  • Install custom packages into /usr/local (or other directory for custom packages). You can check later easily what packages you've installed, and perform other operations.
  • If you know the program name you can check if the package was installed and install directory (in one pass) with which command, and make fast search for files and directories, which include program name with locate.


  • Check if DVD player (xine) is installed and know its installation directory:

    # which xine

    Notice that which is intended first of all to figure out the location of an executable file.

  • Check if DVD player (xine) is installed and know files and directories associated with it:

    # locate xine

    Notice that locate is intended first of all for quick search of file location.

Uninstall program  

In most cases, it is sufficient to run:

# rpm -e <packagename>

If the package has dependencies, you can use --nodeps option to forcefully remove the package regardless it has dependencies or not:

# rpm -e --nodeps <packagename>


You'd like to remove Mozilla internet browser (you're upgrading to FireFox) and run # rpm -e mozilla. In the result, you'd see the message that mozilla package is requied by mozilla-psm. To force (bypass dependencies check) removal of mozilla package, run:

# rpm -e mozilla

Note: you can use Add/Remove Applications program (redhat-config-packages Fedora 7, 1) for packages included into Linux disribution (third-party packages are not get listed by this program). The downside of using redhat-config-packages is that it is simply not ergonomic (it takes about 1/2 minute on my machine for this program to read RPM database and be ready for use, still you need to navigate to proper software section, and find out the program to remove from this section).

Zip/Unzip a fileUse third-party WinZip program.

  • WinZip does not preserve a directory structure. In the result, when you view ZIP file with WinZip, you'd see plain list of files from all directories added to archive. What if you want to see files in archive along with directories as if it were source location? WinZip does not allow it, albeit when you unzip archive the initial directory structure will be re-created. Nevertherless, there is a walkaround: WinZip directories into separate ZIP-files, and then place these zips into a new ZIP file. Notice that under Linux these operations are made clearly separate: e.g. tar is used for preserving directory structure and gzip is used to compress. In the result, distributed Linux files have 2 extentions (see right section).
  • Basic WinZip operations are integrated into Windows XP.
  • WinRAR, another third-party windows archiving program, preserves directory structure. Interestingly, WinRAR lets browse on Windows (and make standard operations) not only Windows archives, but also Linux archives such as *.tar.gz, *.tar.bz2 etc.

For a longtime Windows user new to Linux the work with archive files can be a source of confusion. Indeed, unlike WinZip's ZIP archives in Windows, Linux archives have typically 2 extentions. Why? Before going into little details, the answer is that WinZip hides 2 operations during zipping/unzipping files, making it look as one operation.

In Linux, the standard way to package files into archive consists of 2 steps:

  • Package files into archive ("uncompressed archive") preserving their directory structure.
  • Compress archive with a separate program.
In the result, many Linux distributed files have two extentions like <filename>.tar.gz, <filename>.tar.bz2 etc. However you can work with ZIP archives, which mostly come due to Windows-Linux interaction, in Linux too.


The UI-enabled Ark archiving tool (ark) or File Roller (file-roller) enables you to work with ZIP archives including those created with WinZip in Windows. The disadvantage of ark is that it does not allow you to set a password for ZIP file. You can use file-roller for this purpose.

Note: The Ark and File Roller are frontends to command-line utilities: zip/unzip, tar, gzip, bzip2, compress etc. What utilities are used factually depends on archive type you choose when creating an archive, for example: *.zip (archive and compress with zip), *.tar.gz (archive with tar, compresse with gzip), *.tar.bz2 (archive with tar, compress with bzip2), *tar.Z (archive with tar, compress with compress).


Albeit you can use ark and file-roller programs to uncompress/unarchive files like *.tar.gz, *tar.bzip2 and unzip *.zip files (unzip uses uncomressing and unarchieving internally), it it typical (and more convenient) in Linux to make these operations in console program.

In practice, when unzipping a file using console, you can drag/drop a file into its area. It is handy because you don't need to provide exact path for yourself if console is not opened in the directory where the archive is located. Notice that Linux automatically adds single quotes to path.


  • Unzip and unarcive archive, which is in the current directory (copy/paste file name to console):

    # bzip2 -d kdevelop-3.1.1.tar.bz2
    # tar xvf kdevelop-3.1.1.tar

  • Unzip and unarcive archive, which is not in the current directory (drag-and-drop file to console):

    # gzip -d '/usr/local/Wine20040716.tar.gz'
    # tar xvf '/usr/local/Wine20040716.tar'

  • Unzip Windows archive:

    # unzip <filename>.

Create a desktop shorcut for an application, file, or a folder. Right-click on a file/folder, choose Send To/Desktop (create shortcut). In Windows, unlike Linux, these operations are identical for creating desktop shortcuts for application, file, or folder. Moreover, right-click "Send To" option is available for items of Windows Explorer, Start Menu, Save As, and Open dialogs etc. It makes this operation very convenient under Windows.Under Linux, the term Link is used as a counterpart of Windows shortcut. If you are using KDE, right-click anywhere in the desktiop area and select Create New/Link to Application ... (if you are creating a shortcut to application file) or Link to Location (URL) ... (if you creating a shortcut to a non-executable file).

For an application link make the following steps: in the General tab, type the name of application that would appear on the desktop, in the Execute tab type the full path to the application (including file name).

The actions for creating a link for a file are the same, except there will be URL tab (instead of Execute tab), where you need to provide full path to the file (including file name).

Making shorcuts under Linux takes a little bit more steps than under Windows. However there are additional downsides of Linux implementation of this frequently used operation: first, you cannot right-click on a menu item in Linux analogue of Windows start menu to make a shortcut (such right-click cause Linux's Start menu to disappear), and, secondly, popular file manager such as Konqueror does not provide right-click menu option to make a link to a file/application. Instead full copy could ba placed on the desktop with "Copy To".

Change own passwordPress Ctrl+Alt+Del, and then Change Password ... In KMenu, go to Preferences and select Password. You can also use userpasswd from Run Command ... dialog.

Note: you can quickly invoke Run Command ... dialog by using Alt+F1 shortcut.
Place command prompt window on task bar or panelRight-click on the task bar (or custom toolbar) and choose Toolbars/Address. In Windows, you can run from address window executables, web links, file/folder addresses. In fact, address bar can be used in many cases instead of Start/Run dialog or console (cmd) command prompt. This feature of all-the-time available command prompt on task bar is frequently unnoticed even by seasoned Windows practitioners. 
Add user using consolenet user <username> <password> /addThere are 2 identical commands: useradd and adduser. The use of these commands provides that you are never mistaken which word ("add" or "user") to type first.
Compare two filesfc, comp, windiff (part of Visual Studio)kompare, diff
See the list of running processes ps -aux | more

Kill kill responding application Press Ctrl+Esc to invoke KDE System Guard (or # ksysguard) and use its Kill feature.
Show the basic list of available command-line commandshelpYou might expect that Linux's counterpart of Windows help - man command shows also the list of available commands, but it does not. You can obtain it the other way. Since basic commands are included in the RPM package coreutils (coreutils-4.5.3-19 on my machine), you can run standard RPM command to figure out the content of the package:

# rpm -ql coreutils (# rpm -ql coreutils-4.5.3-19)

You can also browse /bin directory where executables for these commands are installed (and some other too):

# cd /bin
# dir (or #ls -l)
Know file permissions # ls -l <filename>

or for hidden file:

# ls -la <filename>

Alternatively, right-click to invoke file Properties and see Permissions tab. Typically, newly created files have 644 permissions that is RW for owner, R for group, and R for others according to Linux 4-2-1 convention where R is 4, W is 2, X is 1.

Know free disk space # df -h
Know memory (RAM) usage # free -m
Know downloaded traffic during internet session or upon session termination Right-click Windows system tray's network icon and see connection status.

Linux provides UI-enabled kpppload program that shows downloaded traffic during internet session (bytes received/trasmitted, and corresponding speeds). The downside of this program is that you need to have it constantly on your desktop, which clutters environment. There is no version of this program similar to Windows' system tray program appearing as network icon.

One walkaround is to use command that reads System Log's traffic data and shows the results in the konsole:

# ifconfig ppp0 | grep "RX bytes"

In practice, you bookmark the command into konsole bookmarks, and invoke the bookmark when necessary from konsole's menu. Notice that you should use ppp0 or the name of your network interface, which you can find out with ifconfig.

Essentially the same method, less practical though, is to see manually the System Log file (with redhat-logviewer or directly /var/log/messages) when session is terminated. You'd see the lines like:

May 11 21:16:43 armadillo pppd[5311]: Connect time 8.9 minutes.
May 11 21:16:43 armadillo pppd[5311]: Sent 133139 bytes, received 939624 bytes.

  1. Renamed to system-config-packages (or pirut, which is same program) in Fedora 7.

Standard Windows Sound & Video Programs and their Linux Counterparts

Listen music CDWindows Media Player (wmplayer [XP only]), CD Player (cdplayer [2K only]) XMMS (xmms), KsCD (kscd), Grip (grip) 
Record from microphoneSound Recorder (sndrec32)KRec (krec), Gnome Sound Recorder (gnome-sound-recorder) 
Copy (and encode) CD TracksWindows Media Player (wmplayer), Roxio Media Explorer (rxmediax)KAudioCreator (kaudiocreator) 
Copy CD tracks with command-line utility cdda2wav, cdparanoia 
Encode audio to another sound format with command-line utility lame, sox 
Watch DVD movieWindows Media Player (wmplayer [XP only], mplayer2) Xine (xine), MPlayer (mplayer, gmplayer) Window XP's Windows Media Player and Linux's Xine and MPlayer can play both video and sound files.

Xine and MPlayer can play DVD video or VOB, AVI, ASF, WMV video files (and can also be used, although this is not typical, for playing CD audio or MP3, WAV audio files).

Xine typical use:

  • Play DVD: # xine dvd:/ (or dvd:// as with MPlayer)
  • Play video (or audio file): # xine <file> (you can just drag-and-drop file to konsole)
  • Play 3d title of DVD movie:# xine dvd:/3 (or dvd://3 as with MPlayer)
  • Play 2nd chapter of the 1st title of DVD movie: # xine dvd:/1.2
  • Make full screen: double click on screen, f (works also for reverse action) or # xine -f dvd:/
  • Show DVD menu: F1
  • Show DVD control: g
  • Pause (continue): Space bar
  • Make (take) snapshot: t
  • Go forward (backward) 60, 30, 15 sec: Right (Left), Alt+Right (Left), Ctrl+Right (Left)
  • Terminate Xine: q

MPlayer typical use (you can use UI-enabled gmplayer instead of mplayer):

  • Play DVD: # mplayer dvd://
  • Play video (or audio file): # mplayer <file>
  • Play 3d title of DVD movie: # mplayer dvd://3
  • Play 4th chapter of the 1st title of DVD movie: # mplayer dvd://1 -chapter 4
  • Full screen start: # mplayer -fs dvd://
  • Go forward (backward) 10 sec, 1 min, 10 min: Right (Left), Top (Down), PageUp (PageDown)
  • Play DVD with French audio, and French text (subtitles): # mplayer -alang fr -slang fr dvd://
  • Terminate MPlayer: q

In Linux, DVD video players are not included into Linux distribution (Red Hat 9), but available for free download. Xine player, benificially, provides navigation for DVD menu whereas MPlayer does not (due to "due to serious architectural limitations"). On the contrary, the benefit of using MPlayer is that it takes less resources, is shipped with DVD tracks copy utility (mencoder), and, in my experience, is more stable, and easier to install Fedora 7, 1.


Xine's components are xine-lib-1.1.7, xine-ui-0.99.5 (default frontend). The xine-ui's installation probably require newer (than shipped with Red Hat 9) libpng-1.2.19 library. You can use # xine-check and # xine --list-plugins (shows the list of installed plugins) commands for troubleshooting purposes.

MPlayer's ingredients are its core files, Win32 codecs, which are used for Xine also, and one or more skins (if you compile MPlayer without UI support, the skins are not required). All requied files can be found at one page. When compiling core files (for example in /usr/local/MPlayer-1.0rc1 directory) use ./configure --enable-gui to enable UI for MPlayer (unless you prefer to call MPlayer with # mplayer command, and control it with keyboard only). With --enable-gui switch used during installation, you run MPlayer with # gmplayer and operate it visually with MPlayer control (the # mplayer command is still available). Notice that sample on the picture shows the "Blue" skin. You can install the skin of your choice from MPlayer site by copying the skin's contents into /root/.mplayer/skins (or ~/.mplayer/skins generally) folder and renaming the folder name into "default". In my experience, I updated video driver name (vo_driver = "x11") in MPlayer's configuration file (~/.mplayer/gui.conf) from the list of available video drivers: # mplayer -vo help (if one does not work, try another from the list).

Finally, before watching DVD with Xine or MPlayer, you likely need to tell the player about DVD device location by running the command: # ln -s /dev/cdrom /dev/dvd. You can know more about Xine/MPlayer options at ther help (man) pages: man:xine, man:mplayer.

Extract sound tracks from DVD movie MPlayer (mplayer) It might be useful, when you're learning a new language for example, to make sound tracks of your favorite movie available in separate audio files. Since DVD are composed of VOB files, here is the command to extract audio track from its VOB to AC3 (Dolby Digital) sound file:

# mplayer -dumpfile <filedestination>.ac3 -dumpaudio <filename>.vob

Then, you can play sound track:

# mplayer <file>.ac3

Or, if you want to convert to MP3 using only standard tools extract first to WAV:

# mplayer -vo null -ao pcm:file=<filedestination>.wav dvd://1

Then convert to MP3:

# lame <filedestination>.wav <filedestination>.mp3

Listen online internet radio MPlayer (mplayer) Provided that you have a valid URL pointing to audio stream from radio station, you can listen internet radio just like that:

# mplayer <StreamURL>

"Where do I find the list of internet radio stations?" One pick is Mike's list, which enlists (>5000) radio stations from Australia, Canada, Europe, New Zealand, and United States. On the contrary, the enables you to find internet radio station using city, ZIP code, country, state, type as search parameters. The latter choice, however, does not provide a direct URL to stream.

MPlayer can use Windows Media, RealMedia, QuickTime, MP3 ("ShoutCast") audio stream types, and streams suffixed with ASX, PLS, M3U, which are called "playlists". You should provide -playlist switch to listen from the latter streams. In fact, these files are plain text files (for example ASX) and you can see the actual audio stream URL by taking a look at the file itself. If you know the actual URL, the -playlist switch can be dropped.


  • # mplayer -playlist
  • # mplayer (based on direct URL in above ASX file)
Watch online internet TV   
Record music, video on CD gtoasterWindows XP integrates Roxio drag-and-drop CD recording software. With Windows 2K Roxio Easy CD Creator can be installed additionally.
Record music, video on DVD  Windows XP does not include DVD recording software. You can you third-party Roxio Easy 6.0 (or later) CD/DVD creator[?].
Control Sound LevelsVolume Control (sndvol32)Sound Mixer (kmix), Volume Control (gnome-volume-control) 

  1. Kaffeine (KDE) and Totem (GNOME) are typical frontends to Xine engine used with Fedora. Both Kaffeine v0.8.3 and Totem v2.18.1 are included into Fedora 7 distribution (comes with xine-lib-1.1.6). Installing Kaffeine on Fedora can be more lengthy than installing Xine on Red Hat: assuming that Xine engine and Kaffeine frontend are available on Fedora 7 you need to install Win32 codecs (MPlayer's codecs can be used) and library for accessing encrypted DVD - libdvdcss (you can check with # kaffeine -w what you are missing), and install additionally extra codes xine-lib-extras-nonfree, which require many subdependencies. Since standard xine-ui frontend installation is easier to troubleshoot, one walkaround is to make Xine working with standard frontend: when DVD movie plays OK, Kaffeine frontend should work also. This way, you can install dependencies manually, which is not a hard exercise. Notice that you can install (I did not try it myself though) Kaffeine (requires KDE v3.2 or newer) on Red Hat 9 (comes with KDE v3.1-10), but you ought to update its KDE.

Standard Windows System Directories and their Linux Counterparts

Where do you find in Linux the directories (and files) that correspond to ABC's of system directories (and files) in Windows? For example, what corresponds in Linux to Windows' system directory (C:\WINDOWS\system32)? What about a match in Linux for Windows' program directory (C:\Program Files)? Frequently, the answers to such questions make sense, and the following table provides such mappings when possible. Notably, the Linux directory structure is more standardized and fixed, and Linux requires about a dozen directories (speaking about a root level) to operate properly: /boot, /bin, /sbin, /lib, /media, /mnt, /root, /home, /usr, /var, /etc, /proc, /opt, /tmp, /srv, /dev. More experienced Linux users might be interested in File System Hierarchy standard general for all Linux/UNIX systems (I discuss some FSH details and its rationale here).

System (or Boot) Drive%systemdrive% (usually C:)/boot/boot/grub contains grub.conf file (if GRUB used as boot loader), counterpart of Windows boot.ini located in %systemdrive%.
Administrator's root folderC:\Documents and Settings\Administrator/root 
User's root folderC:\Documents and Settings\<username>/home/<username>In Windows, the location of the current user home folder is indicated by system variable value: %userprofile%.
Program files folder%programfiles%

Usually C:\Program Files
No Windows direct counterpart /mntUsed as entry point for accessing CD/DVD and floppy drives, Linux/Windows shared drives. For example:
  • /mnt/cdrom
  • /mnt/floppy
  • /mnt/win
Main system folder for executables %windir%\system32

Usually C:\WINNT\system32 (Windows 2K) or C:\WINDOWS\system32 (Windows XP)
/bin, /usr/bin,
/usr/local/bin, /sbin,
/usr/sbin, /usr/local/sbin
In Windows, %windir%\system32 directory is a place for many different system files (about 2000 on Windows 2K). It contains system executables (UI programs and services, mostly EXE, but there are COM, SCR and others), system and resource libraries (DLL, SYS, DRV, MSC, CPL, OCX; NLS, FOT etc), and many other system files. Linux, on the other hand keeps system programs, system services in a separate directories.

  • /bin directory contains about 100 basic files, launched from command line, generally used for interaction with the system such as mkdir, cp, mv, chmod etc. In Windows, counterparts for these files are MS DOS commands that are shipped with standard Windows.

  • /usr/bin directory contains much more files (about 2000 on my machine). These files are primary executables that are placed into the directory after unpackaging standard Linux packages. Examples of typical executables in this folder are kcontrol, konsole, redhat-config-users etc. Many of the files in this directory have an UI.
  • /usr/local/bin directory is frequently the container for executables that come from third-party packages installed by user e.g. wine, webalizer, gaim etc.
  • /sbin directory contains basic services, called daemons under Linux.
  • /usr/sbin
  • /usr/local/sbin
To get an instant snapshot where major system and program executables are located you can see the contents of PATH variable. For example, on my Red Hat Linux 9 system typing # echo $PATH gives:


Notice that the directories for commonly used commands should be enumerated in PATH variable.
System and other libraries %systemroot%\system32/lib, /usr/lib, /usr/local/lib 
System drivers%systemroot%\system32\drivers  
Web server root%systemdrive%\Inetpub\wwwroot/var/wwwLinux has separate locations for executables and web documents such as HTM files. They are both subdirectories of /var/www.
  • /var/www/html is a Linux folder for HTM files and other web documents.
  • /var/www/cgi-bin is a special Linux folder for executables.
Temporary files folderC:\TEMP/tmp (or /temp)The directory for temporary files.
Folder for system services (daemons)C:\WINNT\System32/sbin, /usr/sbin Unlike Linux, which places ordinary executables and services to different locations, Windows services are located in the same place as other executables.
System configuration data /etc/etc is a special Linux folder for multiple configuration files. Windows does not have a direct counterpart. Several network configuration files typical for /ect folder in Linux, Windows keeps in %systemroot%\system32\drivers\etc. These files are hosts, services, networks, and protocol.


  • /etc/httpd/conf/httpd.conf: Apache configuration file.
System logs%winroot%\system32\config/var The /var folder in Linux is reserved for storing not only system log files, but also for email, spooling and other data that are variable, which is indicated in folder's name itself. The variable files can be thought as frequently modified, albeit by definition these files "are not static".


  • /var/log is used to keep various Linux log files.
  • /var/mail is KMail's default location for incoming/outcoming emails.
  • /var/www is Apache web server root.
  • /var/jakarta_tomcat_5.0.28/ webapps/ROOT is Tomcat servlets container root (notice that this is a sample location!).
No windows direct counterpart /procThe /proc directory is specific for Linux (not UNIX) systems. It is a repository for files representing the current state of the system (kernel). With Linux it is called "virtual file system". To see the state of a device use cat. For example, # cat /proc/cpuinfo shows the information about processor. Notice that virtual files are not executables, and you should not run cpuinfo in Konsole directly.
Application dataC:\Documents and Settings\<username>\Application Data /optIn Linux, /opt is a directory where optional files and programs are stored. This directory is used mainly by third-party developers for easy installation and uninstallation of their software packages.
No windows direct counterpart /devThe files in /dev directory represent devices connected to the system such as DVD/CD-ROM, printer etc. They are called "special files" (or "device special files") and serve as communication channels with these devices. The special files are maintained by the system and do not require user intervention.

  1. The FHS requires 13 directories to be present under root (/) so that UNIX system can function properly, plus /root and /home, which are optional under FHS, but generally present. In practice, specific system adherence to the standard may vary. In general, Linux systems add /proc directory, which reflects current system state (and can be queried by administrator). Fedora 7 has 21 directories under root by adding /lost+found, /misc, /net, /selinux, /sys. The older Red Hat 9 adds /initrd, /lost+found, /misc, /share but misses /media, /srv, which gives 18 directories under root in total. The FHS also recommends segregating sharable vs unsharable, and static vs variable files. The sharable files are those that can be shared between hosts (e.g. /var/www as web directory, NFS or Samba shares). The static files are basically read-only and can be modified by administrator or system agent. In contrast variable files are not static, and updated less or more frequently. It is clear that by segregating static vs variable files you can make backups more rational since only variable files need to be backuped periodically.

Standard Windows Hotkeys and their Linux Counterparts

Show Start menuWindows KeyAlt+F1

With Linux you can assign Windows-style shortcuts for the same actions with kmenuedit so that you can use Windows Key + E, F (and R if you wish) to invoke Linux's file manager - konqueror and search utility - kfind. You cannot, however, assign Windows Key to invoke Linux's start menu since kmenuedit does not handle one-key shortcuts.

In contrast to Linux, Windows does not provide us with shortcuts management utility.

Invoke Run ... dialog boxWindows Key+RAlt+F2
Launch file managerWindows Key+ENone
Launch file manager in the search modeWindows Key+FNone
Switch between running aplicationsAlt+TabAlt+Tab 
Switch desktopMultiple desktops not implementedCtrl+TabAlbeit Windows has only one desktop, you can use Virtual Desktop Manager (Microsoft PowerToys collection) to have several desktops like with Linux. By default, you switch desktops by pressing Windows Key+1..4. To have Linux-style shortcuts, assign them with VDM's configuration UI. Different desktops provide fast switching, and this is useful, in particular, during presentation.
Switch to specific desktopCtrl+F1..F3..
Show window listNoneAlt+F5With Linux, by default, you can use mouse's middle button to invoke window list menu. In fact, this menu is window and desktop list since in the low part you'd find the list of available desktops.
Switch languageShift+Alt (typically)Ctrl+Alt+K 
Show the list of running processesCtrl+Shift+EscCtrl+EscWith Windows, Ctrl+Alt+Del is used also since the list of running process is a part of Task Manager. With Linux, in contrast, Ctrl+Alt+Del invokes session logout dialog only. Unlike Linux, Ctrl+Esc in Windows shows up Start menu.
Delete file/folder permanently (without placing into the Recycle Bin)Shift+Del  
Get screenshort of a windowAlt+PrtScnAlt+PrtScn 
Get desktop screenshortPrtScnCtrl+PrtScn 
Shut Down ComputerCtrl+Alt+DelCtrl+Shift+Alt+Delete, Ctrl+Alt+Delete

The most keyboards have 2 delete keys: one is located close to Home key (under Insert key or under Home key on the Microsoft's keyboard), and the other in the Numeric Pad area. In contrast to desktops, notebooks have only one Delete key (to save space!).

With Linux use should use Delete key that is close to Home key, not Del key from the Numeric Pad. The former command (with Shift) does not pop up logout confimation dialog, and the latter use it.

Standard Windows DOS Commands and their Linux Counterparts

The commands enlisted in this section are basic commands for managing the system (Windows or Linux) when network tasks are out of scope. In Windows these commands are inherited from DOS. To see more commands, type help in Windows console program cmd. The Linux's analogs are basically located at /bin directory (konsole's own commands obtained with own help are frequently different in meaning except echo, declare, a few others, and scripting commands, which are not listed in this section). Most Windows users rarely (if ever) use these commands, except emergencies (like Safe Mode use). With Linux, however, the use of commands from the list is typical, for example, when installing programs. Notice that original DOS has more commands, for example mem, which is not shown in the help's list albeit this command is available in Windows.

Shows ("lists") information about files and directories. The second spelling is used to get detailed information. Linux's ls and dir are equivalent commands, except the ls makes colored output (by default: blue for directories, pink for images, cyan for link, see /etc/DIR_COLORS for more), and dir - colorless.

Note: When getting used to Linux commands it might be helpful to notice that you can use the "Windows' dir" to see the directory contents in Linux. In fact, ls is an alias (ls --color=tty) to itself, and dir is merely another name to original ls.

2attribchmod, chown, chgrp The attrib enables you to see or set 4 attributes for files or folders: read-only, archive, hidden, and system. With Linux chmod you get/set read or write permissions for owner, group, and the others. In practice, it is more convenient (both Windows and Linux) to get/set these permissions using properties dialog, which you invoke from right-click menu of a file or folder.

With chown, chgrp you can change file (or folder) owner and group.

Note: Windows and Linux file security model are substantially different, where the former is more intuitive yet hides many details in the backgroud, and the latter - more clearcut on abstract level, but a bit harder to get used to practically. In fact, Windows' file permissions are 32-bit fields, and attrib enable you to see or set only 4 of them, which are most users work with.

3cd or chdircd 
4echoechoOutputs text into console window.
5helpman, info Windows's help shows the list of available console commands, which in their meaning are most close to commands located in Linux /bin directory (# ls -l /bin). You can know more about each Linux command with # man <commandname> or # info <commandname> run in konsole. However, it is more handy to see the help pages in konqueror by typing in location bar: man:<commandname> or info:<commandname>.
6No direct counterpartmountMounts external device (DVD/CD-ROM, flash, file system, file share etc) to Linux (Linux treats them all as external filesystems).
7No direct counterpartumountUnmounts external device from Linux.
7 pwdShows current directory (stands for Path[name] of Working Directory).
7 su, sudoThe su command enables you to run command as if you were a different user. Typically, when current session is not Linux administrator ("root user", "superuser") session, but root user credentials are known, you can run commands and access files as root user by using su.
8setset (or declare), envThe use of set (declare) is frequently more convenient than the use of env since set (declare) shows (unlike env) environment variables in alphabetic order making it easier to find a variable.

Note: When getting used to Linux commands it might be helpful to notice that you can use the "Windows' set" to see Linux environments variables. The set and declare are different commands, but the list of environment variables and output format they show are the same.

9No direct counterpartfile Gives an information about file type, even though its extention is not known.

Notes: In Linux file extentions are frequently missed since they are optional. What a given file is: file, directory, executable, text, data, link etc? The file command gives you an answer. Interestingly, file is able to distinguish Windows executable types.

10atatSchedules commands to run at specified time.
11fc or compdiffCompares two files.
12find or findstrgrep Searches for a text string. Windows' findstr and Linux's grep are more advanced than Windows's find since they are able to work with regular expressions.
13path In Windows, path is both a command and an environment variable. In Linux, PATH is the environment variable only. Another words, you can obtain the path value in Windows in two ways:
  • Short way: Type path in command interpreter (cmd).
  • Long way: echo %path%
In contrast, there is a long way only in Linux:
  • # echo $PATH
14veruname -rSamples:
  • Windows (ver): Microsoft Windows XP [Version 5.1.2600]
  • Linux Red Hat 9.0 (# uname -r): 2.4.20-8 Fedora 7, 1
  • Linux Red Hat 9.0 (# uname): Linux
15typecatShows content of a text file in console window. Both Windows and Linux's command interpreters allow you to drag-and-drop text file (after you typed type or cat) to see its content.
21md or mkdirmkdir 
22rd or rmdirrm 

  1. Fedora 7: # uname -r: 2.6.21-1.3194.fc7

Windows Internet Connections and their Linux Counterparts

In terms of platform acceptance, the ease of configuring internet connections is one of the most crucial factors. In the past, Linux as desktop platform was several steps behind Windows in this area. With Fedora 7 release, there is at least one noticable area where Fedora 7 is one step ahead Windows: WiFi connections (no configuration is required). With other types of connections Fedora seems to be behind (sometimes far behind). Apparently there is no other area that can dramatically increase or decrease Linux acceptance. Yet, in particular, installing VPN support was the most troublesome in my experience with Fedora 7. There is a progress with KNetworkManager utility (and GNOME's version), which is by design should provide a single ently point to configuring Wireless/VPN/Dialup connections, yet its release was premature: software should work, not just "attempt" to work.

Action Windows Linux
Wireless Typical use with notebook:
  • Switch on WLAN from front panel (disabled by default).
  • The "Wireless Network Connection" icon should be available in system tray area, and shortly prompt a message that wireless connection is ready (you can right-click on icon and choose "View Available Wireless Networks" to connect manually or use another wireless network).
  • Check if drivers for wireless adapter are installed: under "Network Adapters" section in Device Manager (devmgmt.msc) you should see an entry for wireless card (now virtually all notebooks come with wireless cards, yet drivers might be missing). Download/install drivers for wireless card if they are missing.
  • In devmgmt.msc turn on "Wireless on" for wireless network adapter.
  • Go to Network connections, Wireless Network Connection, and configure firewall and other settings (Wireless Networks tab) for the connection.

With Fedora 7 no configuration is required (I use notebook SONY VAIO VGN-FS780/W): just position WLAN switch on the front panel to "on", and browse internet.

The commands # iwconfig and # iwlist can be used for further configuration and getting information about wireless connection. For example, # iwlist scanning - shows available wireless networks if any.

VPN (Virtual Private Network) New Connection Wizard (rundll32.exe netshell.dll,StartNCW) 1. Setting up VPN connection with Windows is straightforward: once IP is assigned to local machine, run this wizard providing arbitrary VPN connection name and IP address of remote VPN server provided by your ISP. With Linux establishing VPN connection can be tricky. There are 2 options: manual configuration, and configuration with pptpconfig utility Fedora 7, 2 provided by, which is the most detailed site for VPN connections with Linux.

The advantage of manual configuration with Fedora 7 is that you don't need pptpconfig package, which requires additional packages (some might be cumbersome to install), and you have direct control over the files of the resulting VPN configuration, which you can save (as a set of files) for backup or further re-use on other systems. Also the manual configuration is general, that is, it consists of the steps that can be applied on any Linux flavor (still, I can hardly recommend the manual configuration for the novice users, and if you prefer UI-based routines the method for Fedora 7 is the same as for Red Hat 9 Red Hat 9, 3: you need to use corresponding packages from SourceForge's site). In a nutshell, these steps are the following:

  • If network card is not yet configured, use neat network configuration utility (also called system-config-network) to configure IP settings, and assign DNS address(es) (these settings should be obtained from your local ISP provider) for the network interface (typically eth0).
  • Run # uname -r and # rpm -qi ppp to check Linux kernel version, and PPP availability plus its version. This step can be omitted for Fedora 7, which comes with Linux kernel v2.6.21-1, and ppp v2.4.4 Fedora 7, 4.

    In general, the Linux kernel version should be 2.6.15 or later, and ppp version - 2.4.3 or later so that no manual install of MPPE ("Microsoft Point-to-Point Encryption") is required.

  • Download and install Fedora 7's PPTP client: # rpm -i pptp-1.7.1-3.i386.rpm.
Now we are ready to configure PPTP client. Up to now all the minor work basically was to install pptp-1.7.1-3.i386.rpm package. Comparing to configuration with pptpconfig utility no additional packages are required, which is the nice part. To the make the other part easier I provide typical configuration files that you can copy-and-paste onto your system (backuping current files), and edit them according to your network card configuration and PPTP server configuration of your ISP. After configuring PPTP client you still need to modify routing table on the local machine (only once). Here are the steps:
  • Take a look at VPN configuration files taken from working VPN connection (parameters to be changed on arbitrary machine are enclosed in brackets). In my case, these files were generated on older Red Hat 9 system by pptpconfig utility (comments removed). Importantly, the set of parameters depends on configuration of your ISP's PPTP server. Still the file gives an example. The file lists the contents of 4 files: /etc/ppp/peers/<tunnelname>, /etc/ppp/options.pptp, /etc/ppp/chap-secrets, and /etc/ppp/ip-up.local (used for automated routing setup).
  • Assign arbitrary name to tunnel, for example "VPN", use your PPTP server IP (frequently the IP of your ISP) for <pptpserverip>, and use ISP-provided user name for <username>. Put VPN file with updated content to /etc/ppp/peers.
  • Copy-and-paste options.pptp's contents and put options.pptp into /etc/ppp.
  • Modify chap-secrets's contents typing already used VPN's tunnel name, user name, type also password used with ISP, and put chap-secrets into /etc/ppp.
Now you can start the tunnel (you can terminate it later with # killall pppd):

# pppd call VNP <- use your tunnel name

At this point ping to your local ISP server should work (as well as to other computers on the local subnet), but you need to modify local routing table to make successful ping to DNS server(s), thus accomplishing setting up VPN. To modify routing table run (use your PPTP server IP and interface name):

# route add -host dev eth0
# route del default eth0
# route add default ppp0

Last two commands tell direct all traffic to tunnel as required by Microsoft PPTP servers (see detailed script that produces, effectively, the same result). It is convenient to copy/paste these commands from the last section of mentioned sample making up ip-up.local script and putting it to /etc/ppp (set execute permission). In the result, when you initiate channel with # pppd call VNP, the ip-up.local script is run automatically, and routing modified automatically. You can bookmark the last command within konsole (go to Bookmarks/Edit bookmarks).

How to initiate VPN connection typically? Simply run Konsole's bookmark opening VPN connection.

Office (or Home) LAN ... ...
Mobile phone Usage with Nokia phones: Run Nokia PC Suite: right-click on its icon in system tray area and choose "Connect to the Internet". Accept request for connection from your mobile phone. Browse the internet...

Setup (Nokia phones): When mobile phone is used for connecting to the internet, you can employ Bluetooth channel (basically radio waves with specific frequencies) of communication between your computer and mobile phone.

There are following prerequisites:

  • Mobile phone must be Bluetooth-enabled (most Nokia phones are).
  • Bluetooth dongle (hardware) is inserted into USB port of your computer.
  • Nokia PC Suite (supporting software) is installed.
  • Windows XP or Vista.
When Bluetooth dongle is inserted, Found New Hardware Wizard is launched. Accept search for Bluetooth drivers on local computer (Windows XP & Vista come with own Bluetooth drivers), and, then, check that Bluetooth drivers are installed properly by running Device Manager (devmgmt).msc. The new "Bluetooth Radios" entry should be visible (there are also should be Bluetooth Device entries under Network Adapters icon). Notice that Bluetooth Devices applet (bthprops.cpl) is also added automatically to Control Panel.

Notice that there are alternative (yet similar) options to internet-connect mobile phone with PC using USB cable or infrared.

Nokia does not provide Linux version of Nokia PC Suite software, and one cannot make connection to internet with Nokia phones as with Windows. This is a notable downside in the category that Linux does not have versions of some popular software: Adobe Photoshop etc.
Modem ... ...

  1. As you see from command line, there is no executable for New Connection Wizard, instead the Wizard resides in netshell.dll and called using rundll32.exe, which helps running some UI-enabled DLLs as applications.
  2. The recommended way of installing pptpconfig for Fedora 7 is (yet you need alternative internet connection like wireless):

    rpm -i
    yum --enablerepo=pptp-stable install pptpconfig

    Nevertheless, in my experiments, running last command resulted in unresolved dependency (missing although yum is supposed to resolve and install dependencies by design! The mentioned SourceForge's site says that missing libglade package is the most frequent problem while installing packages for VPN support.

    Fedora 7 ships with libglade2, still PPTP configuration requires previous version - libglade, which is absent by default on Fedora 7. Use of yum for installing necessary version of libglade appears to be useless: running # yum install libglade - reports that libglade is installed, meaning that libglade2 is installed, but the output provides no information that libglade is not installed. The libglade for Fedora 7 is available as RPM package from, but it depends on libart_lgpl, gnome-libs etc, which are available on Fedora 7, but the other versions are needed...

    Clearly, I don't want to embarrass a reader with bits of information (like in the last paragraph) that should always be hidden on user level, and this may suggest a hint for some that the manual configuration (see above) would be an easier endeavor.

  3. With Red Hat 9, installing PPTP client is more simple (unlike Fedora 7, the proper version of libglade is already in place, yet manual install of MPPE support is required). First, download and install required packages according to instructions: MPPE support (dkms-2.0.5-1.noarch.rpm, kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm), PPP and PPTP base support (ppp-2.4.3-4.rhl9.i386.rpm, pptp-1.6.0-1.i386.rpm), PPTP configuration client and supporting files (pptpconfig-20040722-6.noarch.rpm, php-gtk-pcntl-1.0.1-2.i386.rpm, php-pcntl-4.3.10-1.i386.rpm). Second, configure PPTP client with pptpconfig configuration program according to instructions on the same SourceForge's page and configuration data from your ISP.
  4. Unlike earlier systems like Red Hat 9 there is no need to install MPPE ("Microsoft Point-to-Point Encryption") support for kernel and PPP since both already come with Fedora 7.

Windows Internet CLI utilities and their Linux Counterparts

Show open connections and portsnetstat -anetstatIt might be overlooked that netstat (with -a option in Windows) serves the same purpose as typical UI-enabled programs showing open connections e.g. CurrPorts v1.20 by Nirsoft.
Show internet card network configurationipconfig /all ifconfig, iwconfig In Linux, ifconfig both reads and updates IP configuration information. In contrast, Windows ipconfig is made for reading only.

With Linux, iwconfig can be used for wireless connection configuration.

Connect to remote computertelnettelnet 
Transfer files from/to remote computerftpftp, ncftp, wget

Unlike ftp, which is typically available on any Windows or Linux system, the Linux's ncftp, which comes as ncftp-3.1.5-4 package from the second installation CD Fedora 7, 1, enables you to make your work with CLI program in some instances more convenient than with UI-enabled program like gFTP (Linux) or CuteFTP (Windows).

The ncftp program is able to store password (in own encrypted file) to FTP site, and locations of local and remoted directories (ftp cannot do it) so that you can connect to your site with a single-line command (use your user name after -u and your password after -p):

ncftp -u netston -p xxx (ftp:// prefix is requiered)

Typically, you scroll previous commands with Up key to avoid retyping the command. Further, you can make a bookmark for a command and connect to your site with (use your bookmark name):

ncftp netston

To save current FTP connection as bookmark use:

ncftp>bookmark <bookmarkname>

To see and access ncftp's bookmark editor use:


When no other FTP program is available you can use ftp.

The Linux's wget program is useful for making a copy of entire Web or FTP site (it implements recursive downloads when a directory with all its subdirectories is downloaded), and when you want to be sure that a big file (say several GBs) is downloaded completely (in case of connection failure you can resume download starting from the broken point).

Press Ctrl+Z to terminate an FTP session.

Troubleshoot DNS servernslookupnslookup, dig, host 
Verify connectivity to a specific hostpingping 
Troubleshoot NetBIOSnbtstatnmblookupCan be used for troubleshooting network and printer sharing in mixed Linux/Windows environments e.g. when Linux runs Samba server for file sharing and Windows client gets connected.
Know registration information about web domain owner Not providedwhoisAlbeit Linux ships own whois, which extracts web domain registration information for the most cases, this program fails for some domain types, for example .biz domains.

With Windows you can use utility like Whois v1.01 (whois) from Sysinternals acquired by Microsoft in 2006, which works for .biz domains also.

Show routing tablenetstat -rnetstat -r 
Know information about OS user finger 
Show mappings between IP and MAC addressesarparp 

  1. The ncftp package is not included into Fedora 7 installation DVD. You can use pirut (or yum) to download it from internet repository.

Windows Remote Access Tools and their Linux Counterparts

When you need to access remote system (Windows or Linux) from Windows or Linux client - what tools to use? In Linux there are several tools that Linux includes in its distribution as part of Berkley's UNIX inheritance: Remote Shell (rsh), Remote Login (rlogin) Fedora 7, 1. The Telnet (telnet) remote access tool, which appeared later, is shipped to replace Remote Shell, and Remote Login. The newer Secured Shell (ssh) is supposed, in its turn, to replace Telnet since it provides (besides secure channel) an option to run UI-enabled applications on remote machine as if they were run locally. The popular third-party VNC client, furthermore, is able to show remote desktop (Windows or Linux), and run remote applications using this desktop. Why do I mention several tools when, indeed, in many cases the use of VNC or SSH would be a good match? In the case of arbitraty remote system the answer what to use for remote access on client depends on what services are running on server (availability of server's daemons responsible for functioning VNC, SSH, Telnet, RSH, Rlogin servers etc). They are all turned off by default and one might need to use older rsh instead of ssh or vncclient if RSH service is running and SSH, VNC and other services are not.

Interact with remote UI-enabled applications locally, run commands on remote machinePuTTY (putty), X-Win32 ssh SSH is the default communication protocol for Linux remote interaction. Unlike its older predecessors (telnet, rsh, rlogin), Secure Shell (ssh) is not only enables you to execute commands remotely, or interact remotely with command-line style (except rsh), but also provides a channel to work with UI-enabled remote applications as if they were run locally ("X forwarding"). Additionally, the benefit of using SSH is that it is likely running on Linux machine (unless administrator turned it off), and hence does not require manual startup (as with Telnet, and R-services).

Here is snapshot of Fedora 7's desktop that shows Konqueror (konqueror) file manager running on remote Red Hat 9 machine (or, inversely, Red Hat 9's desktop showing Konqueror on remote Fedora 7 machine). Notice that -X parameter must be used to enable visual mode:

# ssh -X <- use your IP/name of remote machine
# Password: <- enter your pasword
# konqueror

By default, OpenSSH service (sshd daemon), which supports ssh on server, is installed and turned on (Fedora 7 - Red Hat 9). Thus, if you have a password, no configuration is required to run commands remotely.

Windows does not include a SSH client. As Windows SSH client, nevertheless, you can use third-party PuTTY program that makes possible to access Linux machine from Windows client using Linux-style SSH protocol (in fact, PuTTY provides a common UI to access remote server with SSH, or Telnet, or Rlogin). The downside of using PuTTY with Windows is that you cannot run UI-enabled commands (PuTTY alone does not provide "X forwarding" for Windows). The X-Win32, another third-party SSH program, installs "X server" on Windows making possible to run UI-enabled commands like konqueror. Then, besides X-Win32's own client, you can use PuTTY's "Enable X11 forwarding option" to run UI-enabled commands. The picture shows Windows to Fedora 7 connection made this way.

Interact with remote desktop across the internet or local network VNC (vncviewer) VNC (vncviewer)

VNC (VNC stands for Virtual Network Computing) provides an opportunity to communicate with remote desktop regardless of the type of remote machine's operation system. Generally, you need to be sure that VNC server is running on the remote machine, firewall settings on both ends allow the connection (VNC employs ports 5800+ <displaynumber>, 5900+<displaynumber>), and run VNC client locally.

Linux to Windows: To setup VNC server on Windows XP, download VNC (free v4.1.2 for Windows or newer) and run setup. The setup program installs VNC server (see services.msc), which is auto-started when Windows boots. To enable viewing Windows desktop from client you need to setup password, and make sure that Window firewall allows connection.

Finally, for interaction with Windows remote desktop on Linux, run # vncviewer, which comes with Fedora 7 by default, enter IP of remote machine (like, and password. The Linux's VNC client shows remote Windows desktop even if the monitor on remote machine is turned off or not attached physically. When attached one can see Window(s) and cursor movements while you work with VNC client.

Windows to Linux: When accessing Linux desktop, you need to run # vncserver on server first (this shows available display like, enter this IP (with colon) to dialog window invoked by Windows VNC Viewer on client, and enter password. In the same dialog, click Options... button, to set greater color level when color depth is insufficient.

Making VNC server setup, and auto-startup with Fedora 7 Linux might requre more steps than on Windows:

  • Uncomment 2 lines in ~/.vnc/xstartup shell script (there is a comment in this script about what lines to uncomment).
  • In /etc/sysconfig/vncservers provide the name(s) for remote user(s).

In case of connection problem, make sure that Linux firewall allows connection (when possible, you can turn it off with lokkit completely--alternative Fedora 7's system-config-securitylevel tool might fail to store settings-- to see if this a firewall matter). For further troubleshooting check VNC log files at ~/.vnc.

Linux to Linux: Run vncviewer specifying IP and display number (separated by colon). The picture shows remote Fedora 7 desktop from Red Hat 9 machine. On this picture VNC shows Fedora 7's GNOME desktop even though the current Fedora 7's desktop is KDE!

Notice that if VNC server is auto-started you can know VNC server display/user pairs by viewing remote /etc/sysconfig/vncservers file (you can use SSH session to open the file: # cat /etc/sysconfig/vncservers). Anyway, you can type # vncserver on remote machine to create new remote desktop (IP:<desktopnumber> pair). The Remote Desktop Connection (krdc) program is handier for making VNC connection on client since it enables you to specify color depth (High/Medium/Low), which is useful for slow networks. The krdc is a part of kdenetwork package, which is shipped with Fedora7, Red Hat 9, but you need to install it manually.

Access remote desktop with client for terminal services Remote Desktop Connection (mstsc)Terminal Services Client (tsclient)In Linux there is also Remote Desktop Connection program (krdc), but it is used for connecting to VCN server, not to terminal server as Windows' mstsc.
Access files remotely (interactive commands, CLI only) telnettelnet, ssh, rlogin The Telnet is universal tool to access remote computers with Windows or Linux. It allows you to run CLI commands (including interactive commands like vi), though you cannot run UI-enabled applications remotely. In many cases SSH client is preferable to Telnet. In its turn, Telnet was designed to replace R-commands (rsh, rlogin, rexec). By default Telnet service is disabled on Linux/Windows, and should be enabled manually when needed. You can access remove machine with Telnet session like (Windows sample):

Microsoft Telnet>open

Alternative and shorter way is:

C:\>telnet (or C:\>telnet armadillo)

At this request, the Telnet prompts you to enter login and password, which must be valid on remote machine.

You should use IP address of your remove machine or its name, which must be known on your computer. This syntax is valid both on Windows and Linux clients (command prompt on Linux is different, of course).

When remote machine is Linux you need to enable Telnet service with system-config-services Fedora 7, 2 (disabled by default), and make sure that Linux firewall allows Telnet connections with firewall configuration utility system-config-securitylevel Fedora 7, 3 (or with its command-line analog lokkit). When remote machine is Windows make sure that Telnet service is started with services.msc (stopped by default), and Windows fiwewall (firewall.cpl) allows telnet connections.

Execute commands on remote computer (no interactive commands, no UI) rsh, rexec rsh, rexec, rcp R-commands in Linux are replaced with ssh, telnet. When SSH, or Telnet are unavailable as remote services, you can try R-commands (including rlogin, which is interactive command). Notice that corresponding daemons (rshd, rlogind, rexecd) are turned off by default.

  1. Client remote access tools rsh, rlogin, rexec, rcp are shipped with single rsh-0.17-40.fc7.i386.rpm package in Fedora 7, and with single rsh-0.17-14.i386.rpm package in Red Hat 9. These tools are installed by default. The rsh-server package should be installed manually to turn Linux into remote access server for R-commands.
  2. Red Hat 9: redhat-config-services.
  3. Red Hat 9: redhat-config-securitylevel.

Networking: Windows-to-Linux, Linux-to-Windows and other Connections

Typically, when Windows and Linux are used together, it is the file and printer sharing that you want to setup first. The following table briefs the major steps to setup this kind of communication between 2 computers: one of them Linux or Windows, or both Linux or Windows.

As a prerequisite, if you connect computers directly, you need a special crossover cable, which is the same cable which you'd use normally but the pinning scheme on one end is different from another. Also, if server computer is used both for internet access and as file server for small office network (known as SOHO) it should have 2 network cards (it is enough to have one NIC on server computer if you want a setup only a file sharing between 2 computers).

File ServerClientNotes

Linux: Runs Samba server. To run Samba make sure the following packages are installed. For example, type # rpm -qa | grep samba (package versions can be different on your machine):

  • samba-common-2.2.7a-7.9.0
  • samba-2.2.7a-7.9.0
  • samba-client-2.2.7a-7.9.0
  • samba-swat-2.2.7a-7.9.0
  • redhat-config-samba-1.0.4-1

Of these packages, only samba-common and samba are required for Samba server, samba-swat, redhat-config-samba are optional and convenient for Samba shares configuration. The samba-client is necessary if Samba server machine is also a client for another Samba server, however install of this package makes sense because it makes possible to test Samba locally. As usual, you can examine information about each package with # rpm -qi <packagename>.

Samba provides Samba Web Administration Tool (SWAT) accessible from local browser (http://localhost:901) to make easier Samba configuration (/etc/samba/smb.conf). You can edit /etc/samba/smb.conf manually or with SWAT. SWAT is disabled by default. To enable SWAT, edit /etc/xinetd.d/swat (SWAT configuration file) by setting disable parameter to "no", which default is "yes" (both without quotes).

To configure Samba server:

  • Make sure that smbd and nmbd daemons are both running (SWAT's status page) and enable their activation at system startup: # chkconfig smb on.
  • Create Samba shares (SWAT's status page).
  • Set users/passwords to access Samba shares. If you use root account for accessing Samba share, you still need to re-enter password for root when using Samba with smbpasswd (the same is true for other accounts).
  • Configure Samba server's network card with neat. For example, set IP:, Subnet mask:
  • Edit lmhosts (/etc/samba/lmhosts) to add IP/<computername> of server and client computer used for name resolution. Notice that Samba utilizes lmhosts name resolution by default, which is enough for typical SOHO network. The use of lmhosts or host file is not mandatory since on small networks computers can find each other by simple broadcasts.

Test Samba server locally: # smbclient -L localhost. You will be prompted for a password, and should see the list of shares available. Now if server works OK, you can configure Windows client.

Windows: Client of Samba server. Basically, only NIC should be configured, no additional software is required. To configure Samba client:

  • Set IP:, Subnet mask:
  • With My Computer set workgroup name the same as at SWAT's globals page (if you miss this step, you still be able to connect) e.g. "Home".
  • Edit Windows lmhosts (%windir%\system32\drivers\etc\lmhosts.sam) by duplicating entries added to servers's lmhosts (/etc/samba/lmhosts). Notice that you can also use hosts file (%windir%\system32\drivers\etc\hosts) or skip this step since SOHO computers can find each other by simple broadcasts.

When both computers are configured and physically connected ping client-to-server and server-to-client. If ping fails, make sure that server firewall like iptables and client firewall like Norton Internet Security are both allow connections. In particular, if ping from client ( to server ( fails, you can specifically add rule to iptables firewall by making client trusted with redhat-config-securitylevel: check appropriate interface as trusted.

Generally, in case of configuration problems it is frequently useful to examine samba log files located at /var/log/samba.


When you want to connect Linux client to Linux server to enable file sharing it is more natural (and easier than file sharing with Samba) to implement NFS (Network File Sharing), which is native to Linux.

It is likely that NFS support is already available on your Linux server and client machines since it usually comes with default installation. NFS support includes nfs and nfslock services (nfsd and lockd daemons correspondingly). If absent this services can be installed with nfs-utils package. Notice that it is useful to install on server machine redhat-config-nfs utility also, which comes with redhat-config-nfs package and enables you to create NFS shares with UI. To check packages availability, type # rpm -qa | grep nfs (package versions can be different on your machine):

  • nfs-utils-1.0.1-2.9
  • redhat-config-nfs-1.0.4-5

Once availability of NFS packages is verified, turn on nfsd daemon with # redhat-config-services (turned off by default), and use the following steps to create, and export NFS share(s) on server:

  • Create NFS share(s) by editing /etc/exports file (you can also use redhat-config-nfs utility). For example, allow client computer on your home network to access directory (share) win on server:

  • Export created share(s): make them available to client with # exportfs -a -v on server machine.

Now you are ready to use NFS shares from client computer. The steps are the same when you mount CD/DVD-ROM or flash drive: first, create a directory (armadillo indicates server machine, but the name is arbitrary), and mount NFS share:

# mkdir /mnt/armadillo
# mount /mnt/armadillo

That's it! Now you can browse /mnt/armadillo files and directories on client, which are, in fact, file /mnt/win shares on server. Notice that you can automount NFS share(s) on client computer by adding entry to /etc/fstab file.

3WindowsWindows When you need to connect 2 Windows machines (say 2 Windows XP computers), the configuration of the 1st machine ("server") goes in the the way as the 2nd machine ("client"). The terms "server", and "client" are interchangable when you want to realize file sharing between 2 computers only. Once network cards are connected with crossover cable, use the following steps on "server" computer:

  • Set IP:, Subnet mask:
  • Set computer name/workgroup in My Computer/Computer Name tab (requires reboot). For example: armadillo/HOME (case does not matter).
  • Make network share. Create folder (say "A") and in its properties ("Sharing" tab) assign share name and make sure that "Share this folder on the network" is checked (if this checkbox is not available, run Network Setup Wizard). When connection is established you can navigate to this share from another computer with \\<computername>\<sharename> from Windows Explorer, or see this share at Network Neighborhood under workgroup name.
  • Make sure that Windows Firewall (or firewall that you use) does not prevent connection. With Windows Firewall you can turn off security for this connection or keep it active while enabling File and Printer Sharing exception in Exceptions tab of this firewall.

The configuration of client goes in exactly the same manner except you need to assigh own client's IP address (like, and computer name. Notice that you can skip editing hosts and lmhosts files (located in %windir%\system32\drivers\etc) since computers on the same subnet can easily find each other by simple broadcasts.

When both computers are configured and physically connected ping client-to-server and server-to-client. If ping fails, make sure that server's and client's firewalls permit this connection.

4LinuxYou can enable Windows machine (workstation or server) to act as NFS server, albeit NFS (Networking File System) is typical for UNIX machines primarily. Microsoft ships freely Windows Services for UNIX (v3.5, 217.6 MB), referred simply as SFU, to provide cross-platform compatibility. SFU adds UNIX-like access layer to Windows NTFS shares (additional NFS Sharing tab becomes available in folder properties) in a way that Linux client can access Windows shares with UNIX-like style. For example, when SFU enabled, to access Windows share named "SFU_Share" you mount it on Linux client with # mount windows-machine:/SFU_Share /mnt/windows-share (arbitrary mounting point like /mnt/windows-share should be created first) and then you can use Windows share as part of Linux file system (everything is considered as file in Linux): # cd /mnt/windows-share, # ls etc. Here are the steps to install and configure SFU:


  • Copy passwd (/etc/passwd) and group (/etc/group) files from Linux to Windows machine (My Documents directory for example). These files are used by installation program for matching Windows and Linux accounts.
  • Run SFU installation program (SFU35SEL_EN.exe in v3.5), choose Server for NFS, and User Name Mapping at Authentication tools for NFS (other components are optional for small network). Select "Local User Name Mapping Server", which uses "Password and group files", and enter location of passwd and group files you've previously copied to Windows machine.

At this point SFU components are installed. Now you should configure SFU:

  • Open "Services for UNIX Administration" MMC console (sfumgmt.msc), select User Name Mapping service, and Maps in the right pane.
  • Locate Advanced maps section, and choose "Show User Maps". Click "List Windows Users", and "List UNIX Users" buttons (and then choose "Show Group Maps", click "List Windows Groups", and "List UNIX Groups" buttons if necessary) to match Windows and Linux accounts. Notice that Linux's group and passwd files you've supplied before are used to show Linux users and groups. For example, match Administrator and root users, and Administrators and root groups (by default Linux's root user belongs to the root group).
  • Allow client computers to access SFU shares by editing $sfudir$\Mapper\.maphosts file. The .maphosts file is, by default, empty. This, according to documentation, disallows all client computers to access SFU shares. You should add IP addresses of client computers that considered trusted, or merely add a single "+" symbol to allow all computers to access SFU shares. (Nevertheless, in my own configuration empty .maphosts does not forbid Linux client to access SFU shares.)
  • Create an SFU share. Once SFU is installed you should be able to see additional NFS Sharing tab in folder properties. Check "Share this folder", click permissions and check allow root access in the permissions dialog. Important: if you enable "NFS Sharing", but leave "Share this folder on the network" in the "Sharing" tab unchecked you might have permission denied problem on the client. Thus, you should enable also regular sharing by checking "Share this folder on the network" checkbox.

At this point you can test SFU share availability on client.


  • Create a mounting point like: # mkdir /mnt/windows-share
  • Import SFU share with: # mount <windows_server_name>:/SFU_Share /mnt/windows-share (use your server name without brackets).
  • View SFU share contents: # ls -l /mnt/windows-share

In the case of permission problems check first firewall settings on both server and client (temporary disable if possible), view Windows Event Viewer's (eventvwr.msc) System Log. Own SFU's log (%sfudir/log/nfssvr.log) might be helpful also.

Appendix A: Windows Registry and Linux Configuration Files

The table below represents a roadmap to locations of typical Linux configuration files. Windows users migrating to Linux can think about Linux configuration files in terms of Windows registry. The collection of configuration files serves essentially the same purpose as the registry: manage system configuration and configurations of many different programs, for example, make tuning or persist settings for later use. The major difference is that Linux keeps all configuration settings in plain text files located, generally, in /etc directory while Windows mostly does not provide direct access to configuration data, but offers instead to use Registry Editor (regedit or regedt32), which provide convenient UI to access the data. With Linux the UI-enabled means to manage configuration data are either very limited such as GConf-Editor (gconf-editor) or have multi-purpose UI such as third-party Linuxconf (linuxconf) complicating matters for beginners. It is natural with Linux, therefore, to keep in touch with original configuration files.

OS Boot Menu%systemdrive%\boot.ini/boot/grub/grub.conf 
Environment Variables /etc/profile 
Command Line History<account>/.bash_history
(e.g. /root/.bash_history)
Command Interpreter<account>/.bash_profile
(e.g. /root/.bash_profile)
With Linux, "~" sign is useful when referring to current user home directory, for example: ~/.bash_profile instead of /root/.bash_profile.
Hard Disk and other Devices /etc/fstab 
Monitor /etc/X11/XF86Config 
Sound Card /etc/modules.conf 
Web Server, Apache /etc/httpd/conf/httpd.conf 
Database Server, MySQL /etc/my.cnf 
Hosts File (Primitive DNS)%windir%\system32\ drivers\etc\hosts/etc/hosts 
NetBIOS Lmhosts File (Primitive WINS)%windir%\system32\drivers\ etc\lmhosts.sam/etc/samba/lmhosts 
OpenPGP Encryption and Digital Signatures <account>/.gnupg
(e.g. /root/.gnupg)
Firewall /etc/sysconfig/iptablesLimited configuration UI is available with redhat-config-securitylevel.
Network File Sharing, Samba /etc/samba/smb.conf Optional /etc/xinetd.d/swat is used for SWAT (Samba Web Administration Tool) configuration.
Network File Sharing, NFS /etc/exports 
Services List%windir%\system32\ drivers\etc\services/etc/services 
User Passwords /etc/passwd 
User Groups /etc/group 
System Log /var/log/messages 
VPN Connection 
  1. /etc/ppp/peers/<tunnelname>
  2. /etc/ppp/options.pptp
  3. /etc/ppp/chap-secrets (user name/password)
  4. /etc/ppp/ip-up.local (used for automated routing setup)

Appendix B: Top 10 Linux User Customization Tips

# ActionTip
1 Assign Windows-like shortcuts to typical actions

Windows has built-in shortcuts to call standard programs and dialogs:

  • Windows Explorer with Win (Windows key) + E
  • Find dialog with Win + F
  • Run command dialog with Win + R

With Linux it is convenient to use the same shortcuts to run the same kind of programs:

  • Konqueror (konqueror) with Win + E
  • Find dialog (kfind) with Win + F
  • Run command dialog with Win + R (instead of default Alt+F2)

Also, since terminal window plays central role in Linux and because Linux ships with built-in stand-alone internet bookmarks editor, it is convenient to invoke these programs with shortcuts like:

  • Terminal window (konsole) with Win + T
  • Bookmarks Editor (keditbookmarks) with Win + B

In Linux, you can assign these shorcuts either with built-in menu editor (kmenuedit) or, when assigning shortcut for Run dialog, with Control Center (kcontrol) by going to Regional & Accessibility, Keyboard Shortcuts. If you use Microsoft Natural Multimedia Keyboard, one more reason to use Win + R (or likewise) over default Alt+F2 is that you don't need to press additionally F-key when switching between function key row modes.

2 Use Linux child panels to place links for frequently used applications and group links on different panels according to category

Adding child panels with links to applications makes work more efficient. The picture shows Fedora 7, 1 sample layout with the following panels:

  • Panel for working with plain text: advanced text editor (kate) and simple, but with embedded spell-check, text editor (kedit); hex text editor (khexedit); character selector (kcharselect); compare files (kompare).
  • Panel for working with images: capture screen (ksnapshot); advanced image editor (gimp); simple image editor (kpaint); color picker (kcolorchooser).
  • Panel for frequently used system programs, and folders: menu editor (kmenuedit); control panel (kcontrol); task manager (ksysguard); device mounting tool (kdf); log viewer (redhat-logviewer); Windows/Linux shared folder; home directory folder; Apache web root folder; terminal (konsole) - placed on the right edge for faster access.
  • Panel for internet applications: VPN connection (pptpconfig); internet browser (mozilla); universal file manager and internet browser (konqueror); internet messenger (gaim); download manager (kget); internet dictionary (kdict).

Generally, the panels should not be cluttered with links that are rarely used since it slows down navigation.

To add new child panel, right-click on the Main Panel i.e. bottom panel that hosts start menu, and choose Add/Extension/Child Panel. If you want two panels on any desktop side be located in one row, choose for one of the panels Configure Panel (right-click), select current panel in Arrangement tab, and then in Hiding tab select "Allow other windows to cover the panel".

3 If you are new to Linux, add to start menu KDE, Gnome, X Windows submenus and provide command-line program names as descriptions

Linux default installation includes programs for several desktop environments: KDE, Gnome, and X Windows (oldest desktop). Generally these programs can be used in any of these environments. Frequently KDE, Gnome, and X Windows have own program for a single specific task. For example, you can you use for calculations KDE's kcalc, Gnome's gnome-calculator, or X Windows' xcalc. In contrast, any version of Windows ships with a single calculator program: calc. Obviously this messes up things a bit if you are new to Linux (or had made a break working with it), since you might tend to forget what program from which environment you used last time, and what its command-line name.

To make it faster to familiarize with a variety of Linux programs across different desktop environments, and easier to memorize command-line program names (until you pickup your favorite programs for the specific Linux tasks), place program along with its command-line name to custom KDE, Gnome, X Windows submenus in start menu (unlike Windows, Linux's start menu does not provide tooltips for menu items). This also helps avoid redundancy with Linux programs use in a longer term.

To accomplish this, use Menu Editor (kmenuedit) to add new KDE, Gnome, X Windows submenus, insert new menu items to corresponding submenus, and provide command-line names for menu items as its descriptions. The followind pictures gives you an idea of this tip for KDE, Gnome, and X Window programs.

4 Ever have a question of how to organize your favorite console commands in one place? Use Konsole's bookmarks. Here is one possible scenario. You typicaly use the following konsole command to check the internet traffic:

# ifconfig ppp0 | grep "RX bytes"

How to avoid typing this command again when you want to see the traffic next time? The answer is, instead of re-typyig it manually or looking into the konsole history (for example with Up key), you can add bookmark with command's text:

  • Go to Konsole's Bookmarks menu, and choose Edit Bookmarks.
  • Insert new bookmark with KEditBookmarks, and enter command's text in URL field (and, optionally, command description in Bookmarks field.

Notice that konsole bookmarks are different from internet bookmarks (stored in separate location) albeit they both can use keditbookmarks UI.

5 Make a single text file, which enlists contents (available RPM packages) of Linux installation disks When you install or update a program (package), you might have the question: "Which installation CD has this specific RPM that I want to install, and do these CDs have this RPM at all?" To answer this typical question, it is convenient to have a single file, which enlists all RPM packages available on the installation CDs (there are 3 installation CDs for Red Hat 9), and make it easily available by bookmarking it with keditbookmarks.

In the result, when you need to install a package, you can consult, first, the list of packages to know what CD holds the package (press custom Win + B shortcut to locate the bookmark pointing to the list), then insert this particular CD, and finally install the package. You can for sure (if your hard disk allows it) to copy installation CDs on your machine permanently. Still the list of available packages is helpful for the fast search.

To make the list, issue the command like # ls /mnt/cdrom/RedHat/RPMS > /root/contents.txt on each CD disk, and then manually merge contents into the single file, or use already compiled one, which is valid for Red Hat 9 only Fedora 7, 2.

Notice that there is a list of packages installed on the system (/root/install.log) during Linux installation (it enlists 671 packages on my system).

  1. See also Fedora 7's desktop.
  2. Fedora 7 installation disk is one DVD. The list of available packages from here (many more can be downloaded).

Appendix C: Source Control Systems

Download PDF

Typically, when you often operate with text files that require revisions before their release or when you are concerned with traceability of changes in your own files it is a fair indication that you might need to think about source control system for your text files even if these files are not supposed to be used in shared mode with other users.

Windows Linux

TortoiseSVN is the source control system integrated with Windows Explorer, and is based on SVN source control system earlier introduced with Linux. SVN itself was inspired by CVS source control system used with Unix since 1990 (and later with Linux). The advantage of TortoiseSVN is that Windows repository created with TortoiseSVN can be used as repository when accessing with Linux-based client SVN tools. This Windows/Linux interoperability along with integration with Windows Explorer sounded appealing for me when I opted to use TortoiseSVN for my own projects. One other benefit of TortoiseSVN is that it is able to compare Word files (though not side-by-side, v1.4.5), and works with UNICODE.

As with any source control system you should plan a central repository. It is a good idea to place repository on file server or use internet server, and use shared drive if the repository should be accessed from Windows and Linux. In simple cases, you can choose flash drive. To setup SVN repository after running setup program make new folder (SVN for example), right-click and choose Create repository here... . If you'd try to create repository starting from not-empty folder, the TortoiseSVN will be complaining, which means that repository can be created from empty folder only.

Once repository is created, you can add files (and folders) to the SVN repository. You do this with Repo-browser, which can be invoked by right-click on repository, choosing TortoiseSVN, and then Repo-browser.

Now, when you need to work with repository files locally, you first make a checkout (right-click on repository and choose SVN Checkout... or checkout from repo-browser). For the destination of the local copy choose any location such as MyDocuments/LocalSVNCopy. TortoiseSVN enables right-click menu for the folder where you made a checkout. The new context-menu items are also available for local files. Notice that TortoiseSVN adds red exclamation mark to the left bottom of an icon of locally edited file, and green mark if a local file was not edited since last checkout. The same meaning have green and red marks for folder icons. In fact, it is convenient to identify folder as local SVN copy by these folder marks.

Among menu items that SVN adds for locally edited file, the most useful is Diff option, which makes possible to see differences between local and server (repository) versions. Don't forget to update repo files if you make changes to the local copy (right-click on file and choose SVN Commit...). The accidental destruction of the local copy can cause no harm if you did not forget to make commits after updates of the local files. To restore local copy you simple make a checkout from the relative repo.

When new file is added to the repositoy, you can load it to the local directory by right-click on local project folder and choosing SVN Update.

If you have programming experience with Microsoft development tools, you can jumpstart using TortoiseSVN having in mind that mode of operations with TortoiseSVN is based on paradigm used with other source control systems. Take a look on Visual Source Safe window, which is the Windows source control system provided by Microsoft basically for version control of source files while programming. The TortoiseSVN's analog of Visual Source Safe Explorer is already mentioned Repository Browser.

With Linux there are 2 major options1. The first one is to use CVS, and the second is to rely on Subversion (or SVN), which inherits major CVS features and claims removing some shortcomings observed in CVS.

If circumstances do not require from you to use CVS, the use of SVN might be a better option, especially if you need to track versions of UNICODE files. On the other hand the use of CVS is simpler, more intuitive, and CVS is integrated with KDE by default through Konqueror file manager, even though you can use a separate UI frond-end for CVS called Cervisia (cervisia).

Cervisia enables you to setup a CVS repository and run basic tasks such as commit, checkout, update, adding files, viewing version differences without running these tasks in command-line interpreter. Sure you can use console (konsole), but unless you use CVS everyday keeping in mind its commands might not be a reasonable and easy exercise (see the list of relative commands with: # cvs --help-options or enter man:cvs in Konqueror's address bar).

The next steps show you how to setup an empty CVS repository from scratch so that files and folders can be added later. It is a good idea to setup repository on file or internet server, however, for simplicity, you can use flash-drive for tests:

  • Run Cervisia (cervisia), and create repository cvs_repo from menu option Repository/Create... (enter an appropriate path such as /media/disk/cvs_repo to your flash-drive). In the result, the default structure is created under cvs_repo folder (at this point there is only default CSVROOT folder with CVS administrative files, which should not be ever edited manually).
  • Create a working directory such as cvs_client and import a project (module) you are going to use, for example TODO (you can specify any module name such as TODO even though it still does not exist under cvs_client) from cvs_client with Cervisia's Repository/Import... This step is an equivalent of creating an new (and empty) project in CVS repository. The fields "Vendor Tag" and "Release Tag" do not matter in fact albeit mandatory (CVS keeps these fields for historical reasons, you can use company name for "Vendor Tag" and "start", without quotes, for "Release Tag"). Notice that under CVS a project is called module, and modules are located directly under repository folder (cvs_repo) that is on the same level with default CSVROOT folder.
  • Create a working copy of TODO project (module) by making checkout with Cervisia's Repository/Checkout... This step includes initializing of working copy with CVS administrative files (folder CVS under project name TODO of cvs_client working directory).
  • At this point the repository is initialized, has empty project (module) TODO, and also you have its working copy (folder TODO under cvs_client). Now you can add files to the repository. Firstly, you simply copy necessary files to cvs_client/TODO. Then right-click on TODO folder and choose Open With/Cervisia. This opens Cervisia within Konqueror file manager. Now right-click on local file such as TODO.txt and choose Add to Repository... You need also make Commit... 2 in the same menu to accomplish adding TODO.txt to the repository.

With Linux, SVN has become de-facto standard for users and developers who want to obtain latest versions of source code for a package to build it on local machine albeit obtaining source with FTP is no less practical. Frequently, a user needs a few SVN commands such as checkout, which can be effectively run (and bookmarked within console) from console (konsole), without invoking UI-enabled front ends. For this reason, I provide here in a nutshell basic steps necessary to setup SVN repository without UI-enabled tools (the order of steps reflects the steps with CVS repository setup). As before you can use for tests flash-drive:

  • Create a repository such as svn_repo:

    # svnadmin create /media/disk/svn_repo

    At this point SVN creates a structure with administrative files.

  • Create working directory, where you want to work with local copy:

    # mkdir /media/disk/svn_client

    Or, use Konqueror to create an empty folder svn_client.

  • Create a new project under SVN repository. This means, like with CVS, to import an empty local directory like svn_client. The custom name TODO of new project is set in command line:

    # svn import /media/disk/svn_client file:///media/disk/svn_repo/TODO -m 'initialization'

    Notice that -m (log message), providing a description of revision, is mandatory.

  • As with CVS, at this point SVN repo is initialized and has an empty TODO project, you need to make a checkout to start working with project locally:

    # svn checkout file:///media/disk/svn_repo /media/disk/svn_client

    This creates a local copy with .svn folder under svn_client containing administrative files. In general, the local folder (svn_client in the sample) is created if it was not set in command line.

  • As with CVS you actually start working with repository by adding and committing files. First, add to the working directory svn_client a file, for example TODO.txt, and add it to the repository. Since making add does not actually adds a file to the repository you need, in fact, execute two commands (add and commit):

    # svn add /media/disk/svn_client/todo/TODO.txt
    # svn commit /media/disk/svn_client -m 'commit test'

    As before, -m (log message), providing a description of an action, is mandatory.

With KDE and GNOME come KDESvn (kdesvn) and RapidSVN (rapidsvn) programs relatively that enable you to accomplish source control tasks within graphical interface avoiding the use of console commands (you still need to create repository in console when using RapidSVN). These programs represent UI front-ends to Subversion (SVN commands).

The sequence of steps to create a new repository and add to it a file are the same as described when using console:

  • Create new repository: run kdesvn, go to File/Subversion Admin and choose Create and open new repository (uncheck Create main folders since for simple tasks you probably don't need standard Subversion's structure: trunk, branches, tags).
  • Create new project by adding new folder TODO from Subversion/General/New Folder. Notice that KDESvn hides the use of import command, which was used with console SVN commands to create TODO project.
  • Create a local copy of new project by right-click on TODO and making checkout to local directory.
  • Add a file to repository: make a file TODO.txt under TODO folder of local copy, right-click on TODO folder and choose Open With/kdesvn, then right-click on TODO.txt file and choose "Add selected files/dirs". As before, you still need to Commit in the same menu to actually add file to the repository.

The pictures used above were obtained with Cervisia v2.4.9 and KDESvn v0.11.2 3.

  1. With Fedora 7 both CVS (cvs-1.11.22-9.fc7.src.rpm) and Subversion (subversion-1.4.3-4.src.rpm) packages are installed by default. You can verify this either by looking into install.log in ROOT directory or running # rpm -q cvs and # rpm -q subversion (or # rpm -qi ... for more details). With Red Hat 9 CVS is also installed by default (cvs-1.11.2-10.i386.rpm), and one can install Subversion (subversion-0.17.1-4503.0.i386.rpm) from the CD#3.
  2. By default ROOT user is not allowed to commit changes in CVS. If you try, you'll have "root is not allowed to commit files" error message. You can another account or, if you prefer to work with CVS under ROOT, you need to recompile CVS with --enable-rootcommit switch. Here are details:
    • Download latest stable CVS source from the site (it was cvs-1.11.23.tar.gz at the time of writing).
    • Copy into /usr/local, unzip and untar the source:

      # gzip -d '/usr/local/cvs-1.11.23.tar.gz'
      # tar xvf '/usr/local/cvs-1.11.23.tar'

    • Compile with --enable-rootcommit option and make (/usr/local/cvs-1.11.23 must be current directory):

      # ./configure --enable-rootcommit
      # make
      # make install

    Notice that you can check the current version with # cvs --version (1.11.23 if you did described steps).

  3. Cervisia, KDESvn, Rapid SVN do not come with Fedora 7 by default (CVS v1.11.22 is installed by default). In fact, Cervisia (cervisia) is a part of kdesdk package. To download these packages make sure that you are connected to the internet and use yum to download and install:

    # yum install kdesdk
    # yum install kdesvn
    # yum install rapidsvn

Appendix D: Backup Planning and Procedures

Download PDF

This section outlines some essential points when making a backup of systems composed of a small number of computers (Linux and Windows) such as SOHO computers. The purpose of backup, obviously, is to provide an opportunity to restore critical files and system data in the case of their accidental or voluntary destruction or corruption. The question of how often to make a backup depends on such issues as how often the data are changed, how critical the data are? I leave this topic off for the answer depends on particular case and fairly subjective. What is more important is to have a plan for backup of your critical files and system settings, which enables you to verify the sequence and check out the vital points. Since backup a fairly rarely procedure relative to common tasks the essential backup procedures might help you to get back on the track if you forget something (in fact, I myself tend to forget backup details and consider backup planning as indispensable). The scope of this section is mainly about the full backup to Data DVDs (Brue-rays, CDs and other backup media are out of scope), and does not cover planning for inremental or differential backups.

General Windows Linux

Select source backup data (what to backup):

  • Personal files (to be taken as-is).
  • Personal files (to be encrypted).
  • Application configuration files.
  • System configuration files.

On this stage you also evaluate the size of source files and the number of backup media such as Data DVD you might need.

When making personal files backup don't forget to consider:

  • The backup of internet browser bookmarks 1 , and other bookmarks (for example internet radio stations and internet TV bookmarks used with Winamp multimedia player).
  • The backup of emails. If you use Thunderbird as email client, simply copy its profile at <homedrive>:\Documents and Settings\<username>\ Application Data\Thunderbird (this copies profile emails and settings).

When making application configuration files backup consider:

  • The backup of e-mail settings.
  • The backup of your favorite application settings. It is helpful to examine the contents of hidden <homedrive>:\ Documents and Settings\<username>\Application Data folder, where many applications store configuration and user data.
  • Creating the list of installed applications. Notice that unlike Linux Windows does not provide a standard method for generating such list.

Making system configuration files backup with Windows consider:

  • Full registry backup with regedit for example. The resulting file is typically about 100 MB. Although not small, yet still very small relative to Data DVD size, it can help you to restore the system in case of its failure.
  • The backup of current environment with command like C:\> set > set_environment.txt.
  • The backup of internet settings.
  • Full system configuration backup with Windows System Information utility (msinfo32.exe). The advantage of this method is that it enables you to quickly save detailed system information (hardware, system application settings etc) in one NFO file (typically about 1 MB), which you can later search out with the same msinfo32.exe utility.

Making personal files backup with Linux don't forget to consider:

  • The backup of internet browser(s) bookmarks from Firefox (firefox), Konqueror (konqueror), Galeon (galeon) etc. As with Windows you can take advantage of using one browser for Windows and Linux and making the backup of remotely stored bookmarks such as Foxmarks bookmarks (add-on for Firefox internet browser), which can be used from Windows also.
  • The backup of emails. If you use Thunderbird as email client, simply copy its profile from /<userprofile>/.thunderbird (this copies profile emails and settings). Notice that you can use the same Thunderbird profile for Linux and Windows clients provided that the profile is located on shared drive and default location of Thunderbird profile is updated.

Making application configuration files backup with Linux consider:

  • The backup of Konsole (konsole) history /<user>/.bash_history, its configuration /<user>/.bash_profile, and Konsole's shortcuts frequently used for recording typical console commands.
  • The backup of e-mail settings.
  • The backup of your favorite application settings. It is helpful to examine the contents of hidden /root subfolders, where many applications (such as .thunderbird) store configuration and user data (use /<user> if you are not the ROOT user). For the same sake it is useful to examine the hidden folder /root/.kde/share/apps, where many KDE applications store configuration and user data (for example, the Konqueror file manager store standard and custom profiles under konqueror subfolder).
  • The backup of the full list of packages installed during system setup: /root/install.log (one package might include many applications).
  • The backup, additionally, of the full list of last installed packages 2: # rpm -qa --last > Last_Installed_Packages.txt. The resulting file includes also the mentioned entries from /root/install.log if not deleted.

Making system configuration files backup consider the choices:

  • Partial backup of system setting based on critical system settings. For example, you can backup settings for an VPN internet connection, /etc/fstab file with configuration for partitions, which may include shared Windows-Linux partitions. Consider also the backup of current environment with the command # set > set_environment.txt and making a copy of /etc/profile file (environment variables settings).
  • Full backup of /etc directory, which contains major system settings. This last choice is what I suggest for it might be troublesome and may require valuable time to figure out what system settings are critical for backup and what are not. You also save time since it requires a single action. The size of /etc directory backup archive is typically about tens of MB on Fedora 7 system (20 MB on my system) that is considerably less than the size of full registry backup from Windows XP.
  • Besides /etc directory consider backup of grub.conf from /boot directory, log files from /var/log directory.

Choose intermediate backup location. You can skip this step if the size of your source backup data is small or well organized. In other cases, an intermediate destination (you simply copy source data to this location) serves the following purposes:

  • Prevents accidental data corruption of source files during different intermediate operations such as reorganizing, cleansing etc.
  • Enables you to better organize data to fit backup media such as Data DVD disks.
  • Enables you to encrypt sensitive data in intermediate location if you don't want to encrypt original source data.
  • Enables you to check data with antivirus, antimalware etc programs not affecting original source files. This can be valuable if you operate with these programs recently and not sure of their reliability or effects.
  Linux provides extra benefits of intermediate backup location with the use of symlinks (symbolic links). You can design backup directory structure with symlinks without coping original data to intermediate location. Then you drag-and-drop symlinks along with actual files and folders to the burning application such as k3b and make a backup. In the process k3b follows symlinks as if they were actual folders or files. You cannot work this way with Windows since most close analog of sysmlinks in Windows are shortcuts that, however, are not followed by Windows burning applications. Notice the syntax for creating a symlink: # ln -s <targetdirectory> <softlinkname> (the name of softlink is after the target name).

Choose backup software and backup media. In case of DVD media, make provisions that final disk is read-only (choose DVD+R/DVR-R or be prepared to finalize DVD+RW/DVD-RW on the next step).

Roxio Creator or Nero. K3b (k3b), GnomeBaker (gnomebaker), Graveman! (graveman), Brasero (brasero).

Backup data to backup media and verify files. One of the most essential points of the whole backup process is to provide data integrity 3. At minimum you can consult file properties to make sure that original byte size of all files coincides with that of on destination media. In more rigorous approach you might want to provide with files their checksums (alternatively called control sums, hashes or digests).

If you decided to provide checksums for files consider:

  • Windows analog (md5sum.exe) of Linux md5sum command, which enables you to compute MD5 checksum (128-bit) for a file and verify file integrity with that checksum.

    To create a checksum: run md5sum <fullfilename> (it is assumed that the program was put into the system32 directory and the current directory is the directory of the file for which you want to create a checksum since the particular realization of the program does not work with arbitrary paths). Copy the output into the text file: <fullfilename>.md5 (file name and extension does not matter). Now you can verify the file with the following: md5sum -c <fullfilename>.md5 (assuming that the file is in the same directory with checksum).

  • Generating checksums with GnuPG for Windows, which is the counterpart of the gnupg package installed by default for Linux. Besides MD5, GnuPG works with SHA-1, RMD-160, SHA-256 digests.

When decided to provide checksums for files consider the programs installed with Linux by default:

  • md5sum
  • gpg (the default digest is SHA-1)

Make labels for disks and store backup in safe place. If you used Data DVD media for the backup you might want to put labels on DVD disks reflecting answers on when and what questions. There are 3 additional pieces you need to finish with that:

  • The label-making software.
  • The special photo quality CD Labels (e.g. Fellowes labels) used to print out labels with a color printer.
  • CD/DVD Stomper (or label applicator, which enables you to stick evenly your label with DVD disk front side) 4.
MediaFACE 5 for DVD labeling (I use MediaFACE II, purchased about 10 years ago, which suites me fine up to now). The following software can be used for making DVD labels with Linux:
  • gLabels (glabels) is capable both of making circular DVD labels and making rectangular-type labels for DVD cases.
  • KoverArtist (koverartist), which is capable (v0.5) of making square labels only for DVD cases.
  • cdlabelgen, which is older command-line utility installed by default with Red Hat 9 and available for Fedora 7 from internet repo (see help pages by typing man:cdlabelgen into Konqueror's address bar) capable of making square labels only for DVD cases.

  1. If you use internet from multiple computers (home and office environments, laptop computer) the task of manual synchronization of internet browser bookmarks between different computers becomes daunting and ineffective. In such environment, and especially in mixed Windows and Linux environment, you can take advantage with Firefox's browser (versions are available for windows and Linux) Foxmarks add-on that automates synchronization of bookmarks between different computers (bookmarks are stored on or your server, and additionally you have a local synchronized copy). The foxmarks bookmarks was best new software that I discovered for myself in 2008.
  2. The command output will not show you the packages that were installed from source (such as *.tar.gz, *.tar.bz2 etc packages). For example on my Red Hat 9 system, this command does not show k3b (CD/DVD burning application) and thunderbird (compact mail client) packages that were installed from source. You can consult /usr/local folder for such packages since this is the location where these packages are typically installed.
  3. The software might fail to report about problems while burning to the Data DVD media. For example, Roxio 6's Drag-to-Disk does not report about files and folders, which were missed to be copied. The reasons of file/folders burning failures could be long file names (including too deep directory structures), unacceptable characters etc. Typically, you should always verify the file integrity of burned files against source files.
  4. Once label is printed out, detach the label by placing label sheet printed side down on even surface and by peeling the label backing sheet away from the label. Then put the label on DVD stomper with sticky side up and put the DVD disk (data side up) over the center of the stomper and, finally, push down the DVD disk with your fingers on the center of the DVD disk.

Email me: lambert1791 at gmail dot com.