GoboLinux
Encyclopedia
GoboLinux is a free and open source
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...

 operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 whose most prominent feature is a reorganization of the traditional Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 file system
File system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...

. Rather than following the Filesystem Hierarchy Standard
Filesystem Hierarchy Standard
The Filesystem Hierarchy Standard defines the main directories and their contents in Linux operating systems. For the most part, it is a formalization and extension of the traditional BSD filesystem hierarchy....

 like most Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....

 systems, each program in a GoboLinux system 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". According to the GoboLinux developers, this results in a cleaner system based on the filelayout level.

Overview

The GoboLinux hierarchy is a radical departure from the filesystem hierarchy traditionally employed by most UNIX-like operating systems
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....

 where specific types of files are stored together in common standard subdirectories (such as /bin for executables and /etc for configuration files) and package managers are used to keep track of what file belongs to which program. In GoboLinux, files from different programs are segregated under their respective 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. 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 their design has other "modernisms", such as the removal of some distinctions between similar traditional directories (such as the locations of executables /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
NEXTSTEP
NeXTSTEP was the object-oriented, multitasking operating system developed by NeXT Computer to run on its range of proprietary workstation computers, such as the NeXTcube...

, AtheOS
AtheOS
AtheOS was a free and open source operating system for x86-based computers. It was initially intended as an AmigaOS clone, but that objective was later abandoned...

 and BeOS
BeOS
BeOS is an operating system for personal computers which began development by Be Inc. in 1991. It was first written to run on BeBox hardware. BeOS was optimized for digital media work and was written to take advantage of modern hardware facilities such as symmetric multiprocessing by utilizing...

, 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 variable
        Environment variable
        Environment variables are a set of dynamic named values that can affect the way running processes will behave on a computer.They can be said in some sense to create the operating environment in which a process runs...

        s.
      • 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
        Symbolic link
        In computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...

         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

Compile is a program that downloads, unpacks, compiles
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 source code tarballs
Tar (file format)
In computing, tar is both a file format and the name of a program used to handle such files...

 and installs the resulting executable code, all with a single command (such as "Compile foo") using simple compilation scripts known as "recipes".

Compile is somewhat similar to Gentoo's Portage
Portage (software)
Portage is a package management system used by Gentoo Linux, based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project is concerned with using...

 system, which is based on the FreeBSD Ports
FreeBSD Ports
The FreeBSD Ports collection is a package management system for the FreeBSD operating system, providing an easy and consistent way of installing software packages. As of October 2011, there are over 22,700 ports available in the collection...

 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
Filesystem Hierarchy Standard
The Filesystem Hierarchy Standard defines the main directories and their contents in Linux operating systems. For the most part, it is a formalization and extension of the traditional BSD filesystem hierarchy....

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

Compile was introduced in GoboLinux version 011. Before that, there were discussions about porting Gentoo's Portage system to GoboLinux and developing the port as a SourceForge.net project under the name GoboPortage.

Compile's other features include:
The use of 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.
Minimalistic and declarative-oriented compilation scripts:Typical "configure; make; make install" software can be scripted in two lines, greatly easing maintenance.
Support of GoboLinux-style dependencies:Software compiled "by hand" by the user is taken into account by the detection mechanism.
Path-agnosticism:Also works in a rootless GoboLinux installation, i.e., inside a home directory
Home directory
A Home directory is a file system directory on a multi-user operating system containing files for a given user of the system. The specifics of the home directory is defined by the operating system involved; for example, Windows systems between 2000 and 2003 keep home directories in a folder...

 of any other distribution.

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
Filesystem Hierarchy Standard
The Filesystem Hierarchy Standard defines the main directories and their contents in Linux operating systems. For the most part, it is a formalization and extension of the traditional BSD filesystem hierarchy....

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

Symlinks

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.

Superuser

The superuser name, traditionally as "root" with a UID of 0, is selectable upon installation in GoboLinux. As well, in contrast to other distributions, the superuser does not gain a /root directory as its home directory, instead using /Users/NAME as for any other user. According to developer Hisham Muhammad'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

Releases are numbered using the octal
Octal
The octal numeral system, or oct for short, is the base-8 number system, and uses the digits 0 to 7. Numerals can be made from binary numerals by grouping consecutive binary digits into groups of three...

 base system. According to the authors, it was chosen because it keeps the typical leading zero present in many free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 version numbers (since a leading zero is the indicator for octal numbers in the C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 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 - 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 Manager, a graphical system management tool.
  • 011 - June 7, 2004: introduced Compile, the GoboLinux package compilation tool.
  • 010 - January 7, 2004: added a graphical installer accessible through the live CD
    Live CD
    A live CD, live DVD, or live disc is a CD or DVD containing a bootable computer operating system. Live CDs are unique in that they have the ability to run a complete, modern operating system on a computer lacking mutable secondary storage, such as a hard disk drive...

     desktop environment.
  • 007 - October 22, 2003: added a per-package metadata directory called Resources.
  • 006 - May 9, 2003: introduced GoboHide, adopted sandbox
    Sandbox (software development)
    A sandbox is a testing environment that isolates untested code changes and outright experimentation from the production environment or repository, in the context of software development including Web development and revision control...

    ed installation of programs.
  • 005 - 2003: first public release published online.
  • Releases prior to 005 were used by the initial group of developers only.

Ports

As of March 2006, Gobolinux is officially made for the i686 only, and the porting to i386 is domain-specific (thus, incomplete). Ports have been made to embedded architectures, such as ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

 and SuperH
SuperH
SuperH is a 32-bit reduced instruction set computer instruction set architecture developed by Hitachi. It is implemented by microcontrollers and microprocessors for embedded systems....

, which were easily achieved with Bootstrap, a tool developed especially to automate new ports.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK