TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

GoboLinux: A distro that redefines the entire filesystem hierarchy

133 pointsby joshumaxalmost 8 years ago

24 comments

ropeladderalmost 8 years ago
Coming from Windows a year or so ago, the Linux filesystem has been probably <i>the</i> most confusing thing about the switch (I&#x27;ve read about the logic behind &#x2F;var and &#x2F;bin and &#x2F;usr several times but it was not intuitive to me and didn&#x27;t stick). I generally have no idea where my config files are stored and can barely find where programs keep their data. And then I download some software that doesn&#x27;t install itself and I have to figure out where to put it... The fact that this is all only sorta-kinda standardized between distributions, and that you often have separate config files for the system, for the user, and for the session doesn&#x27;t help either.<p>It&#x27;s not clear that GoboLinux entirely solves this issue but at first glance it looks like it&#x27;s trying and the &#x2F;Programs organization is pretty intuitive.<p>What&#x27;s not appealing at all though is using a distro that doesn&#x27;t have custom packages for all the software I&#x27;m using (aka is not Ubuntu or RedHat based). I&#x27;m not at all comfortable building from source--when I&#x27;ve tried it I&#x27;ve rarely been successful--and the prospect of further winnowing down my choices (from not just Linux-compatible software to software that however many GoboLinux users have uploaded to their Recipes directory) is, well, pretty intimidating.
评论 #14927870 未加载
评论 #14927569 未加载
评论 #14927465 未加载
评论 #14927444 未加载
评论 #14928934 未加载
Majora320almost 8 years ago
Looks somewhat interesting. Essentially, it just switches the primary index from &quot;type of file&quot; (e.g. binary, config file etc.) to &quot;program this belongs to&quot;. That has some advantages, as humans are more likely to want to search by program. I do have some issues with the distro&#x27;s execution of this idea, though - the path names are far too verbose, and I&#x27;d rather not have to use the shift key twice in every path. I&#x27;d take &#x27;&#x2F;etc&#x2F;foo.conf&#x27; over &#x27;&#x2F;Programs&#x2F;Foo&#x2F;Config&#x2F;Foo.conf&#x27; any day.
评论 #14926861 未加载
评论 #14928952 未加载
评论 #14926916 未加载
nthcolumnalmost 8 years ago
Okay so correct me if I am wrong: the original root structure is still there just hidden with this Gobohide thing. (I do not like this - turn off immediately).<p>You download tarballs into Programs and unpack and configure make install there, it &#x27;just works&#x27;TM somehow, (I like this - sort of). I think &#x27;Couldn&#x27;t you create a script which creates a load of symlinks (for any distro), put it in a folder on your desktop?&#x27;<p>Okay,.. help me here - what problem are we trying to solve again? I like the nice view of the applications we have, but just thinking quite often packages have their own symlinks for like lib.so.2--&gt;lib.so.3 will this have symlinks to symlinks to... so now thinking is it really worth the effort for a nice view of the applications? What else do I get?
评论 #14928009 未加载
评论 #14928924 未加载
评论 #14928587 未加载
todd8almost 8 years ago
Many readers of HN won&#x27;t need this explanation of the Unix&#x2F;Linux&#x2F;MacOS filesystem hierarchy, but for those that find it confusing here is a very brief summary. See Wikipedia for a more in depth discussion [1].<p>When Unix was invented, the concept of hierarchical filesystems wasn&#x27;t new, notably Multics had a hierarchical filesystem, but there were conflicting visions. At the time, most other operating systems divided the filesystems between a number of top-level containers containing files, but no nested containers. IBM&#x27;s contemporary time-sharing system, VM&#x2F;370, supplied users with a set of top-level &quot;virtual&quot; drives each containing any number of files. There were no recursively nested directories.<p>The designers of Unix wanted a simple Operating System suitable for software development so they tended to implement an idea and then use it as much as practical in the OS design. Rather than have top-level containers like drives that contain folders that contain files, Unix just had directories and files (both implemented with the same on device structures called inodes). This combination of simple ideas fully generalized can be seen throughout Unix: multiple pathnames can point (link) to the same inode providing a form of aliasing for filenames, the api for files is generalized to include access to (possibly raw) devices so devices show up in the filesystem hierarchy, etc.<p>[&#x2F;]<p>The top level directory has the name &#x2F;, unlike other systems all filesystem pathnames start at this single point.<p>[&#x2F;etc]<p>System configuration is found here. Most of these files are simple text files that may be edited by system administrators. In the past administrators might directly edit &#x2F;etc&#x2F;passwd to remove a user. Now, things are more complex, but there is still a backwards compatible &#x2F;etc&#x2F;passwd file (containing encrypted passwords, etc.).<p>[&#x2F;bin and &#x2F;sbin]<p>Unix, from the beginning was, like it&#x27;s inspiration Multics, a multi-user system. Reconfiguring the system, for example to add a printer or drive, normally required running in single user mode at a privileged level. For this reason the programs needed by administrators running single user were segregated and placed in &#x2F;bin. The rest of the system could be left offline, useful when working on the rest of the system.<p>As Unix grew, more and more utilities were added to &#x2F;bin until it made sense to segregate it into those utilities needed when even a normal user might find themselves in single user mode vs a system administrator doing something dangerous. The super-user type programs now go in &#x2F;sbin while the essential, but far less dangerous utilities go in &#x2F;bin. Ordinary file copy is &#x2F;bin&#x2F;cp while the reboot command is &#x2F;sbin&#x2F;reboot. Some of the division look arbitrary to me, like &#x2F;sbin&#x2F;ping instead of &#x2F;bin&#x2F;ping, but there is probably logic behind it.<p>[&#x2F;usr and &#x2F;var]<p>Once booted up normally in multi-user mode, &#x2F;usr contains system read-only content (for example, programs and libraries) and &#x2F;var contains system content that is variable (like log files).<p>The &#x2F;usr directory is large and subsequently divided into a number of second level directories.<p>[&#x2F;usr&#x2F;bin]<p>This is where the rest of the Unix &quot;binaries&quot; (i.e. programs) reside. So while ls (the list directory command) is &#x2F;bin&#x2F;ls the c compiler resides in &#x2F;usr&#x2F;bin and is &#x2F;usr&#x2F;bin&#x2F;gcc.<p>[&#x2F;usr&#x2F;sbin]<p>Like the division between &#x2F;bin and &#x2F;sbin more administrative commands not necessary for single user mode (see &#x2F;sbin) are placed in &#x2F;usr&#x2F;sbin. For example, the command &#x2F;usr&#x2F;sbin&#x2F;setquota used to set disk quotas on users is in &#x2F;usr&#x2F;sbin and not in &#x2F;usr&#x2F;bin.<p>[&#x2F;usr&#x2F;lib]<p>This is where Unix supplied software development libraries go.<p>[&#x2F;usr&#x2F;include]<p>This is where Unix supplied (predominantly C and C++) include files are placed.<p>[&#x2F;usr&#x2F;share]<p>System documentation, the man pages, and spelling dictionaries are examples of the files found in &#x2F;usr&#x2F;share. They are read-only files used by the system under normal (multi-user) operation.<p>By now &#x2F;usr&#x2F;share is full of further subdivisions since many programs and systems need a place to put their read-only information. For example there is a &#x2F;usr&#x2F;share&#x2F;cups for the Common Unix Printing System to store information about printers, etc.<p>[&#x2F;usr&#x2F;local]<p>System administrators may add additional local data and programs to their system. It make sense that these would be segregated from the rest of the files under &#x2F;usr that come with Unix. The contents of &#x2F;usr&#x2F;local are local to the machine and are further subdivided into programs in &#x2F;usr&#x2F;local&#x2F;bin and read-only data for these programs in &#x2F;usr&#x2F;local&#x2F;share.<p>[&#x2F;usr&#x2F;X11...]<p>Once, one of the biggest subsystems in Unix was it&#x27;s support for the graphical user interface known as the X window system. There were development libraries and include files, commands, man pages, and other executables. Rather than swamping the neat file hierarchy with these new files they were placed under a single subdirectory of &#x2F;usr. You will probably not need to look at this very often.<p>[&#x2F;home]<p>Users home directories are placed here; mine is &#x2F;home&#x2F;todd. Often &#x2F;home is on a different physical partition so that it can be unmounted and a new version of the operating system can be installed without touching &#x2F;home.<p>[&#x2F;tmp]<p>Temporary files, for example that don&#x27;t need to be backed up, are placed here.<p>[&#x2F;mnt]<p>I&#x27;ve mentioned mounting and unmounting. Unix systems support a number of different filesystem formats, and devices can contain multiple filesystems (for example on distinct partitions). These filesystem become accessible once they are mounted into the hierarchy. Users need to temporarily (and now automatically) mount USB drives somewhere so that their files can be accessed via a pathname. In the past, users would just pick a directory to mount over. Now, it&#x27;s traditional for temporary mounts to be placed in &#x2F;mnt.<p>[&#x2F;dev]<p>In Unix, low level access to devices is done through device drivers that support a number of file interfaces. Because they appear as special files they can be found under this directory. This is a convenience for programs because it makes naming and access to devices very similar to naming for ordinary files.<p>[Finding out more information about Unix and its hierarchy]<p>The Unix manual pages are a great resource. Originally, the manual was a physical book (I&#x27;ve still got a couple) divided into sections. Section 1 were the commands one might type on the command line. Now it is much easier to simply use the man command to access the exact same content. Use a terminal and enter &quot;man ls&quot;, for example, to get all the information on the ls command to list directory contents. (You will be surprised at the number of options.)<p>When you aren&#x27;t sure of the command&#x27;s name try the command &quot;apropos&quot; followed by a word you&#x27;d like to find the man page for. Passwords are an important subject so &quot;apropos password&quot; on my system lists 47 different manual pages for information on passwords. I see one listed as &quot;passwd(1)&quot;. The (1) means it&#x27;s section one so its about a command named &quot;passwd&quot;, the command for changing your password.<p>Here are the sections:<p>(1) Commands<p>(2) System calls<p>(3) Library functions<p>(4) Special files like device files<p>(5) File formats<p>(6) Recreations like games<p>(7) Misc info<p>(8) System admin and daemons<p>If I was looking for the format of the password file I would enter the section number 5 as the first argument to the man command: &quot;man 5 passwd&quot;. This would show me the documentation for the password file, &#x2F;etc&#x2F;passwd.<p>Filesystem hierarchy manual page: &quot;man 7 hier&quot; or, since it is in only one section: &quot;man hier&quot;. To find the name, &quot;hier&quot;, of this man page one could have used the command &quot;apropos filesystem&quot;.<p>I hope this helps; it&#x27;s probably too long.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Filesystem_Hierarchy_Standard" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Filesystem_Hierarchy_Standard</a>
gbrown_almost 8 years ago
A lot of people talking about FHS here, let us not forget history.<p><a href="http:&#x2F;&#x2F;lists.busybox.net&#x2F;pipermail&#x2F;busybox&#x2F;2010-December&#x2F;074114.html" rel="nofollow">http:&#x2F;&#x2F;lists.busybox.net&#x2F;pipermail&#x2F;busybox&#x2F;2010-December&#x2F;074...</a>
评论 #14928355 未加载
gcodaalmost 8 years ago
Version control of installed packages would be awesome. I am still on Arch coz I am lazy. It would be perfect if it worked like nixpkg or guix but simpler
评论 #14927165 未加载
koehralmost 8 years ago
So they take the MacOS file structure to Linux? Sounds horrible to me. I always loved the structure of the Unix file system. It&#x27;s simple and rather efficient. You wonder if a specific binary is installed? Look in &#x2F;bin. You wonder if where to configure something? Look in &#x2F;etc. You want to write a program that gives you a list of all binaries installed (like a shell)? Use the path variable that contains a few paths and check their contents. In gobolinux this variable is either huge or they use yet another mechanism. It clearly will not get better though.<p>The file structure should be efficient for the computer and can be abstract for the user as they want a icon on their desktop and not much more.
评论 #14926999 未加载
评论 #14927265 未加载
评论 #14927022 未加载
评论 #14926961 未加载
评论 #14927020 未加载
评论 #14930371 未加载
评论 #14927000 未加载
评论 #14928665 未加载
_wojralmost 8 years ago
This is exactly what I have wanted for many years. This helps make Linux understandable and accessible to new computer users. Fantastic work, and thank you!
arghwhatalmost 8 years ago
That&#x27;s cool and all, but oh dear god WHY did you have to capitalize things?! BLASPHEMY.
评论 #14930007 未加载
评论 #14928881 未加载
stuaxoalmost 8 years ago
This is incredibly sane.<p>What a nice logical system, I&#x27;ve been a Linux user for about 15 years but would definitely prefer this.
carlhjerpealmost 8 years ago
I&#x27;ve always wondered why things wasn&#x27;t set up like this from the beginning, much less pain for humans!
评论 #14927043 未加载
评论 #14930327 未加载
评论 #14930330 未加载
评论 #14927280 未加载
评论 #14927538 未加载
onikolasalmost 8 years ago
So place your programs in a directory structure that makes sense and use symlinks to maintain compatibility. Simple and elegant.<p>But... how do I go about actually installing those programs? Web search and then git-clone &#x2F; manual download? How are dependencies resolved? Admittedly I haven&#x27;t read the documentation, just the overview.<p>On a related note, I feel like Arch struck a nice balance with pacman and AUR.
评论 #14930302 未加载
评论 #14928054 未加载
lprovenalmost 8 years ago
I&#x27;ve occasionally played with Gobo for years now. I am delighted to see it coming back to life of late.<p>One thing I&#x27;ve always thought would be ideal would be if either or both of the 2 Linux desktops that natively implement the idea of application-directories were top support Gobo app-dirs.<p>Those 2 are GNUstep:<p><a href="http:&#x2F;&#x2F;www.gnustep.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.gnustep.org&#x2F;</a><p>... and the ROX Desktop:<p><a href="http:&#x2F;&#x2F;rox.sourceforge.net&#x2F;desktop&#x2F;" rel="nofollow">http:&#x2F;&#x2F;rox.sourceforge.net&#x2F;desktop&#x2F;</a><p>GNUstep implements NeXTstep&#x2F;macOS style app dirs: a top-level Appname.app folder with an OS X-like structure inside it.<p>ROX Desktop implements Acorn RISC OS-style app dirs, called<p>!Appname<p>... and containing a different but comparable layout.
traversedaalmost 8 years ago
It&#x27;s currently pretty annoying to set up gobolinux in &quot;home-dir&quot; mode. I tried, and the documentation failed to link to the correct scripts, and after searching the scripts out, I got a &quot;permission denied&quot; error when I tried to download them, and a request for a user&#x2F;password combo that wasn&#x27;t documented anywhere.<p>What I wanted to do was create an &quot;append only&quot; &quot;everything is installed&quot; operating system on top of ipfs. Gobo, with it&#x27;s ability to have multiple versions of each component in the same tree, seemed perfect for that. The idea being that you just run an executable right out of the ipfs mount.
评论 #14930114 未加载
rufiusalmost 8 years ago
Gobo is a cool district - one of my favorites. I used it for a while in college with good success. Back then I recall the process for packaging being a little rough.<p>I should give it another go to see how it has evolved.
评论 #14938889 未加载
davempalmost 8 years ago
Kind of interesting, but honestly I&#x27;d like to see a much more drastic departure from UNIX roots. If you want to clean things up, go all in. I wouldn&#x27;t hire a cleaning service to clean 1&#x2F;5th of my house (especially if they left some clutter in that 1&#x2F;5th because they thought I might miss it).<p>A small change like this is cool but pacman&#x2F;aur leaves almost nothing to be desired for dealing with my programs. I do like the idea, but I would need to see a compelling philosophy for the __whole__ system.
pvdebbealmost 8 years ago
Have to say -- it&#x27;s looking real good otherwise. Cool scifi fonts and colors, awesome by default. Apparently it also skips systemd and pulseaudio -- a big plus, a big plus indeed.
jbb67almost 8 years ago
I like this a lot. This seems to be how it should be. However, not sure I&#x27;d use it. I guess I&#x27;ll try it out in a VM and see how it goes :)
digi_owlalmost 8 years ago
A little something to note, with the latest release there is a tool, Alien, that integrate language specific package managers with the Gobolinux directory tree.<p>Meaning that downloads from cpan or similar will be placed in a sub-directory of &#x2F;Programs and managed just like any other Gobolinux package.<p>Right now perl, python, ruby, and lua are supported (afaik).
arca_voragoalmost 8 years ago
I live the gobo fs, but I don&#x27;t lie the rest of the distro that much. I&#x27;ve often though a bigger distro like manjaro could use the fs and show the world how good it is.<p>I&#x27;ve been sysadmining for a long time, and even I get lost in the old dir structure sometimes, I&#x27;ve just gotten good at the find command.
pmalmost 8 years ago
Copyright 2002-2017... must&#x27;ve been going for quite a while now.
评论 #14927174 未加载
steinuilalmost 8 years ago
I was interested in Gobo a few years ago, but I was a bit turned off by learning that it achieves this mostly by using a lot of symlinks.
评论 #14927184 未加载
jbverschooralmost 8 years ago
It&#x27;s funny how more and more macos designs are being copied over. First systemd, now this.
评论 #14927835 未加载
评论 #14930383 未加载
blablabla123almost 8 years ago
They are basically doing what GNU Stow does for everything. I enjoy the isolation but a normal package manager is in my experience more comfortable.