Guide to Unix/Linux

Linux&reg; is an open source, Unix&reg;-like kernel and operating system. The author of the kernel itself is Linus Torvalds, plus a loosely-knit team of programmers who enhance it in a collaborative effort over the Internet. This page provides a brief overview of the main features of the Linux kernel and system, especially in comparison to other Unix-like systems. There are several other Wikibooks about Linux with more information.

General Introduction

 * Distributions: The Linux system that you actually obtain, install, and run, is one of the many available Linux distributions. A Linux distribution (or 'distro' for short) is a bundle of the Linux kernel and applications and a suite of programs for installing and maintaining a Linux system.
 * There is much variation between distributions concerning the available packages, the installation procedure, the preferred desktop environment, and even the Linux kernel configuration. Some distributions have different target audiences: these might be home users, enterprise users, free software supporters, hobbyists, or users of certain applications.
 * Typically, distributions are in CD or DVD form. One can download them as a raw disc image in ISO format and burn it. One can also inexpensively purchase a Linux distro as a retail package. Live CDs or DVDs allow users to boot from a disc and run Linux using a RAM disk rather than a hard disk.
 * A Neutral Look at Operating Systems has a comparison of Linux systems.
 * Wikipedia has a list of Linux distributions.
 * Packages: A complete GNU/Linux operating system uses many free software (open source) packages from the BSD, X11, GNU, and other projects. There are also non-free packages without source code, or requiring one to buy licenses. Each distro decides which packages to provide.
 * Mascot: The official mascot of Linux is Tux, the Linux penguin.

Kernel

 * Copyright license: The Linux kernel and its source code are released under the GNU General Public License. Many of the userland packages also use this license. If you modify Linux or another package using this license, you can redistribute your modified version, but you must use the same license, which means you must provide source code. Every Linux vendor provides Linux source code.
 * Separate development: The Linux kernel is developed and maintained separately from userland.
 * With most other Unix-like systems, the kernel is maintained at least with the basic set of utilities, which would include the shell, shell utilities, C compiler, C library, system configuration utilities, and system boot scripts.
 * Linus Torvalds and his team can worry about the kernel (and userland programs which query and configure the kernel) and let other teams develop the userland system separately.
 * Both kernel and userland maintain extra compatibility so that one can update only the kernel, or only some userland package like the C library. In general, the Linux distro vendors take care of making updates install correctly.
 * Customizable kernel: Linux is probably the most customizable Unix-like kernel. There are even several ways to edit the kernel configuration before building the kernel.
 * Most builds of Linux use modules aggressively (though use of modules is optional). Modules allow pieces of the monolithic kernel, such as device drivers and network protocol implementations, to reside in separate files, load on demand, and unload when not used.
 * Many systems have multiple versions of Linux headers installed, in /usr/include/linux-version. Both the Linux kernel and some userland software, such as the C library, need these. On non-Linux systems, /usr/include/sys would sometimes have files used shared by the kernel and userland.
 * Special filesystems: Linux has some special filesystems which are not used for normal files.
 * /proc holds information about running processes. Other Unix-like systems sometimes provide /proc, but it is not as important as with Linux. Programs that use /proc often have trouble with ports to non-Linux systems.
 * /sys holds other information about the running kernel.
 * /dev is often a dynamic filesystem where device nodes appear and disappear dynamically, when modules load or unload or when devices are connected or disconnected. However, you can also just have /dev contain static device nodes like on other Unix-like systems.

Userland

 * GNU project: The GNU (GNU's Not Unix) project created the shell, core commands, C compiler and build tools for a Unix-like system. However, their kernel, Hurd, never worked well, and thus GNU encourages users to use Linux kernel.
 * Nearly every Linux distribution uses these programs, which makes them "GNU slash Linux" distributions. But with the exception of the GNU C library and core commands, many GNU tools and applications are also found on other Unix-like systems. In fact, *BSD and Mac OS X, like Linux, depend on the GNU C compiler, assembler, and linker.
 * The GNU project always insists on providing their packages as free software, using licenses like the GNU General Public License.
 * The GNU project also has a connection to the desktop environment called GNOME (GNU Network Object Model Environment).
 * /lib: The directory /lib exists on Linux and holds libraries needed by /bin and <tt>/sbin</tt> because <tt>/usr</tt> might not be mounted.
 * /usr: Stuff provided by your Linux distro often becomes installed in <tt>/usr</tt> instead of <tt>/usr/local</tt>. This frees <tt>/usr/local</tt> for packages which your Linux distro does not provide.
 * Text editors: Most distros provide the traditional Unix editors "vi" and "emacs", but some install neither by default. Even "ed" could be missing. Traditional Unix skills for text editing are not necessary when GNU "nano" is the installed non-X11 editor.
 * Package management: Most distros provide a package management system such as "apt" (Advanced Package Tool), "rpm" (Red Hat Package Manager), or Portage. These automate the installation and upgrade of packages. Both application packages and base system packages use this system. The package manager is often the biggest difference between distros.
 * Graphical user interface: Many of the popular Linux distros now boot the user straight into a desktop environment (GNOME or KDE, both based on X11 window system) immediately after installation. This is in contrast to some Linux distros and most *BSD distros which drop you at a root shell prompt, and expect you to use the root shell prompt to install X11, GNOME or KDE if you want it.
 * Source distros: Some Linux distros, such as Gentoo, emphasise building from source. Though every Linux distro with a compiler gives one the opportunity to rebuild the Linux kernel and other packages from source, these source distros provide scripts that not only automate the process, but help the system administrator make customisations and optimisations.

Linux Administration
Objective: To equip linux novice with essential administration skills to be proficient with the Linux environment.

cron

 * Definition: Cron is a scheduler that automatically executes a group of commands at certain time interval.
 * Configuration files:
 * 1. /etc/crontab - Main configuration
 * 2. /etc/cron.d/ - User based configuarton

Wikibooks for Linux
Wikibooks has several other books on its Linux section of the computing bookshelf. Here is a sample:
 * Linux Guide

In addition, some books have Linux chapters:
 * Computer Programming has information on Linux Programming
 * LPIC101 Certification: LPI Linux Certification/LPIC1 Exam 101/Linux Installation & Package Management
 * Movie Making Manual has information on Linux in film production

Distribution Related

 * Distro Watch
 * Linux ISOs