Infobox OS
name = GoboLinux

caption = GoboLinux
website = http://gobolinux.org/
developer =
family = Linux
source_model = Free Software
released =
latest_release_version = 014.01
latest_release_date = release date|2008|03|30
latest_test_version =
latest_test_date =
marketing_target =
language =
kernel_type = Monolithic kernel (Linux)
ui = KDE
license = GNU General Public License
working_state = Current
supported_platforms =
updatemodel =
package_manager =

GoboLinux is a free operating system whose most salient feature is its reorganization of the filesystem hierarchy. Rather than following the Filesystem Hierarchy Standard like most Unix-like systems, under GoboLinux each program has its own subdirectory tree, where all of its files (including settings specific for that program) can be found. Thus, a program "Foo" has all of its specific files and libraries in " /Programs/Foo ". There is no question as to where an "executable" file is - It is in " /Programs/Foo ", in this case. According to the GoboLinux developers, this results in a cleaner system based on the filelayout level. [cite web | title = The Unix tree rethought: an introduction to GoboLinux | url = http://www.kuro5hin.org/story/2003/5/9/05015/62649 | author = Hisham Muhammad | date = May 9, 2003 | accessdate = 2008-03-17]


The GoboLinux hierarchy is a radical departure from the filesystem hierarchy traditionally employed by most Linux (and UNIX-like) operating systems, where specific types of files are stored together in common standard subdirectories (such as e.g. bin and man), and package managers are used to keep track of what file belongs to which program. In GoboLinux, files from different programs are separated into different respective subdirectories. While in GoboLinux types of files are also separated into subdirectories, these in turn sit inside their programs' subdirectories. The makers of GoboLinux say that "the filesystem is the package manager", and the GoboLinux package system uses the filesystem itself as a package database. [cite web | title = Simplified package management on GoboLinux - an interview with Lucas Villa Real | url = http://www.netbsd.org/gallery/pkgsrc-interviews.html#gobo-linux | author = Marc Weinem | date = March 13, 2008 | accessdate = 2008-03-31] This is said to produce a more straightforward, less cluttered directory tree. GoboLinux uses symlinks and an optional kernel module called "GoboHide" to achieve all this while maintaining full compatibility with the traditional Linux filesystem hierarchy.

The creators of GoboLinux stated that the GoboLinux hierarchy has other "modernisms", e.g. it removes some distinctions between similar traditional directories (such as the executable locations /bin, /usr/bin, and /usr/local/bin). GoboLinux designers claim that this results in shell scripts breaking less often than with other Linux distributions. GoboLinux also allows the user to have different versions of the same program installed concurrently (and even run them concurrently). Furthermore, it is claimed that the package management index can never get out of sync, as references to nonexisting files simply are broken links, and thus inactive. GoboLinux's filesystem changes have also allowed other innovations, such as an entirely new boot system that does not use System V or BSD style init systems.

File hierarchy

The design of GoboLinux is influenced by earlier systems such as NEXTSTEP, AtheOS and BeOS, which adopted original filesystem structures while still maintaining a considerable degree of compatibility with Unix. At the root of the GoboLinux tree, there are six directories: Programs, Users, System, Files, Mount and Depot. The contents of each are described below.

* /Programs/ - This directory contains one directory for each program installed in the computer. Each program's directory, in turn, contains one or more version directories, and optionally, Settings and Variable subdirectories. Examples of paths under programs are /Programs/Bash/3.0/bin/bash and /Programs/Xorg-Server/Settings/X11/xorg.conf.
* /Users/ - This directory contains users' home directories, so a userid named "harley" would have a home directory of "/Users/harley".
* /System/ - Crucial system files. Most are managed by system applications (for example, /System/Settings/passwd) and GoboLinux scripts (for example, /System/Links).
** Links/ - Contains "links" directories that index the files under /Programs.
*** Environment/ - Links to environment files. These are compiled into a Cache file and loaded by the shell, allowing programs to register their own environment variables.
*** Executables/ - Contains links to files from the programs' bin and sbin directories.
*** Headers/ - This directory contains links to files from the programs' include directories.
*** Libraries/ - Links to files from the programs' lib directories.
*** Manuals/ - Contents of manuals and info directories.
*** Shared/ - Links to files from the programs' share directories.
*** Tasks/ - Links to the programs' boot tasks from their Resources/Tasks directories.
** Settings/ - Configuration files and links to files from the programs' Settings directories.
*** BootScripts/ - Scripts used during system boot. This is a symlink to Settings/BootScripts/ under /Programs/BootScripts.
** Variable/ - Multi-purpose log, temporary, transient and spool files.
*** tmp/ - Temporary files.
** Kernel/ - Kernel-related directories.
*** Boot/ - Programs and configuration files used during operating system bootstrap. This is where the kernel image and bootloader configuration files are located.
*** Devices/ - Device files (managed by Udev).
*** Modules/ - Contains the various kernel modules, organized by the kernel release.
*** Objects/ - Provides a view of the kernel's device tree (introduced with the sysfs filesystem in the kernel 2.6 series).
*** Status/ - Kernel status files (managed by the proc filesystem ).
* /Files/ - Files hold structured data that are used by programs but that are not part of the programs themselves. Those files are usually stand-alone entities, like fonts, codecs and plugins (and as such, do not require package management). Additionally, applications may define subdirectories of their own to store site-specific data — Compile, the GoboLinux package compilation front-end tool, uses it.
* /Mount/ - mounting point for additional local or remote filesystems. Common subdirectories are CD-ROM, Floppy and Zip.
* /Depot/ - repository for users' files. This repository is meant to be organized as the user sees fit. No subdirectories of /Depot are considered part of the standard GoboLinux hierarchy.

"Compile" program

[http://gobolinux.org/index.php?page=compile Compile] is a program that downloads, unpacks, compiles and installs source tarballs with a single command (such as "Compile foo") using simple compilation scripts known as "recipes" [ [http://www.linux.com/articles/60133 GoboLinux's recipe for delicious package management] - Linux.com] .

Compile is somewhat similar [ [http://developers.slashdot.org/article.pl?sid=04/06/05/1949213 "GoboLinux Compile -- A Scalable Portage?"] - Slashdot] to Gentoo's system, which is based on the FreeBSD Ports collection and accomplishes the above actions with scripts known as "ebuilds". But Portage is made for a traditional, filesystem hierarchy, compatible with the Filesystem Hierarchy Standard, while Compile extends the capability of GoboLinux's distinctive filesystem hierarchy into the area of package management. Thus, in GoboLinux, the filesystem is the package manager, (see "The Ideas Behind "Compile" [ [http://gobolinux.org/index.php?page=doc/articles/compile "The Ideas Behind "Compile"] ] ).

Compile was introduced in GoboLinux version 011. Before that, there were discussions about porting a Gentoo's Portage system to GoboLinux and developing the port as a Sourceforge project under the name "GoboPortage". [ [http://forums.gentoo.org/viewtopic-t-241718-highlight-gobolinux.html Gentoo Forums : View topic - GoboGentoo ] ] [ [http://sourceforge.net/projects/goboportage/ SourceForge.net: GoboPortage ] ]

Compile's other features include:
* It uses the projects' own download sites: the distribution's repository (or one of its mirrors) is only used for downloading recipes. Recipes may be downloaded on-the-fly or in batch.
* It uses minimalistic and declarative-oriented compilation scripts: typical "configure; make; make install" software can be scripted in two lines, greatly easing maintenance.
* It supports GoboLinux-style dependencies: software compiled "by hand" by the user is taken into account by the detection mechanism.
* It is path-agnostic by design: also works in a Rootless [cite web | title = GoboLinux: An Interview with Lucas Villa Real] | url = http://www.packtpub.com/article/GoboLinux-An-Interview-with-Lucas-Villa | author = Mayank Sharma | date = August 21, 2007 | accessdate = 2008-03-31] -GoboLinux installation, ie, inside a $HOME directory of any other distribution.

Differences from traditional distributions

File hierarchy

In the GoboLinux hierarchy, files are grouped by their functional category in an index-like structure using symbolic links, rooted at /System/Links: all executables are accessible under /System/Links/Executables, all libraries are accessible under /System/Links/Libraries and so on.This eliminates many traditional distinctions in the Filesystem Hierarchy Standard, such as the distinction made between non-essential files stored in /usr and essential, emergency files stored directly in subdirectories of the root directory. The developers maintain that, although these distinctions were once very useful, they are no longer necessary in their radically different, modern environment.


There are symbolic links relating most of the usual Unix directories to the GoboLinux tree. Therefore, one can find directories such as /etc, /var/log and /usr/bin in the expected places. These symbolic links point to the functional equivalent under /System/Links, so that crucial pathnames such as /bin/sh and /etc/passwd are resolved correctly. These compatibility directories are concealed from view using a custom kernel modification called "GoboHide" — this modification, which implements support for hidden files in Linux, is used for aesthetic reasons only and is optional.


The SuperUser, traditionally known as "root" with an UID of 0, can be any other name on Gobolinux, chooseable upon installation. Different to other distributions the SuperUser does not gain a /root directory as his home directory, but instead gains one under /User/NAME just like any other user on a linux system gets too. According to hisham's article this decision was because he never liked the notion of a separate superuser.

Boot system

GoboLinux uses its own initialization procedure, unlike most Linux distributions which use a BSD or a System V procedure. At /System/Settings/BootScripts are a few files that command the entire boot procedure: BootUp and Shutdown run at system boot and shutdown, respectively; additionally, it is possible to define "runlevel" scripts to specify different ways the system can be initialized (for example, Single for single-user, Multi for multi-user, Graphical for boot into graphic mode, and so on) and control that from the boot loader menu. The /System/Settings/BootOptions file separate site-specific settings from the rest of the scripts. Application-specific tasks can be found at /System/Links/Tasks and called by the boot scripts.


Releases are numbered using the octal base system. According to the authors, it was chosen because it keeps the typical leading zero present in many free software version numbers (since a leading zero is the indicator for octal numbers in the C language), and is a play on the "version numbers race" that happened among Linux distributions around 1999: when read as decimal numbers, octal numbers will cause a deterministic "version bump" each eight releases. Up to 013, GoboLinux made no "point releases", to avoid the implication that some releases were more stable than others. This tradition was broken with 014.01, an update of 014 focused on bug fixes.

* 014.01 [cite web | title = GoboLinux 014.01 Released | url = http://osnews.com/story/19578/GoboLinux_014.01_Released | author = Thom Holwerda | date = April 4, 2008 | accessdate = 2008-04-04] - March 30, 2008: an update of 014, featuring bug fixes and some package updates.
* 014 - December 31, 2007: new stable release, featuring package updates, bug fixes and new versions of the GoboLinux management tools.
* 013 - November 2, 2006: introduced "Listener", a tool for listening on filesystem events and assigning actions to be performed automatically.
* 012 - June 6, 2005: introduced " [http://gobolinux.org/index.php?lang=en_US&page=manager Manager] ", a graphical system management tool.
* 011 - June 7, 2004: introduced " [http://gobolinux.org/index.php?page=compile Compile] ", the GoboLinux package compilation tool.
* 010 - January 7, 2004: added a graphical installer accessible through the live CD desktop environment.
* 007 - October 22, 2003: added a per-package metadata directory called Resources.
* 006 - May 9, 2003: introduced " [http://www.gobolinux.org/?page=doc/articles/gobohide GoboHide] ", adopted sandboxed installation of programs.
* 005 - 2003: first public release published online.
* Releases prior to 005 were used by the initial group of developers only.


As of March 2006, Gobolinux is officially made for the i686 only, and the porting to i386 is domain-specific (thus, incomplete). However, in 2003, Hisham Muhammad, the head developer of the Gobolinux project, wrote a "Quick-and-Dirty Porting Guide" [ [http://www.gobolinux.org/index.php?page=doc/articles/porting_guide Quick-and-Dirty Porting Guide] ] for people who want to port GoboLinux to the PowerPC platform and other architectures. He is also working on a port by himself. [ [http://gobo.kundor.org/wiki/GoboLinux_PPC GoboLinux PPC] ] Ports have been made to embedded architectures, such as ARM and SuperH, which were easily achieved after Bootstrap, [ [http://embedded.gobolinux.org GoboLinux Embedded] ] a tool developed especially to automate new ports.


External links

* [http://www.linux.com/articles/49173?tid=127 GoboLinux review at Linux.com]
* [http://www.gobolinux.org/ GoboLinux website]

Wikimedia Foundation. 2010.

Нужна курсовая?

Look at other dictionaries:

  • GoboLinux — Parte de la familia GNU/Linux Desarrollador ? …   Wikipedia Español

  • GoboLinux — Семейство ОС Linux Последняя версия 014.01 …   Википедия

  • GoboLinux — Bildschirmfoto GoboLinux Basisdaten Entwickler …   Deutsch Wikipedia

  • Gobolinux — Bildschirmfoto GoboLinux Basisdaten Entwickler …   Deutsch Wikipedia

  • GoboLinux — Famille Linux États des sources Logiciel libre et Open Source Dernière version stable …   Wikipédia en Français

  • Comparison of Linux distributions — Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security,… …   Wikipedia

  • Linux-Distributionen — Eine Linux Distribution ist eine Zusammenstellung von Software auf Basis des Linux Kernels. Inhaltsverzeichnis 1 Populäre Distributionen für Heimrechner 2 Weitere Distributionen für Heimrechner 2.1 Distributionen nach dem KISS Prinzip 2 …   Deutsch Wikipedia

  • Liste der Linux-Distributionen — Eine Linux Distribution ist eine Zusammenstellung von Software auf Basis des Linux Kernels. Inhaltsverzeichnis 1 Populäre Distributionen für Heimrechner 2 Weitere Distributionen für Heimrechner 2.1 Distributionen nach dem KISS Prinzip 2 …   Deutsch Wikipedia

  • ARM architecture — This article is about a computer processor architecture. For other uses, see ARM (disambiguation). Logo ARM Designer ARM Holdings Bits …   Wikipedia

  • Liste von Linux-Distributionen — Das Linux Maskottchen Tux Diese Liste enthält thematisch und alphabetisch geordnete, relevante Linux Distributionen. Eine stichwortartige Beschreibung gibt nur die wichtigsten Alleinstellungsmerkmale wieder. Mehr Informationen zu den einzelnen… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”