November 3, 2005

Introducing GoboLinux 012

Author: Rui Lopes

One major problem with the Linux world is the overwhelming number of redundant distributions, especially in the desktop-oriented area. It's rare to see a new distribution that isn't a Debian or Red Hat clone in disguise with an extra feature or two, or that dares to take a bold departure from the status quo. One of those rarities, however, is GoboLinux.

Contrary to most Linux distributions, GoboLinux chooses not to follow the Free Standards Group's Filesystem Hierarchy Standard. Gobo's authors thought the traditional Unix directory tree was unsuitable for a modern desktop Linux distribution and decided to take the path that another desktop-oriented operating systems has been following for years -- namely, Mac OS X.

Along with a more logical, intuitive, filesystem hierarchy, GoboLinux also took another common concept employed in other desktop OSes: All the applications are installed into the same place, and in turn, each application is self-contained within its own directory. This makes it easier to install, remove, and keep track of new programs.

Installation and other trivial points

There are three ways you can try out GoboLinux. You can burn it to a CD and install it to a hard drive, or you can run it as a live CD. The third option is a little unconventional but very interesting: You can download a rootless Gobo, which is "a minimal installation of the scripts and directory hierarchy inside your home directory." This means you can recreate a mini-Gobo system inside the home directory of another Linux distro. You can also install packages inside the home directory. This is handy for people who need to use a restricted system (university students, for instance), but who want to be able to install their own applications. And it fits on a single diskette.

When you boot your GoboLinux CD, you're given the option of starting X -- and with that a live CD session -- or installing the system on the hard drive through a text installer. You can also start a graphic installer from the live CD session. Both the graphic and text installers are the epitome of simplicity, and you can happily get your GoboLinux system installed in less than 10 minutes without breaking a sweat.

The few applications Gobo includes are enough for you to get down to business. Gobo follows the minimalist approach of "one app per task." This release comes with KDE 3.4.0 as the default desktop environment -- no GNOME. If you want something lighter, WindowMaker 0.80.1 also comes bundled. It comes with X.Org 6.8.1, and the kernel is When you boot up, you get the same desktop environment as with the live CD (take a look at the
screenshots on their Web site). The applications included by default with the system are standard, the Gimp, XMMS, Firefox, and so on. KDE was unusually responsive on my slower box, and even ran fairly well. After trying the distro for a few weeks, I've yet to see it crash. Gobo correctly detected and configured the hardware on both my test systems (a 350MHz Pentium II with 128MB of RAM and an Athlon 1800+ with 768MB).

Something that normally isn't worth mentioning is the console. Gobo uses a customized zsh for the console, and it's one of the best I've seen in any distro.

The tree

And now, the juicy stuff. The directory structure at root level in Gobo looks like this:

/Depot -- a storage area where you can put your personal files (documents, media). It can also serve as a public area in a system with lots of users, similar to the /pub directory in other distros.

/Files -- non-essential files related to the system, such as Documentation, Codecs, Packages, Fonts, and Plugins.

/Mount -- take a guess.

/Programs -- all the applications installed on the system. Resembles the "Program Files" of Windows or the "AppFolders" of Mac OS X.

/System -- contains files vital for the system, such as the kernel source, headers, devices, and settings.

/Users -- the /home directory equivalent. Note that the superuser also resides here.

Simple, isn't it? If you don't know where to find something, you can get there using almost nothing but intuition. Files and folders are organized into functional categories. The most complex directory in the Gobo tree is /System, where you've got what once used to be /boot, /usr, /etc, /dev, and others all gathered under one roof; since they're separated by logical directories, even here things start to make a lot of sense after a little usage. Although some people may frown when reading this, the layout is nice and clean.

However, under that pretty facade, Gobo has a little secret. The developers had to maintain the traditional Unix tree, for legacy reasons. (The same thing happened with Mac OS X, which also uses a similar "dirty trick" to hide it.) You can still access the old tree, and even configure the system to show only the directories you want, by using a kernel patch called GoboHide.

Package system

The creators of GoboLinux used the Linux From Scratch procedure to assemble the distribution, and they took the opportunity to personalize more than just the directory structure. They wrote simple scripts to deal with most of system tasks a power user may wish to handle. For instance, the boot process isn't BSD or System V: Gobo has a set of native scripts to deal with the initialization procedure, located at /System/Settings/BootScripts. The same goes for installing and compiling applications.

Gobo's package installation system is called Compile, which its authors say resembles Gentoo's Portage or FreeBSD's ports, but is much more minimalist in design. As happens with the FreeBSD ports, there are two ways to use the package system: Install the desired application using binary packages, or compiling it from source. The binary packages for Gobo are simply good old .tar.bz2 or .tar.gz archives. When compiling packages from source, you use "recipes," which are small files containing URLs and compilation instructions. Let's say you want to install XMMS. Just type Compile xmms and voilĂ ! Compile should download a recipe for XMMS from the repositories to compile and install the application, with the required dependencies if needed. The process is neither otherworldly nor new, but it's efficient. You can also find a centralized way of dealing with all the scripts for installing and removing packages in a graphical tool called Manager.

The list of packages available from Gobo's repositories isn't impressive, but it keeps growing every day. If there's no package for a program you want, you can download the source of the program from the Net and compile it with the Gobo scripts so that it's installed like a Gobo package. The program will be listed in the Manager, and you can even remove it as though it were a Gobo package without leaving a mess behind in the filesystem.

Packages are installed in /Programs and kept in separate, self-contained directories that take into account their version (e.g. /Programs/Amarok/1.1.1). This allows you to keep track of all the versions of an application installed on the system. Another small sample of the convenience of the Gobo package system: You can turn an app "off," removing the executables from the execution path and headers and libraries from the lookup path, using the DisableProgram script. That way you can install a newer version of an application and test it without causing conflicts with the older version already installed. To remove a package from the system, you can use RemoveProgram, or, given the way the Gobo was designed, just remove the program directory with a simple rm -rf.


The authors of GoboLinux claim that it isn't a distro aimed at newcomers to the Linux world, but rather at power users who are tired of the limitations and dogmas of traditional distributions, or who simply want to try something new. I've used the word "simple" throughout this article to describe GoboLinux, but don't mistake this for "user-friendliness." Its simplicity is more suited to experienced users with a good understanding of Unix and Linux, where it can save them a great deal of time. Gobo could give away some of that "complex simplicity" to become more user-friendly, but I wouldn't want that. Instead, some of the bigger desktop distributions for whom user-friendliness is a paramount concern should take some ideas from Gobo. The traditional Unix tree may be well suited for server environments, but the same is not true for general-purpose desktop distros and the average home user.

That aside, I was impressed by the way GoboLinux handled. This distribution clearly has a well-defined identity of its own, and the authors' philosophy shows in every detail of the system. The system is fast, without a grain of bloat in it. For such a young project, it's also very stable. It doesn't feel like a mess, as some people have pointed out to me; instead, it feels like a mixture of Slackware with the usability
and convenience of desktop OSes such as Mac OS X, Windows, or BeOS. It's not Ubuntu, or Gentoo, but rather fills a nice niche in between them for the seasoned user.


  • Linux