< Back to index

The Gentoo Linux operating system is a Linux distribution named after the Gentoo penguin. It is designed to be modular, portable, easy to maintain, flexible, and optimized for the user's machine. All tools and utilities are built from source code. For convenience, however, several large software packages are also available as precompiled binaries for various architectures via the Portage system.

History


Gentoo was initially created by Daniel Robbins as the Enoch Linux distribution. The goal was to create a distribution that was built from source code, tuned to the hardware, only included required programs, and decreased maintainer workload through scripting. (http://www.gentoo.org/doc/en/articles/making-the-distro-p1.xml) At least one version of Enoch was distributed: version 0.75, in December 1999. (http://public.planetmirror.com/pub/enoch/enoch-0.75)

Compilation issues revealed problems with the GNU Compiler Collection (gcc), used to build from source code. Daniel Robbins and the other contributors experimented with "forked" versions of gcc, finding a version that gave a 10% to 200% speed increase over the "official" gcc. At this point, Enoch gained a reputation for its speed, prompting the name change to Gentoo Linux (the Gentoo species is the fastest swimming penguin). (http://www.gentoo.org/doc/en/articles/making-the-distro-p2.xml) The modifications eventually became part of the official gcc (version 2.95), and other Linux distributions experienced similar speed increases.

After problems with a bug on his own system Robbins halted Gentoo Linux development and switched to FreeBSD for several months, later saying "I decided to add several FreeBSD features to make our autobuild system (now called Portage) a true next-generation ports system". (http://www.gentoo.org/doc/en/articles/making-the-distro-p3.xml)

The Gentoo Linux 1.0 was released March 31, 2002. (http://linux.slashdot.org/article.pl?sid=02/03/31/2123251)

Robbins had wanted Gentoo Linux to become a commercially successful project, but found an appropriate business model difficult to achieve. In 2004 he set up the non-profit Gentoo Foundation and transferred all copyrights and trademarks to it and stepped down as Chief Architect of the project - later working at Microsoft's Linux Lab for almost two years. (http://slashdot.org/article.pl?sid=04/04/26/2259211) (http://linux.slashdot.org/article.pl?sid=05/06/13/2137239) He is currently in the process of returning to Gentoo as a developer. (http://bugs.gentoo.org/show_bug.cgi?id=145649)

The current board of 5 trustees was elected on October 21, 2006. There is also a subsidiary 7 member Gentoo Council whose members "decide on global issues and policies". The current Council members were elected September 11, 2006 by 121 active Gentoo developers.

Portability


Gentoo is available on more architectures than most other Linux distributions.

Although originally designed for the x86 architecture, it has been ported to many others and currently runs on the x86, PowerPC, PowerPC 970, SPARC, x86-64, IA64, MIPS, DEC Alpha, PA-RISC, ARM, zSeries/s390, SuperH and 68k architectures. Gentoo was the first distribution to offer a fully functional 64-bit Linux computing environment (user space and the kernel) for the PowerPC 970 (G5).

There is also a "Gentoo for Mac OS X" project which allows Mac OS X users to use Gentoo's Portage to install packages, in a similar way to the one provided by Fink. Although still a work in progress, this project can coexist with Fink because it uses the same environment as Mac OS X instead of creating a new one.

Portability toward other operating systems, such as BSD-derived ones, are under active development on Gentoo/ALT project. The Gentoo/FreeBSD project already has a working release, while Gentoo/NetBSD, Gentoo/OpenBSD and Gentoo/DragonFly are being developed. There is even a project to get Portage working on the Hurd although development is slow.

Portage


Portage is similar to the BSD package management system called ports; in fact it was originally designed with FreeBSD's ports in mind. Gentoo's Portage system works similarly to Debian's APT. Portage is written in the Python programming language, and is the main utility that defines Gentoo. Although the system itself is known as Portage, it consists of two main parts, the ebuild system and emerge. These two have roughly the same relation as rpm and yum, or dpkg and apt, in that the ebuild system takes care of the actual work of building and installing packages, while emerge is a front-end that takes care of things such as dependency resolution and other miscellaneous issues. A GUI Qt-based front-end known as Kuroo and a gtk-based front-end known as Porthole are also available for working with Portage.

USE flags


The Portage system offers the use of "USE flags," which allows users to indicate which software features they would like to include (and exclude) while building packages. For example, there is a USE flag to include DVD support, where available, in all packages that are compiled after the flag is enabled. The USE flags can affect which dependencies are built or what options are sent to the program when it is compiled.

The specification of USE flags is the usual way to configure programs on Gentoo. For a list of available USE flags, see the "Gentoo Linux Use Variable Descriptions" section of the Gentoo website.

Ebuilds


Gentoo does not, by default (see next paragraph), use binary packages as package management systems (like RPM does), employing instead a format known as the ebuild. The main difference between RPM files and ebuilds is that RPMs are precompiled binaries, whereas ebuilds are bash-scripts with variables and functions which contain a description of the software, and instructions on how to obtain, configure, compile, and install it. There are nearly 25,000 ebuilds available, the majority of which are distributed by the Gentoo mirrors. New and updated ebuilds can be obtained by synchronizing the local ebuild repository with the mirrors. This is done by executing the command emerge --sync. Recently, Gentoo has begun providing pre-compiled binary packages for many common programs, especially those which are lengthy to compile, such as Mozilla Firefox and OpenOffice.org. These are still installed with emerge, just by appending a "-bin" to the package name to instead install the binary version. (Note: These binaries are compiled for the x86 architecture and will not work on ppc, sparc, etc.)

Gentoo does have a binary packaging format, which is a .tbz2 file (tar with bzip2 compression) with additional metadata. This feature enables the building of binary packages on one system (using Portage's buildpkg or quickpkg followed by quick installation on other, identical systems (with Portage's getbinpkg or emerge -K. See [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3#doc_chap4 Portage Features in the Gentoo Linux Handbook] for more information.

Masking


Masking is how Gentoo determines which packages are suitable for a system. Ebuilds designed for different architectures or experimental software are usually masked in a way that will not allow a stable system to install them without proper user intervention.

Packages that generally just require some testing but will often work fine are said to be keyword masked (i.e. they are available for systems with an ACCEPT_KEYWORDS make.conf entry starting with the character ~, such as ~x86, ~amd64, ~ppc. The standard way to unmask an individual keyword masked package is by adding an entry to /etc/portage/package.keywords.

Packages with known problems or not considered mature enough to be candidates for stable are hard masked by one of the various package.mask files in /usr/portage/profiles, and such entries are generally accompanied by a comment from developers explaining the reason for the mask. The standard way to unmask a hard masked package is to add an entry to /etc/portage/package.unmask. This should be done entirely at one's own risk.

Init system


Gentoo's init system is another important feature of its system. It is similar to the System V init system that most Linux distributions use, but uses named run levels rather than numbered ones and dependency based scripts. It also includes a command called rc-update which manages runlevels.

A faster init system known as initng is available and under active development on the Gentoo forums.

Logo and mascots


The official Gentoo logo is the [http://www.gentoo.org/main/en/name-logo.xml stylized G] resembling a silver magatama.
Unofficial mascots include [http://www.gentoo.org/main/en/about.xml Larry the cow] and [http://www.gentoo.org/images/gridtest.gif Knurt the flying saucer].
In fact as Larry appeared originally on the official website, it can be considered semi-official. However, there is much controversy around Larry, laid out in several heated [http://forums.gentoo.org/viewtopic-t-473584-highlight-mascot.html debates] on the Gentoo forums, mainly because of his/her [http://bugs.gentoo.org/show_bug.cgi?id=27727 gender ambiguity].

Installation


Gentoo may be installed in several ways. The most common way to install it is by using the Gentoo LiveCDs, but as with any Linux distribution, it can also be installed by most LiveCDs, and even from existing Linux installations.

Installation of Gentoo can be completed by following the [http://www.gentoo.org/doc/en/handbook/index.xml Gentoo Handbook]. Additionally, several other methods installation are listed in the [http://www.gentoo.org/doc/en/altinstall.xml Alternative Installation Method HOWTO], most of which are targeted at experienced users or users unable to boot from the Gentoo live CD.

As of version 2006.0, the Gentoo Foundation has now released a GTK+ based installer to greatly simplify the process of installing the distribution from scratch.[http://www.gentoo.org/doc/en/handbook/2006.1/handbook-x86.xml?part=1&chap=3] More advanced users will note that the new installer also brings back the stage 1 installation (see below) as a common installation method.

Catalyst


Starting with 2004.0, Gentoo introduced a tool called [http://www.gentoo.org/proj/en/releng/catalyst/ Catalyst], which is used to build all Gentoo releases and can be used to build one's own customized install media.

Stages


Traditionally installation could be started from one of three base stages:
* Stage1: System must be bootstrapped and the base system must be compiled.
* Stage2: System has already been bootstrapped, but the base system must be compiled.
* Stage3: System has already been bootstrapped and the base system already compiled.

As of November 2005, only stage3 installations are officially supported. Although tarballs for stage1 and stage2 are still distributed, the instructions for installing from these stages have been removed from the handbook and put into the Gentoo FAQ. To get an install similar to that of a stage1, you can complete a stage3 install, then optimise your CFLAGS and recompile all of your packages.

Version history


* 1.0, 2002 March 31
* 1.2, 2002 June
* 1.4 August 5, 2003 (Gentoo Reference Platform introduced)
* 1.4 maintenance release 1 September 11, 2003
* 2004.0 March 1, 2004 (versioning changed to four releases a year)
* 2004.1 April 28, 2004
* 2004.2 July 26, 2004
* 2004.3 November 15, 2004
* 2005.0 March 27, 2005 (versioning changed to semi-annual releases)
* 2005.1 August 8, 2005
* 2005.1 maintenance release 1 November 21, 2005
* 2006.0 February 27, 2006
* 2006.1 August 30, 2006

Note that once Gentoo is installed, it becomes "versionless," that is, once an emerge update is done, the system is at the latest version. So, if the system was installed from a 2005.0 CD and 2005.1 was released, and the system was updated, then it is up to date. A great advantage to this, is that system administrators can keep a system more up-to-date, because there is less of a 'waiting period' before a specific program can be updated. The versions are only to make new Gentoo installs up-to-date from the start.

Even though the versioning system changed to years, the numbering version system still continues. For example, /etc/gentoo-release might contain "Gentoo Base System version 1.6.13" (Modified Aug. 26, 2005).

Criticism


Gentoo has attracted criticism in a number of areas.

Requires a good internet connection. This seems to be related to downloading sources prior to building packages. However, any other distribution that has internet updates has to download binary packages instead, and the sizes of binary and source packages are usually comparable. In an effort to ease this requirement, the necessary files can be pre-fetched with the emerge -f or --fetchonly flag, or they can be downloaded in the background while compiling by enabling the parallel-fetch feature.

Long initial installation. While many users praise the long, largely-manual installation process for what it teaches them about the under-pinnings of Linux, many others are confused or perturbed by it. The "Stage 3" installation is much easier, but remains significantly more daunting than nearly every other distribution. However, if Gentoo is "...all about choice and customization..." then it's inevitable that more choices need to be made, which makes this an argument usually used by inexperienced users or those not aware of the Gentoo Linux goal.

Slow package installation. Compiling from source means that packages are slower to install. In the extreme cases of KDE and OpenOffice.org, this will take hours, or even days on older hardware. Also compiling these packages requires a lot of hard disk space (4-6 GB for OpenOffice.org - see app-office/openoffice ebuild for more information). Generally, Gentoo users accept these delays as the cost of being able to apply their own compile-time options, but there are now pre-compiled binaries for large popular applications such as KDE, OpenOffice.org, Mozilla Firefox. Using these binaries one can install the packages within minutes, even on older hardware.

Package manager does not handle reverse dependencies. When removing a package, Portage does not check to see if any other installed packages still need it. Portage also does not check if upgrading a particular package would have a "ripple effect" on any other installed packages. Therefore it's possible to cause an installed application to malfunction by removing or upgrading another package it depends on. This leads to users unknowingly breaking their systems by careless removal of packages, or upgrading a library to an incompatible version. For upgrades, there exists a revdep-rebuild utility that scans the entire system and looks for packages that require a rebuild. This must be installed and run manually by the user.

Gentoo-based distributions


* Bintoo
* Flash Linux on USB key
* Gentoox
* Knopperdisk
* Kororaa
* Librix
* Medeix
* Navyn OS
* Pentoo
* Sabayon Linux
* SystemRescueCD
* Ututo
* VidaLinux
This entry uses material from from Wikipedia, the leading user-contributed encyclopedia. It is licensed under the GNU Free Documentation License. Disclaimer.