GoboLinux - Fun with File System Hierarchy
More logical? Well, even some seasoned UNIX system administrators will probably agree that the UNIX file system, developed in late sixties, is far from ideal. While it is not particularly difficult to learn which files belong to /usr, which should go into /var and what to store in /etc, isn't there a more intuitive way of placing files into directories? Especially in times when many people are trying to push Linux into the mainstream as a viable alternative to other, more user-friendly operating systems?
It turns out that the GoboLinux project has been doing exactly that - reorganizing the directories and files into a new structure. It all started with one of the developers working on a system where he did not have superuser privileges, but still needed to compile programs. To avoid difficulties when upgrading, he placed individual programs into their own directories and named them according to the relevant program names, e.g. ~/Programs/AfterStep. Other parts of the programs went into similarly identified directories, such as ~/Libraries, ~/Headers, etc. Custom scripts for automated compilation of these programs and correct placing of individual components were also developed.
After a hard disk crash, the developer decided to rebuild his entire system with this new file system hierarchy. Under GoboLinux, there are 6 directories below the root file system; these are /Depot, /Mount, /System, /Files, /Programs and /Users. All executable files are stored under /Programs, which has a structure of /Programs/XFree86/4.3/. This makes it easy to maintain multiple versions of an application without having to resort to application renaming (e.g. gcc and gcc3). The /Programs directory also stores system-wide settings, so the XFree86 configuration file can be found in /Programs/XFree86/Settings/X11/. The /Users directory is roughly equivalent to /home on "normal" Linux system, while /Depot is a general place to store files by all users. The /Files directory contains plugins, fonts, documentation and other non-executable files.
The purpose of the /System directory is more complex. It contains symbolic links to all executable files, libraries, headers, etc on the system and these are also mapped to the traditional location, such as /bin, /usr/bin, etc. Yes, the system does include these directories - for legacy reasons and for those troublesome applications where directory paths are hard-coded into the source code. However, these legacy directories are not visible to users, thanks to a GoboHide kernel patch, which is able to hide certain directories, both from the command line and from file managers.
How does one go about installing applications on GoboLinux? These tasks have been automated by a collection of scripts. There are scripts for compiling programs, scripts for creating GoboLinux packages from source code, and scripts for installation. They have command line options to handle special situations, but in most cases they are very simple to use. The scripts also include simple dependency checking. As for the system boot, rather than using one of the common boot models (System V or BSD), the GoboLinux developers have written their own set of boot scripts - simple sequences of executable commands, each with a message string.
GoboLinux, the core of which is developed by Hisham Muhammad and Andre Detsch (as well as a number of contributors), is an interesting distribution to play with. The bootable ISO image serves as a live CD with some basic hardware auto-detection and KDE as the default desktop environment. Once booted, a graphical (as well as a text-based) GoboLinux installer is provided for those who would like to give it a partition on the hard disk. The latest version is 010 (the versioning scheme follows octal numbering), released earlier this month, and this is available for free download from GoboLinux mirror sites. The developers pride themselves on having created a highly unusual, yet usable Linux system and they are keen to offer support via their fairly busy mailing lists.
It is highly unlikely that GoboLinux will succeed in relegating the
traditional UNIX file system hierarchy into the annals of history and
replacing it with a more intuitive one. But as a hobby distribution, it is
certainly a lot of fun.
Index entries for this article | |
---|---|
GuestArticles | Bodnar, Ladislav |
Posted Jan 22, 2004 4:24 UTC (Thu)
by vblum (guest, #1151)
[Link] (3 responses)
Posted Jan 22, 2004 20:41 UTC (Thu)
by Frej (guest, #4165)
[Link] (2 responses)
Posted Jan 23, 2004 2:04 UTC (Fri)
by xorbe (guest, #3165)
[Link] (1 responses)
Posted Jan 29, 2004 17:54 UTC (Thu)
by ahilliard (guest, #19049)
[Link]
Posted Jan 22, 2004 11:33 UTC (Thu)
by ptr (guest, #5885)
[Link] (3 responses)
The standard structure is a lot more useful for doing backups. Their /Programs structure is a lot more useful for doing package management within the file system. What I like about GoboLinux is that they try to provide multiple views of the file system via symlinks (all executables are accesable via /System/Links/Executables). That makes for example backups easier. Unfortunately, sometimes symlinks themselves contain information in their target, thus you cannot simple use "follow symlinks" in your backups. What I really dislike is the /tmp directory (look at all the security problems, etc.). A normal (non-server) user process should really avoid writing anywhere but into the home directory and use a private tmp storage in there. An even a server process or X11 should rather use something in /var.
Posted Jan 22, 2004 11:49 UTC (Thu)
by nix (subscriber, #2304)
[Link] (1 responses)
Every halfway-competent backup program does this, even `cp -a'.
Posted Jan 22, 2004 17:40 UTC (Thu)
by rschroev (subscriber, #4164)
[Link]
In that case, I prefer the standard way of doing things. The names could have be chosen better and the difference between the purpose of some directories is sometimes not clear, but I like how it separates static data (binaries, documentation) from configuration and from other variable data and from user data.
Posted Jan 23, 2004 21:34 UTC (Fri)
by Ross (guest, #4065)
[Link]
But oh well, it's not bad enough to warrant such a large change. And the
Posted Jan 22, 2004 14:04 UTC (Thu)
by BryceK (guest, #2886)
[Link]
I've always hoped someone would do this for an entire distribution. I can't wait to try it! Thanks LWN, for the heads up!
Posted Jan 22, 2004 17:14 UTC (Thu)
by elanthis (guest, #6227)
[Link]
Posted Jan 22, 2004 19:59 UTC (Thu)
by bjn (guest, #2179)
[Link] (2 responses)
Posted Jan 22, 2004 21:25 UTC (Thu)
by tsinclai (guest, #11399)
[Link] (1 responses)
On OS X, for those unfamiliar: /Applications - default directory for apps (primarily GUI apps) /usr, /tmp and others are still there when you pop up a command prompt, but hidden in the As for whether this is a good way to organize things or not, perhaps I'm not the person to
Posted Jan 23, 2004 17:49 UTC (Fri)
by dbrandon (guest, #1090)
[Link]
Posted Jan 23, 2004 10:31 UTC (Fri)
by Duncan (guest, #6647)
[Link]
Posted Jan 26, 2004 17:20 UTC (Mon)
by gkarabin (guest, #16189)
[Link] (1 responses)
Posted Jan 27, 2004 14:18 UTC (Tue)
by Cato (guest, #7643)
[Link]
set completion-ignore-case On
Posted Feb 2, 2004 16:18 UTC (Mon)
by talex (guest, #19139)
[Link]
This sounds like a dream - a Unix-like system where you can actually find things in an GoboLinux - Fun with File System Hierarchy
intuitive way! Almost too good to be true ... well, too good for now, I guess. But, Linux
distributors would do well to look at such an effort - only then can you expect some average
person to be able to administer such a system in real life. Go Gobo.
Not foolproof. English is not the only language in town.
GoboLinux - Fun with File System Hierarchy
If you only had access to the source...
GoboLinux - Fun with File System Hierarchy
That sort of misses the point - whether or not you have the source, there's going to be trouble if the directories are named 'programs' 'programmes' and 'sendefolgen' (and that's only European languages).
GoboLinux - Fun with File System Hierarchy
I do not think that the Programs directory structure is more *logical* than the standard hierarchy (except the names themselves, maybe, for linux the "usr" directory naming is rediculous and purely historical).GoboLinux - Fun with File System Hierarchy
GoboLinux - Fun with File System Hierarchy
Unfortunately, sometimes symlinks themselves contain information in their target, thus you cannot simple use "follow symlinks" in your backups.
Well, no: you really have to back up the symlinks *as symlinks*, and similarly for all other non-regular filetypes (or the first time you hit a non-connected FIFO, or /dev/zero, you'll never come back).
If I understand you correctly, that would mean you cannot backup your config files by making a copy of /etc - you would end up with a bunch of symlinks instead of the data itself. GoboLinux - Fun with File System Hierarchy
I also dislike "etc". But I do like the consistancy of using 3 letters andGoboLinux - Fun with File System Hierarchy
only lowercase. I think a better choice would have been "cfg". And I
agree about "usr". Something like "sys" would have been a nicer name.
Gobo names will also be disliked by some. I really didn't like the
arrangement of the "System" folder nor did I appreciate the mixing of
non-chaning files like binaries and configuration files in a single
"Programs" directory. One nice thing about /usr is that there is really
no need to modify anything in it. You don't need to back it up because it
should consist of files extracted from packages.
As a reformed DOS/Windows user, I've tried to do something like this for years on my Linux systems for packages I compile myself. It's a lot of work. The UNIX file hirerarchy is a heck of a head-wind to struggle against.Oh man!
There are already other Linux systems which do this - GoboLinux is in no way new or innovative. LinuxStep is one good example, among others.
GoboLinux - Fun with File System Hierarchy
This is Mac OS X.
GoboLinux - Fun with File System Hierarchy
I was just about to mention that!GoboLinux - Fun with File System Hierarchy
/System and /Library - system-wide preferences and other library files
/Users - user home directories
When you install the developer tools, they are primarily located in /Developer
GUI file system view.
ask. I'm used to the traditional *NIX hierarchy so I can typically find things pretty easily.
However, I teach Linux system administration and newbies frequently have trouble
navigating the file system.
And the nice thing about OS X is that this hierarchy extends down to the user and up to the GoboLinux - Fun with File System Hierarchy
network. They call them "Domains" and have User, Local, Network and System. So, /Library
is just the local domain. There's also ~/Library (User), /Network/Library (Network) and /
System/Library (System). A properly behaved program will look at all of these for a
resource. The search order is User, Local, Network, System. (See Inside Mac OS X, System
Overview chapter 9 for details.)
All I can say is "YUCK!!" GoboLinux - Fun with File System Hierarchy
I'm a reformed MSWormOS/MSDOS user myself, but recently upgraded my
system to AMD64 (running Mdk 9.2 RC, updated regularly, FWIW), and shortly
thereafter had my main hard drive go south on me. I REALLY discovered the
beauty and simplicity of the traditional *ix file system at that point, and now
DEFINITELY appreciate it.
Unlike MSWormOS, which unfortunately mixes applications and per-installation
settings and customizations in a confusing hodge-podge nearly impossible to sort
out for backup purposes, the traditional Linux (Unix) organization is simple and
straightforward to backup -- AND to restore, when necessary. Back up /etc,
/usr/local, and /home, plus the normally /var stuff like mail spools, and any
installation specific stuff like the /mnt/user/news and /mnt/user/mm (multi-media)
(on a desktop, obviously, servers would have server data to backup instead), plus
any proprietary/custom installs on /opt, and you've effectively backed up the
whole system, since its easy enough to reinstall install the base system and
distribution binaries and files off the install CDs.
Since functional data such as mail and server data, and personal stuff such as
/home and multi-media, wherever that's located on a particular desktop system
installation, should be backed up regularly on their own, that leaves only /etc and
/usr/local (plus anything proprietary on /opt or wherever) for system backups,
and one should be able to fit multiple blindly-copy-the-entire-subdir tree system
backups on a single 10 cent CD. Here, /etc and /usr/local together run about
33MB, so I can easily do a quarter's worth of weekly system config backups to a
CD. Make that a pair of CDs for data reliability reasons, and it's six months
worth of system backup data on a pair of CDs. Can't beat the ease and
simplicity of that!
Or, simply backup to a second hard drive, with partitions not normally mounted
except for backup, and mounted read-only for reference or restore operations.
Same thing, tho. It's far simpler to back up a traditionally laid out Linux system,
than an MSWormOS system with data and binaries combined, and restoring is
equally simple. Gobo Linux appears to be taking that back to the hodge-podge
nightmare of MSWormOS. As I said, YUCK! It's DEFINITELY not for me!
Duncan
Sounds interesting, although widespread adoption seems to be a tough logistical problem. I'd prefer to see lowercased names for the directories. Pressing "shift" should be avoided whenever possible, IMHO. ;) I can live with longer-than-TLA names with tab completion.GoboLinux - Fun with File System Hierarchy
bash at least solves the tab-completion issue - it does case-insensitive completion (in fact the GNU readline library does this for bash). Just put the following in ~/.inputrc and restart bash:GoboLinux - Fun with File System Hierarchy
I wonder if GoboLinux would be willing to export their collection of programs via Zero Install. They seem to be using a similar heirarchy (Apps/SomeApp/Version/etc), and that would allow everyone to use these applications without having to install a completely new distribution...
GoboLinux - Fun with File System Hierarchy