Linux 101

From Sfvlug

Welcome To GNU/Linux 101 - An Introduction

Contents

Up Front

This is a work in progress, an attempt to make amends for a bad presentation. I've started with the original outline for my presentation but after getting a better idea of the types of solutions people new to Linux are looking for I'm in the process of revision and improvement. I will also add links to help make it a better resource. Many of the links point to Wikipedia articles that use the same Mediawiki software that is used for this wiki. The links are not designed to open in a new browser window so be sure to bookmark this site to make sure you can easily get back if you get lost surfing. --Miasma 20:23, 23 February 2009 (PST)

This document is designed to help Linux newbies that are new to Linux but may not otherwise be computer wizards. An attempt has been made to avoid using technical terms without a proper explanation. Many terms such as keyboard and mouse were once considered technical jargon but have now been accepted as terms understandable by almost everyone. Today almost everyone that has been using a computer is also somewhat familiar with even more technical terms like RAM, CPU or software. For terms that require more of an explanation there will be a link to a Wikipedia article or other resource with further explanation. If you find a technical term that is not properly explained, doesn't have a link to an explanation or is otherwise difficult to understand please let us know.

What Is GNU/Linux?

What has become known to most people as "Linux" is actually made up of many component parts created by many different people for many different reasons. On this wiki you may see the terms "Linux" and "GNU/Linux" used interchangeably to reference the entire system. The term "GNU/Linux" is more correct when speaking of the entire system both in technical and political terms. The term "Linux" was created to make a nod to both Linus Torvalds, the original developer and to UNIX the operating system that served as a major inspiration and model for Linux. The term "GNU" is an acronym of "GNU is Not Unix" where the G in GNU makes a reference to itself, which is a common bit of developer humor based on the programming technique of recursion.

Both GNU, and Linux are made up of FLOSS also known as F/OSS or FOSS which is an acronym for Free Libre Open Source Software. Using the term "FLOSS" intended to demonstrate that it is not just free as in free beer but also free as in freedom. While everyone can easily understand why free as in free beer is desirable the understanding of why free as in freedom is even more important is more difficult. To understand why freedom to inspect a program's source code is important you really need to have a decent understanding of just what source code is, and the understanding should go deeper than reading the article in the previous link.

Brief History of Computing

The following history is not comprehensive and is included to give some background for understanding why open source software is important even to people that have no intention of learning how to program. If you already have a good understanding of computer history and are anxious to get going you can skip the history sections.


manual & mechanical calculating devices

The earliest computational devices were our own fingers, it is not a coincidence that word digit is used to describe both the appendages at the end of our limbs and the basic unit for numbers. Our fingers were supplemented early on by notches made in a stick or other handy object, most likely to record the passage of the seasons to help know when animals would migrate or when berries would be ripe. With the invention of agriculture our need to mark the passage of time became even more crucial. We needed to know when to plant seeds and when to harvest. Fingers and other counting schemes were supplemented with other devices and methods which used principles similar to an abacus, which is still in use today. These systems often involve some sort of grid where objects were manipulated according to a set of rules. Today's computers operate in a similar manner though much more sophisticated where the grid and pebbles have been replaced by banks of electronic switches and the rules for manipulating the objects have been replaced by computer programs stored in electronic and electro mechanical devices.

WWII code breaking machines, Alan Turing

Most of the mathematical counting and calculating systems reached a level where we could accurately predict all sorts of phenomena relating to the passage of time and the ebb and flow of natural processes. There were many advancements in mechanics and electronics in the last century. The second world war provided several important problems requiring fast and accurate calculations, but the problem that contributed most to help fuel the development of modern computers was the system of ciphers used by the Germans based on Enigma the electro mechanical device used to encode and decode highly sensitive communications. The British mathematician Alan Turing who is considered by many to be the father of modern computer science, was set to work to crack the German code.

analog vs digital

Early modern computers were designed based on either analog or digital circuits. Early on the analog devices had a big advantage in that complex problems could be modeled more easily and accurately than with digital devices. The biggest problems with analog computers involve difficulties in modeling problems that vary over a wide range and with inaccuracies caused by noise and other factors. Early digital computers used circuits that were either on or off eliminating many of the problems of analog computers but introducing problems of their own. Early digital computers used vacuum tubes that in turn used a whole lot of electricity and had a high failure rate. Improvements in design and the later invention of transistors overcame their limitations.

development of software

Early computers and computational devices had their functionality built into the design of the device itself and were often difficult to adapt to solving new problems. The goal was to develop devices that could easily be changed to solve new and different problems and not just the ones they were originally designed to solve. Clouded in secrecy well into the 1970's the Colossus computers designed and used by the British to crack the German ciphers was the first electronic digital machine with programmability which was achieved through the use of holes punched in paper tape. The tape represented binary machine instructions through on/off switches representing ones and zeros. Those ones and zeros were used to represent not just the data that was being processed but also the instructions on what to do with the data.

development of programming languages

While effective in instructing the machine to do particular tasks those instructions were difficult for humans to read and understand. The early programming instructions were those binary machine level instructions mentioned above. It is difficult for humans to deal with data or instructions composed of binary numbers. Just what does 100 1000 1111 10000 10111 101010 mean?

What was needed were higher level instructions that could be easily understood both by humans and still effectively instruct the machine. Modern computer programming developed out of that need and brought about the development of programming languages. Assembly language was the first language to abstract programming instructions above the machine level but is still considered to be a low level language difficult for humans to understand and work with.

We needed a better way to deal with programming instructions than just machine or assembly language, it was still too difficult for humans to deal with. Computers from different manufacturers do not necessarily use the same binary instructions to perform the same tasks which even further complicates things. What was needed was a higher level of abstraction where an instruction given by a human to one computer had the same result when given to another computer which may not even have been built by the same manufacturer.

higher level languages ( assemblers, interpreters, compilers, bytecode)

Having identified the problem of humans needing an easier way to give instructions to a computer we realize this now creates a new problem. How do we get the computer to understand humans when all they speak is a series of ones and zeros. We need to translate the human instructions into instructions the computer can understand. We do this by taking the document written by the human and transform it into instructions the machine can deal with. Currently there are basically four ways to turn a human understandable program into a machine understandable program.

assemblers
The first method is by using what is known as an assembler which uses mnemonic abbreviations for machine level instructions. This is still very close to the metal and is considered to be a low level language. A programmer can do some amazing things using assembly language especially in regard to doing things very quickly. The problem is that it is still relatively difficult to understand and that it is not very portable and code written for one machine may not work at all on a comparable machine that uses different hardware.

interpreters
The second method is by writing a special program that is designed to convert human instructions into machine instructions and to execute those instructions immediately. This type of special program is called an interpreter because it interprets the instructions written by humans and turns them into instructions that the machine can understand and carries them out right then and there. This helps solve the problem of human's not easily reading and understanding machine level instructions but with this method each and every time the machine needs to execute the human's instructions it needs to reinterpret them. This wastes all the time it takes to convert human readable instructions to machine readable instructions as unproductive overhead.

compilers
The third method helps to reduce that wasted overhead by using a special program called a compiler to take the human's instructions and convert them into binary instructions that are not executed immediately but are saved to a binary file known as object code that can be directly executed by the computer without needing to go through another process of interpretation. The human understandable document is called the source code and the compiler turns it into a binary form is called object code. This eliminates all the overhead of interpreting the source code each time it needs to run that program. The problem with this method is that it is more difficult to find some kinds of errors in the source code and each time you make even a small change to the source code the entire program needs to be recompiled.

bytecode
The method of using bytecode is somewhat of a compromise of getting high level human understandable instructions into low level machine understandable instructions. Using bytecode can be looked at as type of a hybrid designed to get the benefits of using both interpreters and compilers where a high level language is compiled into bytecode which can be more quickly and easily be translated into machine level instructions but still remains portable across machines with different hardware architecture.

Brief History of GNU/Linux

History Of GNU

GNU was created as free alternative to UNIX. The early days of creativity, exploration and discovery were special times where there was little or no thought of the commoditization of software. After all, the biggest cost was with the hardware itself and the software came with the hardware. Those were heady times where bold new thoughts and ideas were shared in a true spirit of creativity and innovation. Even though UNIX was a proprietary operating system it was openly shared at Universities all around the country. Since UNIX was written using the new high level C programming language instead of a machine language it was highly portable and much easier to adapt to new hardware.

As with free beer a no or low cost operating system helped establish a base of customers. Remember that in earlier time the big cost of a computer system was the hardware itself, some of which could actually fill an entire building and require a small army to run giving away an operating system to help build a user base was not a silly idea. As corporations started wanting to commoditize operating systems there was a natural resistance from academic communities that had become accustomed to sharing ideas, after all that is what universities do, they disseminate knowledge.

In the early to mid nineteen eighties one of the people who had been very involved with such a community at MIT decided that being able to freely share information was crucial to a society and started the GNU project which in 1985 evolved into The Free Software Foundation and the GNU Operating System.

[1]

History Of Linux

Linux started by student as a hobby [2] [3] [4]



more on source code

open source vs proprietary

operating systems [5]

single task, single user

multiuser multi-task

common uses of computers
server
scientific educational
personal (desktop) computing


Advantages

free as in no or low cost
free as in freedom
can be modified easily by user
projects need not die with original author
options, customizable workspace
designed for usability not profitability

Disadvantages

incompatible with some proprietary software, mostly games
drivers for new hardware can be delayed and may lack features

Common Uses of GNU/Linux

Server

file server
web server
firewall/router

Desktop

workstation
application server
kiosk
development (traditional programming)
user - system administrator - developer
Common User Applications
Linux Alternatives To Popular Windows Applications
http://www.linuxlinks.com/article/20070701111340544/Equivalents.html
http://goldgod.wordpress.com/2008/05/17/windows-equivalent-to-linux/
http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software
http://www.linuxrsp.ru/win-lin-soft/table-eng.html
http://www.linuxalt.com/

Cross Platform Applications Available For Windows And Linux

These are applications that are available on both Windows and Linux. You can install them and try them out on your Windows system without even needing to install Linux. For the most part they behave identically as they will when running on a GNU/Linux system.

Web

SeaMonkey Web Suite (Browser, E-mail, HTML Editor, Chat Client) http://www.seamonkey-project.org/
Firefox Web Browser http://www.mozilla.com
Amaya Web Browser http://www.w3.org/Amaya/
Thunderbird E-mail http://www.mozilla.com
X-Chat IRC Client http://www.xchat.org/
Pidgin Instant Messaging http://www.pidgin.im/
RSSOwl RSS Client http://www.rssowl.org/
Azureus P2P File Sharing http://azureus.sourceforge.net/
Filezilla FTP Client http://filezilla-project.org/

Office

OpenOffice.org Office Suite http://www.openoffice.org/
Abiword Word Processor http://www.abisource.com/
Scribus Desktop Publishing http://www.scribus.net/

Media Tools

VLC Media Player http://www.videolan.org/
MPlayer Media Player http://www.mplayerhq.hu
Handbrake DVD DVD to MPEG-4 Converter http://handbrake.fr/
Juice Podcast Manager http://juicereceiver.sourceforge.net/index.php
Audacity Audio Authoring http://audacity.sourceforge.net/

Graphic Tools

Gimp Graphic Tools http://www.gimp.org/
Inkscape Vector Graphic Tools http://inkscape.org/
Blender 3D Graphic Tools http://www.blender.org/

File Tools

PeaZip Archive Manager http://peazip.sourceforge.net/

Educational

Celestia Digital Planetarium http://www.shatters.net/celestia/index.html
Stellarium Digital Planetarium http://www.stellarium.org/

Fun

BZFlag Game http://bzflag.org/
Battle For Wesnoth Game http://www.wesnoth.org/

Development Tools

XEmacs Editor http://www.xemacs.org/index.html
SciTE Editor http://scintilla.sourceforge.net/SciTEDownload.html
Eclipse Extensible Platform & Java IDE http://www.eclipse.org/
Wget Web Download Tool http://www.gnu.org/software/wget/
cURL Web File Transfer Tool http://curl.haxx.se/
TightVNC Control Remote Computer http://www.tightvnc.com/

Transitioning To GNU/Linux

Transitioning to GNU/Linux should be done using a strategy that will provide the least difficulties to you. It may require having two systems running concurrently. Each person's path will be different depending on many factors including those that do not involve technical issues. No matter what your individual strategy there are some things you can do to make things easier on yourself and this section will try to cover some of those things as well as covering some of the more common issues common to all.

WARNING! Any change you make to your computer (especially installing any new software) has the potential of causing damage to your computer and all your data. We can't take any responsibility for any damages to your data or to your computer or anything else resulting from trying to follow any advice or information posted here in this document. You must take full responsibility yourself and be sure to read and follow any documentation provided with any software you install on your computer. Even following instructions to the letter has the potential to cause damages, you should make sure to backup all data you can not afford to lose before attempting to make any changes to your computer. This is good advice in normal day to day use, but is especially important when installing any new software, repartitioning your hard disk or making any changes to your computer.

Document What You Do

Documenting everything you do is advice that not everyone (including myself) always follows, but doing it can save a lot of grief in the future if you document as much as you can and save your notes in a separate place other than on the system you are working on. If your system becomes inoperable and you have stored your notes on that same system then you won't have access to notes that may be a big help in figuring out what went wrong and how to fix it. Be especially sure to document any entries and configuration choices you make when installing new software. This is a good habit no matter what system you are using. Your choices may seem obvious at the time but weeks, months or even years later it might not be so obvious.

Test Before You Commit

This may seem obvious, but you should make sure you spend some time with GNU/Linux and make sure you know it will do all of what you need it to do before an attempt to switch to it as your everyday operating system. Operating systems are just like any other tool and the biggest, best, most expensive tool in the world is worthless to you if it doesn't do what you need it to do.

Put it on an old spare computer first. While it won't give you the same snappy experience as you would get on your latest and greatest system it should still give you a better idea of whether or not a GNU/Linux or a specific flavor of GNU/Linux is going to work for you. You may also be pleasantly surprised to find out that old dog may still have some life left in it. Any 450MHz Pentium II or better system should do just fine with a standard Linux distribution. Anything 486 to Pentium II should also work but may require a distribution designed to work well on older gear like Puppy Linux or Damn Small Linux to get good results.

The safest and easiest way to try out GNU/LInux before making a commitment is to boot your system up using a live CD or some other removable media. At the time of this writing most computers up to ten years old are capable of booting from a CD ROM drive. For machines older than ten years it may also be possible to boot without installing but it may involve using a floppy to start the boot process and finishing booting using a CD ROM. Most modern machines less than two or three years old will probably have the capability of booting from a CD, thumb drive or almost any removable media.

Depending on the capabilities of your system and the particular GNU/Linux distribution you use you may not get a satisfactory experience compared to what you get from a full installation. When booting from a live CD as much of the distribution as is practical will be loaded into RAM and if you have a large amount of RAM compared to the size of the Linux distribution you are testing, you may actually experience some faster performance than running from a Linux distribution installed to your hard disk. However, even if programs load faster when run from memory you may have problems when reading large files or running several programs at the same time.

Keep As Much Of Your Old System As Practical

I spend over 90% of my time on a computer using GNU/Linux but I still keep one computer that is capable of booting Windows NT. I rarely need to use it and I have even made that into a dual boot system with half of the hard drive devoted to GNU/Linux and set as the default system to use unless I switch to Windows at boot up. Because I still occasionally have need to have access to data and specific programs that only work under Windows I keep that available. What you should be of keeping Windows, OSX or any other legacy operating system will depend entirely on your specific situation, but you should plan on keeping as much as you can as long as you can.

Install Without Repartitioning

It is now possible to install a Linux distribution to a file in your Windows file system. Not every Linux distribution is designed for this but if you insert a Linux distribution disk in your drive while running Windows any distribution designed to be installed in this manner should open a window with information on how to do it. Follow those instructions and you should have a more or less working Linux system. Installing Linux in this manner is more for trying out than anything else, but installing this way should be relatively safe and won't require repartitioning your drive.

Using The Command Line Shell

Before today's modern GIU (Graphical User Interface) in order to use a computer the user needed to type in commands on a keyboard, there was no point and click. Most of the information the computer gave in response to a command was printed out as text on a monitor or printer. While many people are intimidated by a blank line with a blinking cursor it is not really all that difficult to use once you learn some of the basic commands. You don't need to learn how to become a professional programmer or system administrator to get the benefits.

This section is still under development. Until it is finished you may want to visit some of these links:

LinuxCommand.org This nice looking site is not cluttered with advertisements and hosts a work-along tutorial. I haven't gone through all of the tutorial but it looks like a good introduction for beginners that are not already system administrators, developers or power users.

[6] This is a collection of command line cheat sheets good for quick handy reference, but NOT good as a tutorial or introduction.

Command Directory A directory of Linux commands freely available from the publisher of O'Reilly's Linux In A Nutshell, 5th Edition organized alphabetically. Use this for reference with or without owning the book.

Selecting A Distribution

The selection of a distribution depends on several factors but the two most important are the type(s) of work you intend to do and what type of support you will need. While it is possible to modify any distribution to accomplish virtually any task you could expect from any other distribution it is a good idea to start off with something already close to what you need. In selecting a distribution you should consider which desktop environment comes standard as well as what applications are provided. While it is possible to install virtually any desktop environment and any applications on any distribution it is quicker and easier to start out with a distribution already configured close to what you expect you will be using.

The selection of a distribution also depends on what type of support you expect you will need. If you are still a bit shaky with your computer skills support should be one of your major considerations Ubuntu and its siblings should be on your short list but, having a friend that is familiar with a particular distribution is a big help and can be more important than some of the other considerations.

When I was starting out in Linux I was lucky to have a couple of older computers that I could use for experimentation. I must have tried every major distribution available and continued to experiment ever since. If you don't have the time or inclination for experimentation and aren't sure which distribution to choose take as much time as you have available and do some research. Lacking time for research just go with the current most popular distribution which at the time of this writing is Ubuntu.

Here are some sites with information useful in comparing distributions:

DistroWatch.com http://distrowatch.com/
Wikipedia http://en.wikipedia.org/wiki/Comparison_of_Linux_distributions
ibiblio http://distro.ibiblio.org/pub/linux/distributions/

Selecting A Desktop Environment

Unlike a commercial proprietary operating system GNU/Linux has more than one way to do just about anything and the desktop environment is no different with many choices.

A desktop environment is the workspace in which you run GUI (Graphic User Interface) applications. It provides a consistent look and feel to applications that may not have been designed to work in the same environment. It accomplishes this by providing basic standards and libraries (prewritten code designed to be used by other applications) that help make it easier for developers to write programs that need a GUI. This also helps developers to write applications that can more easily share data with other programs.

The basis of most current GNU/Linux distribution desktop environments is the X Window System which like many open source projects has split into two forks, XFree86 and X.org , with most recent distribution releases using X.org. The X Window System needs a window manager to help complete the proper display of a GUI application. The window manager draws the frames around the application's window and controls the window's placement. Some of the lines between the components that make up the total desktop environment are not distinct.

There are nearly unlimited variations possible for configuring the desktop environment, but many of the available choices and configurations should be left to experienced user. For beginners I suggest going with one of the following three choices. Then after gaining more experience you may then want to experiment.

More On Desktops

Gnome

Gnome is one of the oldest and most popular desktop environments for the GNU/Linux desktop. The current philosophy of Gnome is minimalistic and basic. It is fairly easy to learn and master but lags in the capacity for easy customization, especially if you stick to the default Metacity window manager. If you have a fairly modern computer with a decent 3D graphic card and you want to jazz up Gnome you may want to give Compiz a try. Some distributions include Compiz but it will not work properly if you don't have a 3D graphic card with appropriate drivers installed. Since many graphic card vendors do not provide open source drivers you may need to install them yourself. Many distributions include tools that make it fairly easy to download and install the necessary drivers.

KDE

KDE is also one of the oldest and most popular desktop environments. The philosophy of KDE encourages the inclusion of many features and customizability. Unfortunately, the new KDE 4 release is still not stable and is lacking many features found in the older 3.5 version. This is due to some major changes in architecture designed to make it easier for developers and users to allow applications to share information. As of this writing the current release is 4.2 and while it may be stable enough for some users and for some purposes I'd recommend staying away from using it for any serious work until they get more of the kinks worked out.

XFCE4

XFCE is a lightweight desktop environment that works well with older systems. Since the release of XFCE4 it has become much more of a contender. It still has fewer applications that were written specifically to run under it than Gnome or KDE but it does a good job at running applications designed to be run under Gnome or KDE.

How To Get Help

Beginners Only

Here is a good newbie starter guide with current (Feb. 20th 2009) information. I'm not sure how long this will be available so I'm putting a special mention and link here. Linux Starter Pack is a free download of a recent (Feb. 20th 2009) special publication designed specifically for Linux newbies that are not necessarily already computer wizards. It originally came with a DVD with Ubuntu but the step by step instructions should be good for any recent Ubuntu installation disks. There is also much good info that can be applied to any recent Linux distribution but not as a step by step guide.


Some of the other subsections in this his How To Get Help section may contain material that was designed specifically for people that already have a strong background in system dministration or development using other operating systems but have little or no experience with GNU/Linux. This Beginners Only section is designed to contain only information and links for beginners with more modest computer skills, people that are NOT already power users, system administrators or developers. Some of the information and links located here, however, may also be found in other sections.

There are two pieces of advice I have seen given to GNU/Linux newbies quite often, they are "Google is your friend" and "RTFM" (Read The Fine Manual) and if possible you should try to avoid being reminded of them. Chances are good that you are already familiar with Google but did you know that there is a special page at Google devoted to Linux searches at http://www.google.com/linux . When someone tells you to RTFM the manual they mean is the man page that comes with your distribution or with the application you have a question about. Many times a newbie will jump into a forum or chat and ask a question that could easily be answered by doing a quick Google search or reading the manual that came with feature under question. Please make an attempt to find an answer to your question yourself before asking a stranger to give it to you.

One thing that many GNU/Linux newbies don't seem to understand is GNU/Linux community is very different from those that surround the proprietary commercial operating systems, it is entirely a different way of doing things. GNU/Linux was written by developers for their own personal use and made available without cost to anyone else with no strings other than to make any improvements they might make available to everyone else under the same conditions. This creates a very different culture than that surrounding any commercial operating system. It should not be surprising that those who have already paid their dues and gained knowledge might have little tolerance of newbies that are looking for instant gratification and to be spoon fed information easily found by themselves. Even if you bought a GNU/Linux distribution from a commercial vendor don't treat the surrounding community as if they were paid customer support. Unless you are contacting someone at an official support site as part of a paid customer support contract it is likely that the person you are asking a question of is just another user like you.

This doesn't mean that you should be afraid of asking questions of anyone, most people that hang out in forums and chat channels are there because they enjoy talking about GNU/Linux and are quite willing to help people with less knowledge than themselves. Just make sure that you are polite and have already put in some effort to find the answer to your question on your own first. I also recommend reading Eric Raymond's essay, How To Ask Questions The Smart Way before asking help from a stranger.

No one, not even Linus Torvalds himself, has perfect knowledge of all the parts and pieces that make up a GNU/Linux system. Maybe some day there will be a single repository of all information necessary for anyone to understand anything they might want to know about GNU/Linux but that day has yet to come. The first order of business for anyone desiring to know more about a particular subject is to clearly define their objectives. What is it you want to do? Do you just want to be able to browse the Internet, send and receive email, listen to some tunes and play a game of solitaire? Maybe you have been thinking about learning how to write your own programs or host your own website. The better you can define just what it is you want to do the better you can start finding the right information you need to do it.

The first order of business in making a journey of discovery on the Internet is to learn how to use a search engine. At the time of this writing Google is the single best search tool and anyone reading this is probably quite familiar with it already.

How To Ask Questions

In the early days of Linux's development it was often necessary to go directly to a high level developer to find information necessary for accomplishing a particular task. When walking into a dragon's lair looking for a favor from the dragon one must display courtesy and respect. Eric Raymond first published this advice eight years ago, designed to be read by users wanting to get knowledge that was only available from serious developers and hackers with little tolerance for spoon feeding newbies. Conditions have since improved for newbies with improved access to knowledge that do not require asking questions of the original developer, but these are still excellent guidelines when asking for help from any stranger no matter what their sill level.

manuals (aka man pages)

Man pages are documents found in most UNIX and UNIX-like operating systems that display information about commands, configuration files and other documented features. They are available on all major Linux distributions. They can be very terse and difficult to understand, but are an essential read before asking help from a stranger. In asking a question in a public forum about a subject covered by a man page but for one reason or another did not answer your question you may want to mention that you have already read the manual but need additional help. But, don't fib and say you read the man page if you haven't, if you are asking a question from an experienced user the chances are good that they are familiar with what is and what isn't covered in the man page.

To use them open a terminal window and type: "man" (without the quotes) followed by the name of the command for which you need information. The following should open a manual page for the man command itself. On most systems you can navigate through a man page using <Page Up>, <Page Down> or the up and down arrow keys and you can quit by pressing the <q> or <Q> quit key. Press <h> or <H> for help and other key bindings.

username@deepthought:~$ man man

After pressing <Enter> you should see a screen like this:

MAN(1)                        Manual pager utils                        MAN(1)

NAME
      man - an interface to the on-line reference manuals

SYNOPSIS
      man  [-c|-w|-tZ] [-H[browser]] [-T[device]] [-X[dpi]] [-adhu7V] [-i|-I]
      [-m system[,...]] [-L locale] [-p  string]  [-C  file]  [-M  path]  [-P
      pager]  [-r  prompt]  [-S  list] [-e extension] [--warnings [warnings]]
      [[section] page ...] ...
      man -l [-7] [-tZ] [-H[browser]] [-T[device]] [-X[dpi]] [-p string]  [-P
      pager] [-r prompt] [--warnings[warnings]] file ...
      man -k [apropos options] regexp ...
      man -f [whatis options] page ...

DESCRIPTION
      man  is  the  system's manual pager. Each page argument given to man is
      normally the name of a program, utility or function.  The  manual  page
      associated  with each of these arguments is then found and displayed. A
      section, if provided, will direct man to look only in that  section  of
      the  manual.   The  default action is to search in all of the available
      sections, following a pre-defined order and to show only the first page
      found, even if page exists in several sections.

      The table below shows the section numbers of the manual followed by the...

Books

(printed or electronic)

free electronic books

The books in this section are available online to read online and/or download and are on various subjects related to GNU/Linux. This list currently favors books suitable to people new to Linux, some may be designed power users, developers or system administrators.

Linux Starter Pack is a 130 page PDF version of a recent Linux Format publication. Linux Format is a magazine published in the UK but also available here in the USA. This was posted Feb. 20th 2009 as a guide for Linux newbies needing a jump start into the Linux world. The original publication included a DVD with Ubuntu and while much of the step by step instructions are Ubuntu specific there is still a lot of good information that can be applied to other distributions.

Debian Documentation There are several book length documents here available to read online or for downloading. These documents are written specifically for the Debian distribution, but have much good information that also applies to other Debian based distributions like Ubuntu, Mepis, Mint Linux and others. Aside from package management issues much of this information can be applied to other modern distributions not based on Debian. A good site for all, beginner and expert alike.

The Art Of UNIX Programming This book on UNIX is available in print, but you can read it for free online. This book is of value to anyone using or planning to use UNIX and all UNIX based operating systems including Linux. It is not a step by step guide or How-To, but cuts to the core of the philosophy and culture of UNIX like operating systems giving valuable insight to the how and why things are done. Eric Raymond is one of the pillars of GNU/Linux and the open source movement. Be sure to read his essay on How To Ask Questions The Smart Way

Knowing Knoppix beginner-friendly book designed to help with the rescue of crashed Windows computers or just to learn more about Knoppix and Linux. (3.8MB download only)

Linux Client Migration Cookbook, Version 2: A Practical Planning and Implementation Guide for Migrating to Desktop Linux The goal of this IBM Redbook is to provide a technical planning reference for IT organizations large or small that are now considering a migration to Linux-based personal computers. (5.8MB read or download)

The Linux Development Platform Direct download of 317 page book in PDF format on "Configuring, Using, and Maintaining a Complete Programming Environment." (3.6MB download only)

GNU Emacs manual A 561 page manual for the Emacs editor used for editing programs and doing everything short of taking out the trash. Worth at least a look if you are or plan to become a programmer. This editor is used from a command line but also has a GUI version. (3.2MB read or download)

[ http://ivan.tubert.org/doc/vimbook.pdf Vi iMproved (Vim)] A 572 page manual for Vim a rival of the Emacs editor favored by some and comes standard on most Linux distributions. This editor is used from a command line but also has a GUI version. (3.7MB download only)

Introduction To Linux: A Beginner's Guide A 249 page book good for beginning level system administrators, developers and power users. Written in 2002 it is a bit dated but still contains some useful information. (1.3MB zip file, download only)

Bash Guide For Beginners A 124.6KB single page HTML beginners book written for system administrators, developers and power users, those who need to use the command line shell. Bash is the default shell for most Linux distributions. This version last updated in 2006

GNU Bash Manual This 156 page guide is available in several formats and was last updated in 2007 (read online or download)

GNU Bash Reference Manual Online version of 204 page reference book on the Bash Shell. More for system administrators and developers than end users. (read online only)

Linux From Scratch is a 316 page book designed to help someone build their own custom Linux system from scratch rather than using a community or commercial based distribution. (read online or download)

Teach Yourslef Linux In 24 Hours 400 page book circa 1998 is way out of date since it was written around installing an old version of Red Hat that came with the book. Some information is still valid but the book no longer works as the work along guide it was intended to be. (3.8MB download only)

Self Service Linux Mastering The Art Of Problem Solving, a 456 page book geared more for Linux professionals and power users as an aid to diagnosing and solving problems. (3.8MB download only)

Periodicals

(printed or electronic)

Online Message Boards

(wikis, forums, newsgroups, blogs)

Google

Google has a couple of handy specialty search pages, there is one for Linux and one for BSD that are designed to return results specific to Linux or BSD. Bookmark them and use them when searching for info on your favorite operating system.

Online Chat

IRC

(how to ask a question (favor) from a stranger)

Schools

People

friend

Having a friend, relative, co-worker or any familiar and friendly face that is already an experienced GNU/Linux user is a huge plus. It can make all the difference in the world especially if they are both knowledgeable and willing to help others. Your choice of which distribution or which desktop environment to use should make a knowledgeable friend a significant factor in your decision.

For example, currently Ubuntu is the most popular distribution, especially with beginners, but you have a friend that is quite knowledgeable with using the KDE disktop on Slackware, a distribution more suited for advanced users. In such a situation you may actually be better off using Slackware than Ubuntu, but that depends a lot on just how much help your friend is willing to give you the time and effort required.

paid consultant

At times even a knowledgeable and willing friend can't provide you with the support you need. Depending on your specific situation you may benefit from hiring a professional consultant. When hiring a paid consultant be sure to do your homework first and check references. If you have valuable and/or sensitive information on your computer all the more reason to insure that you are dealing with a trustworthy as well as knowledgeable person. A good consultant should have good communication skills as well as good technical knowledge.

There is a guide by Joshua Drake that can be found on several sites but this one at SGI seems to be the original since it is the link found at The Linux Documentation Project.

Most major distribution either provide consulting services themselves or will refer you to a business partner that does. If you think you may need a paid professional consultant or developer you should factor that in you decision on which flavor of GNU/Linux you want to select, so check out what is available carefully before you make a choice you may have to live with for years to come.

LUGs

Linux user groups provide an excellent opportunity for people to meet other people who live near them that share an interest in GNU/Linux. Linux user groups are like many other social groups formed around common interests and are very dependent on the efforts of individual members and what types of venues are available locally.

Some groups hold what is known as an installfest where people bring their computers and have experienced users help install GNU/Linux on them. With modern distributions and live-CDs this is not as necessary as it once was but some groups continue with the installfest tradition. AT SFVLUG we rarely have a formal installfest but our current venue allows us to bring hardware to most regular meetings. If you need hands on assistance go to an installfest or ask someone in the know if it is OK to bring your hardware to a regular meeting.


You might also want to take a look at the Wikipedia article about Linux user groups.

Here is a list of Linux User Groups from around the world.

Los Angeles Linux User Groups website has information about many groups in the Los Angeles area and not just in Los Angeles proper.

If there is no current local group you may think of starting one yourself. There is information here on how to start one.

Personal tools
Other sites