this post was submitted on 11 Dec 2023
561 points (98.4% liked)

Linux

48061 readers
703 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Hey, I've recently designed a Poster about the FHS since I often forget where I should place or find things. Do you have any feedback how to make it better?

I updated the poster: https://whimsical.com/fhs-L6iL5t8kBtCFzAQywZyP4X use the link to see online.

Dark mode

Old version

top 50 comments
sorted by: hot top controversial new old
[–] Admax@lemmy.world 30 points 11 months ago (6 children)

Damn that's some great work ! When I started linux I wish I had found such ressources, I was really curious what each of these directories were for.

Would you mind if your material was reused (with credit) for education purposes ?

[–] callcc@lemmy.world 22 points 11 months ago

I'd be more than happy if this was used. Do whatever you want with it as long as you abide by the CC BY-SA-4.0 license. This means you can share freely and modify as long as you keep the authorship information and share with same license.

load more comments (5 replies)
[–] bionicjoey@lemmy.ca 19 points 11 months ago (2 children)
[–] eager_eagle@lemmy.world 8 points 11 months ago

it bothers me a little the entry is not called fhs: man fhs

[–] callcc@lemmy.world 4 points 11 months ago

Added to new version. Thanks for the suggestion.

[–] KISSmyOS@lemmy.world 16 points 11 months ago (9 children)

Where should I mount my additional internal HDD's?
/media doesn't fit cause they aren't removable
/mnt doesn't fit cause they aren't mounted temporarily
Currently I have them mounted as /home/user/data and /home/user/backup.
Any reason not to do it like this?

[–] seaQueue@lemmy.world 17 points 11 months ago* (last edited 11 months ago)

I just mount mine into /mnt and bind mount subdirectories from them into wherever I need the space.

Edit: if you want a more theoretically correct location according to the FHS you could mount drives somewhere under /run and bind their contents from there. I've done that before as well.

[–] eager_eagle@lemmy.world 10 points 11 months ago* (last edited 11 months ago)

tbh I don't think it matters, so wherever you feel like doing it. I just leave it where the distro or file manager defaults to: in Ubuntu-based distros that's /media/$USER/mount-name. For mounts shared across users you could drop the $USER.

Since FHS doesn't specify where "non-removable media" should go, I don't think it makes sense to adopt this recommendation as /media should be removable, but rather, "in case the media IS removable, then mount it to /media/".

[–] TheEntity@kbin.social 9 points 11 months ago

If they are internal and permanent (read: unlikely to be removed on a daily basis), I'd just mount them based on their purpose and not them being separate HDDs physically. If they are meant for logs, mount them at /var/log. If they are meant for your movies, /home/user/data is more than fine. In general FHS describes the directory hierarchy, not which parts of it are mountpoints and which are physically on the same media. Technically you're fine having each and every directory on a separate HDD.

[–] zhenbo_endle@lemmy.ca 5 points 11 months ago (1 children)

I'm also mounting them into /home/user/data while I don't think hard-coding the user name in the mountpoint is a good idea. Besides, it needs the assumption that I'm the only "human-user" of this computer.

I may also mount them at /opt/data, but I'm not sure if it's a good idea

load more comments (1 replies)
[–] BronzedBonobo@midwest.social 4 points 11 months ago (2 children)

I’m coming more from a server perspective but, fundamentally, all HDDs are “temporary”. Eventually that data might be in a bigger/faster/functioning replacement - so it’s best to treat the drive as something which can always be replaced.

Continuing that, you might mount to /mnt and then symlink that where you really want it, say ../games. That layer of abstraction allows you to replace the drive without much effect on install. Also allows for expansion via something like mergerfs (*no idea if that’s a good idea for your use cases)

load more comments (2 replies)
[–] pixelscript@lemmy.ml 4 points 11 months ago (1 children)

I originally had mine mounted on /, to make them easy to type. But that set one of my highly opinionated friends wretching, so I re-mounted them to /media// to placate him and symlinked them to my home directory instead.

It's frustrating how often Linux systems, when approached with a "where is the canonical location for ?" question, have an answer ancient use cases practically no one has anymore, but no satisfying answer for extremely common use cases like permanently mounted backup drives, where to put web server hosted files, or even where to install applications that don't come from package managers (/opt/? /usr/bin/? /home//.local/?).

load more comments (1 replies)
load more comments (3 replies)
[–] Rustmilian@lemmy.world 13 points 11 months ago (6 children)

I really like this, but can I have a black background version please?

load more comments (6 replies)
[–] cerulean_blue@lemmy.ml 12 points 11 months ago (1 children)

Super useful, thanks. Actually made a lot of things click in my head about how Linux works.

When did /home get deprecated? Is /usr/local the replacement?

Sorry for the n00b question (I'm not a noob, but I have been off Linux for a few years), figured the answer may be useful to other users too

[–] vole@lemmy.world 14 points 11 months ago (1 children)

/home is not deprecated, it's optional but common. Here is the section from FHS: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s08.html

[–] dino@discuss.tchncs.de 5 points 11 months ago* (last edited 11 months ago) (2 children)

then the legend should be fixed its confusing, as is the whole idea of FHS is outdated and a chore for new users to get into (i still don't fully understand it)

  • difference between /media and /mnt
  • wtf is /run? some glorified /temp?
  • /usr/sbin "non vital system binaries" ... aha ok, whatever don't tell me you understand the difference between 6 (SIX !) differen bin/sbin folders
  • could continue forever...
[–] callcc@lemmy.world 4 points 11 months ago

The legend is a bit broken. Will fix it maybe.

As for the rest, yes, the FHS can be confusing. It's from a time where mostly professional admins would deal with it and requirements were pretty different from today's end-user systems. If you want to understand more, I urge you to read the spec. It's highly readable! https://refspecs.linuxfoundation.org/FHS_3.0/fhs.html

load more comments (1 replies)
[–] Samueru@lemmy.ml 12 points 11 months ago* (last edited 11 months ago) (4 children)

We need something like this for home, I hate that programs like steam and firefox place themselves directly into home instead of ~/.config and ~/.llocal.

I even move my personal themes to /usr/share/themes because not everything works with ~/.local/share/themes and needs a ~/themes directory instead.

[–] KISSmyOS@lemmy.world 28 points 11 months ago (1 children)

My personal pet peeve is that Firefox profiles are in ~/.mozilla/firefox and Thunderbird profiles are in ~/.thunderbird.
If your flagship product creates a folder named after your company, why not use it for all software by your company???

load more comments (1 replies)
load more comments (3 replies)
[–] ferralcat@monyet.cc 9 points 11 months ago (1 children)

I'm surprised to hear /home is non standard.

[–] callcc@lemmy.world 5 points 11 months ago (1 children)

I guess the reason it's not in FHS is that FHS is concerned about system wide things whereas /home is the opposite. It's the user's realm.

There is XDG for /home/$user though.

[–] Rustmilian@lemmy.world 4 points 11 months ago (1 children)

Are you planning on doing one for XDG?

load more comments (1 replies)
[–] netwren@lemmy.world 9 points 11 months ago (9 children)

I don't understand the ambiguity of where to put your projects.

I've typically always put things under /opt/ TIL /etc/opt was where the config should go.

load more comments (9 replies)
[–] pipows 9 points 11 months ago* (last edited 11 months ago) (1 children)

This is a very useful, very well done chart, congratulations.

But what a mess is FHS. Easily the worst thing of linux design for me

load more comments (1 replies)
[–] urfavlaura@lemmy.ml 8 points 11 months ago (2 children)
[–] dino@discuss.tchncs.de 4 points 11 months ago (2 children)

does guix go the same was as nixos in that regard? where can I find info regarding FHS in guix?

[–] callcc@lemmy.world 5 points 11 months ago

Afaik guix is very similar to nixos in that respect. The store where applications are installed is called /gnu there.

load more comments (1 replies)
load more comments (1 replies)
[–] MaxPower@feddit.de 8 points 11 months ago (2 children)

Great but what I'm missing is the information that "usr" does not stand for "user", like many people think or even say. If it would the name could actually be "user" and not "usr".

The chart actually does not say what exactly it stands for. It's "user resources" AFAIK.

It's worth clearing this up in my opinion.

[–] callcc@lemmy.world 5 points 11 months ago

Thanks for the input. Things are complicated: https://askubuntu.com/a/135679 . Apparently it originally meant "user" but then slowly was used for system stuff. So people invented backcronyms.

[–] SpaceCadet@feddit.nl 4 points 11 months ago

That's just retconning/backronyming it.

/usr does historically stand for user. It's where the user home directories were on old Unix versions.

[–] callyral@pawb.social 7 points 11 months ago* (last edited 11 months ago) (2 children)

how is /usr/local local and not system-wide? i though it was for programs you compiled yourself?

[–] TheEntity@kbin.social 14 points 11 months ago (1 children)

"Local" in this context means local to this whole machine. From the perspective of a single user, it's system-wide. But then from the perspective of a sysadmin managing dozens of such systems, it's local.

[–] callyral@pawb.social 4 points 11 months ago

thanks for the explanation!

[–] callcc@lemmy.world 6 points 11 months ago* (last edited 11 months ago)

Many FHS things don't make much sense for single-user (human user) systems on modern hardware. /usr/local does though. It's for you (as admin) to install software that doesn't come with the os.

[–] mankeulv@lemmy.latrans.cloud 7 points 11 months ago (2 children)

Nicely done! Do you perchance have any hi res version?

[–] callcc@lemmy.world 4 points 11 months ago (2 children)

Thanks! Unfortunately I've used closed source whimsical.com for this and don't have a paid subscription. They only offer low-res for those accounts since recently :(

load more comments (2 replies)
load more comments (1 replies)
[–] ultra@feddit.ro 7 points 11 months ago (1 children)
[–] dannym@lemmy.escapebigtech.info 4 points 11 months ago (2 children)

well nix still uses the same structure, the only difference is that files are symlinked to files in subfolders of the /nix/store folder.

For example you may find that /etc/hosts is just a symlink to /nix/store/69420aaabbbcccdddfffggghhhiii420-hosts

load more comments (2 replies)
[–] Crow@lemmy.world 6 points 11 months ago (1 children)

So why does my system mount my drives to /run/user/1000…?

[–] callcc@lemmy.world 10 points 11 months ago (1 children)

1000 might by your user's user-id

[–] pixelscript@lemmy.ml 6 points 11 months ago (2 children)

1000 is the default ID given to the first-created user on Debian-based systems.

May or may not be the case with other distros. Haven't checked.

load more comments (2 replies)
[–] dan@upvote.au 4 points 11 months ago (4 children)

I've never seen /etc/opt used. Usually if an app is in /opt, the entire app is there, including its config which is frequently at /opt/appname/etc/.

load more comments (4 replies)
load more comments
view more: next ›