GoboLinux

From Free net encyclopedia

GoboLinux is an alternative Linux distribution which reorganizes the entire filesystem hierarchy. In GoboLinux, the contents of each program is stored under a directory, such as /Programs/Xorg/6.8.2/. This contrasts with the traditional paths and directory layout from Unix, such as /usr/sbin and /etc, still used by most Linux distributions.

GoboLinux's filesystem changes have also led to other changes, such as an entirely new boot system that doesn't use System V or BSD style init systems, and a package system based upon the lack of need for a package database in lieu of relying on the filesystem itself acting as a package database.

Contents

The GoboLinux hierarchy

The design of GoboLinux is influenced by earlier systems such as NeXT, 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/ - Under this directory, there is one per program installed in the computer. Each program directory, on its 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/ - The users' home directories. Let's say you have a user on your system called will. The will home directory will be /Users/will. Even the superuser (typically called root) has its home under /Users. It's possible to put /Users in a separate partition, so you won't have to worry about moving your personal files around when reinstalling/formatting, though in typical systems it's easier to keep the whole system in a single partition so that managing free space is easier.
  • /System/ - Crucial system files. Most are managed by system applications (e.g. /System/Settings/passwd) and GoboLinux scripts (e.g. /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.

Differences between GoboLinux and traditional distributions

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. 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.

Another major difference between GoboLinux and most Linux distributions is that it does not use a BSD nor a System V initialization procedure. Instead, it has its own. At /System/Settings/BootScripts there 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 (e.g., Single and Multi for single and multi-user, Graphical for boot into graphic mode, etc.) 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

Releases are numbered using the octal base system. The rationale for this numbering according to the authors is threefold: 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); it has no dots, hence there are no "point releases"; and it is a play on the "version bump" phenomenon as, when read as a decimal numbers, octal numbers will cause a deterministic bump each eight releases.

  • 012 - June 6, 2005: introduced Manager, a graphical system management tool.
  • 011 - June 7, 2004: intoduced 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 GoboHide, adopted sandboxed installation of programs.
  • 005 - 2003: first 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" for those who would wish to port the distribution to the PowerPC platform (among other architectures).

See also

External links

fr:GoboLinux pt:GoboLinux