Finding a successor to the FHS
The purpose of the Filesystem Hierarchy Standard (FHS) is to provide a specification for filesystem layout; it specifies the location for files and directories on a Linux system to simplify application development for multiple distributions. In its heyday it had some success at this, but the standard has been frozen in time since 2015, and much has changed since then. There is a slow-moving effort to revive the FHS and create a FHS 4.0, but a recent discussion among Fedora developers also raised the possibility of standardizing on the suggestions in systemd's file-hierarchy documentation, which has now been added to the Linux Userspace API (UAPI) Group's specifications.
FSSTND to FHS 3.0
Efforts to standardize directory structure and file placement
for Linux systems go back to the earliest days of distributions. The
Filesystem Standard (FSSTND) 1.0 was released
in 1994; it was developed as "a consensus effort of many Linux
activists
", and coordinated by Daniel Quinlan. In the preface to
the document, which can be found in this directory, it noted that the "open and distributed process
"
of Linux created a need for a standardized structure of the filesystem:
This will allow users, developers, and distributors to assemble parts of the system from various sources that will work together as smoothly as if they had been developed under a monolithic development process. It will also make general documentation less difficult, system administration more consistent, and development of second and third party packages easier.
It was supplanted by the FHS 2.0 in 1997. Version 2.3, the last in the 2.x series, was announced in 2004. Eventually the work moved under the auspices of the Linux Foundation (LF), as part of the Linux Standard Base (LSB) effort, which was a project that attempted to promote open standards to improve compatibility between Linux distributions. In addition to filesystem layout, the LSB specified standard libraries, run levels, and so forth. The LF released FHS 3.0 in 2015.
The FSSTND and FHS specifications described the layout of the filesystem as well as the files and commands that should exist on a conformant system. It describes the expected structure of everything under root ("/"), which directories should be present on a local system or those that can be shared via NFS or similar, and more. For example, the FHS describes the /bin directory as well as all of the commands—such as cp, ls, and mv— that are expected to exist there.
One might question whether any of the various standards succeeded in making open-source projects work together as envisioned; but we can also imagine how chaotic things would be if there had been no FHS at all. Now, however, the standard has been frozen in time for a decade while Linux development has continued apace.
The FHS is not just old at this point: everyone involved seems to
have packed up and gone home. The fhs-discuss
mailing list that was hosted by the LF appears to have
been retired and LSB maintainer Mats Wichmann wrote
in 2023 that "the LSB project is essentially
abandoned
".
Last year, postmarketOS core developer Pablo Correa Gomez and a few others started an effort to move the FHS work under the freedesktop.org banner and create 4.0 of the standard. There has been some sporadic activity and discussion; the project has a handful of issues open, but little real progress has been made so far. In fact, the discussions under the project had been stalled for months until the topic was raised on a Fedora list.
FHS or UAPI?
On August 5, Pavol Sloboda asked on the fedora-devel mailing list whether Fedora's packaging guidelines were referring to FHS 2.3 or 3.0. The filesystem layout section of the guidelines only links to the landing page of the FHS specification archive, where both 2.3 and 3.0 are linked. Sloboda was trying to figure out whether it was acceptable to create directories inside /usr/bin. He said that the 3.0 version prohibits directories inside /usr/bin, but 2.3 does not.
Michal Schorm said that the project should officially adopt FHS 3.0 and create a list of exceptions where Fedora intentionally deviates from the standard. Zbigniew Jędrzejewski-Szmek, though, said that even FHS 3.0 had missed much of the evolution of Linux systems:
In particular, it completely missed the usr-merge, and obviously the merge of bin and sbin… Just looking at the contents table, it is full of outdated stuff, it talks about /mnt and /media, without the understanding that *temporary* paths need to go under /run instead of polluting the root file system.
Some of the FHS is useful, he conceded, but it is now "mostly of
historical interest
". He said that Fedora should just use the
systemd file-hierarchy. He later suggested
that the document should be moved out of systemd's repository and made
part of the UAPI Group's specifications; that was done
on August 8. Michael Catanzaro said
that the UAPI group was "clearly the right place for
the successor to FHS
".
It is worth noting that the systemd/UAPI file-hierarchy is based in
part on the FHS, XDG
Base Directory Specification, and XDG
User Directories. It does not attempt to be as comprehensive as
the FHS; it "only documents a skeleton of a directory tree, that
downstreams can extend
". It does not, for example, provide any
guidance about what binaries are to be expected on a compliant system.
Neal Gompa, who is participating in the FHS 4.0 effort, disagreed,
saying that the UAPI "isn't a neutral space: it's a systemd-driven
project
". He added that he has no "particular beef
" with
systemd, but it is not used by everyone. Luca Boccassi argued
that the file-hierarchy documentation was not systemd-only:
For example, one of the specs (config files) is driven mainly by libeconf which is completely unrelated to systemd and which is used by many projects (and not by systemd) [...]
None of the specifications mentioned on this website require systemd for anything.
Both Boccassi and Jędrzejewski-Szmek expressed skepticism about the FHS 4.0 effort's progress thus far.
Change coming?
Jędrzejewski-Szmek has opened
a ticket with Fedora's packaging
committee to update Fedora's guidelines to point to that document
instead. He added that the UAPI guidelines describe what Fedora is
doing anyway, so "this doesn't introduce any new rules, only drops
some baggage that we were ignoring anyway
". If the packaging
committee agrees, Fedora could be the first distribution to officially
adopt the file-hierarchy specification. In his most
recent comment on the ticket, Jędrzejewski-Szmek said that by linking
to UAPI guidelines "we make it more likely that other distributions
will follow the same rules
", and Fedora does not need to duplicate
the work.
It remains to be seen, of course, whether other distributions will want to follow Fedora's lead. Currently, Debian uses the FHS 3.0, with a number of exceptions or additions in its policy manual. Gentoo, rather emphatically, does not adhere to the FHS; its developer guide spells out where files should be placed on Gentoo systems. According to openSUSE's guidelines for RPM packaging, it also follows the FHS; but, like Fedora, openSUSE does not link to a specific version, leaving it open to question whether it refers to 3.0. (In fact, openSUSE links to a wiki page that still mentions the 3.0 as being developed, rather than completed.) Ubuntu's packaging guidelines also refer to the FHS, without specifying the version.
It may be that the need for a universal Linux filesystem standard has waned; while it is important for distribution packages to have an agreed-on standard, there's far less emphasis on creating native distribution packages for third-party software in 2025. Flatpaks, Snaps, and AppImage packages seem more popular with desktop-application developers these days. A lot of server-side software is now expected to be deployed as a container—or a group of containers run in Kubernetes—rather than installed as a package.
Perhaps, at some point, the FHS revival will bear fruit as a meaningful update to the standard. Until then, the UAPI documentation is the only current game in town.
Posted Aug 15, 2025 15:40 UTC (Fri)
by claudex (subscriber, #92510)
[Link] (1 responses)
While I'll agree with this, I don't think it render the FHS useless. The same application can be distributed as multiple version, we can often see that there are a musl/alpine version and a glibc version (debian/ubuntu/...). I've also seen application based on Redhat UBI for the version usable on Openshift and the version for other Kubernetes distribution based on ubuntu for example. So I think the FHS is still useful for these use case, even if there is no package for the application with deb/rpm, it's useful to easily deploy the application on different distributions without major tweaks on the installation.
Posted Aug 19, 2025 2:40 UTC (Tue)
by redbeard (guest, #74129)
[Link]
Posted Aug 15, 2025 20:57 UTC (Fri)
by atai (subscriber, #10977)
[Link] (81 responses)
Posted Aug 15, 2025 21:11 UTC (Fri)
by pizza (subscriber, #46)
[Link] (56 responses)
What does "nature of the init system" mean in this context?
Posted Aug 15, 2025 21:18 UTC (Fri)
by atai (subscriber, #10977)
[Link] (55 responses)
Posted Aug 15, 2025 22:14 UTC (Fri)
by Wol (subscriber, #4433)
[Link]
How many different places did you have to visit to change the hostname, for example ...
Cheers,
Posted Aug 15, 2025 23:10 UTC (Fri)
by NYKevin (subscriber, #129325)
[Link] (52 responses)
I can see a few different options here:
* Rephrase all mentions of systemd as non-normative descriptions of how that particular implementation does it, rather than normative specifications of how it must be done, similar to the Boot Loader spec[2]. I see this as a dispreferred option because it would leave a few subdirectories with no portable means of discovery, most significantly /usr/lib/arch-id and its cousins.
[1]: https://uapi-group.org/specifications/specs/linux_file_system_hierarchy/
Posted Aug 16, 2025 7:48 UTC (Sat)
by zuki (subscriber, #41808)
[Link] (19 responses)
udevd/systemd-udev is mentioned because it is *the* way that /dev is populated. Not mentioning it by name would be a poinless exercise in obfuscation.
Overall, I find it hard to see what to improve based on your comment. If you have something, please suggest a specific change. Or even better, just make a pull request.
Posted Aug 16, 2025 9:25 UTC (Sat)
by Wol (subscriber, #4433)
[Link] (15 responses)
Actually, mentioning systemd-udev is the pointless exercise. If I don't know (what is) systemd-udev, then that phrase is totally meaningless to me. You're promoting mechanism over policy, and in what is meant to be a specification that any system can implement that is BAD.
Remember back to the document format "wars". The official interoperable document definition is full of stuff like "Do it like Office 95 does it". Do we really want to be guilty of the same crap we were blaming Microsoft for? Or is the real reason likely the same reason we have all that Office 95 crap in the document spec - nobody actually knows how systemd-udev does it :rofl:
At the end of the day, saying "populate it with systed-udev" is dictating mechanism, where the spec should actually be stating policy.
Cheers,
Posted Aug 16, 2025 11:53 UTC (Sat)
by pizza (subscriber, #46)
[Link] (14 responses)
As the saying goes, "you must be at least <this> tall to get on this ride"
If you don't know what systemd-udev is, you probably shouldn't be putting together something that requires either setting things up in /dev or even referencing things in /dev. Or heck, most of what the FHS covers... and, going back to TFA, doesn't cover but is still necessary to know if you want your stuff to work on a general purpose linux system.
Posted Aug 16, 2025 13:21 UTC (Sat)
by Wol (subscriber, #4433)
[Link] (4 responses)
At the end of the day, you shouldn't be saying "do it like systemd-udev". You should be saying "this is what systemd-udev does". Same end result, but policy not mechanism.
Cheers,
Posted Aug 16, 2025 14:28 UTC (Sat)
by pizza (subscriber, #46)
[Link] (2 responses)
The thing is, systemd-udev is literally the canonical udev implementation. Every other has to behave the same way or $badness happens.
So sure, I guess they could cut-and-paste the systemd-udevd documentation and do a global search-and-replace of the name with "the implementation". Or maybe just incorporate it via reference.
Posted Aug 17, 2025 1:07 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (1 responses)
Currently, this section of the standard reads as follows:
> /dev/
Frankly, this is basically fine. As I said, the mention of systemd is incidental and not really relevant to application developers anyway.
But if "basically fine" is not good enough, and if we insist on making it perfect, you could argue for changing it to the following:
> /dev/
Maybe also add a paragraph like this:
> The userspace component responsible for managing this directory is considered an implementation detail. Portable applications should not make assumptions about the nature or behavior of said component, unless the application takes a dependency on systemd or some other specific implementation.
But there is absolutely no need to go into exhaustive detail of exactly how systemd happens to do this. What matters is that:
1. Device files live in /dev/.
Posted Aug 25, 2025 16:32 UTC (Mon)
by pj (subscriber, #4506)
[Link]
Posted Aug 16, 2025 18:33 UTC (Sat)
by bluca (subscriber, #118303)
[Link]
Posted Aug 16, 2025 14:30 UTC (Sat)
by Wol (subscriber, #4433)
[Link]
Actually, do even you know what systemd-udev is, eg what version, what tag in git, yada yada it is that they're referring to?
Simply saying "do it like systend-udev", or "with systemd-udev", is handing the ability to change the formal specification to any old tom dick or harry who happens to submit an update, bug fix or whatever, quite possibly without any idea whatsoever that he's actually modifying a formal spec! At least the Office spec says "like Office 95", even if nobody has a clue what Office 95 actually does :-)
That's why the UEFI specification is careful to lock down the exact version of the FAT-32 or FAT-16 specification it's referring to, so any updates to FAT can't unintentionally update UEFI at the same time ...
Cheers,
Posted Aug 17, 2025 12:17 UTC (Sun)
by kreijack (guest, #43513)
[Link] (7 responses)
Being a specification, it is the opposite: *udev should refer to this specification for its behavior. And the same of course should do the developer of an application.
The point is important, because a developer want to know what can assume and what can't. E.g. it is important to know if a developer can assume that /dev/disk/by-label/... exists in any environment or he can assume that only /dev/sd* (and all its variant like /dev/mmcblk* /dev/hd*) exist. May be some environments (e.g. embedded) prefer a static /dev instead a dynamic one populated by udev.
It is fine even saying something like: "
The point is to highlight what can be assumed, and what may be assumed. It is even reasonable to say: "this specification doesn't cover /dev". But saying "see *udev for /dev" doesn't clarify what a developer can assume or not. Which for a specification is a failure.
Posted Aug 17, 2025 14:27 UTC (Sun)
by pizza (subscriber, #46)
[Link] (6 responses)
Please read what I wrote, and to what I was responding.
If you don't know what systemd-udev is, and you are putting together something that needs to interact with /dev in some way, then that is a sign that you are missing on some foundational knowledge about how Linux systems have been put together for the past *two decades* and need remedial education before you should proceed.
Yes, two decades is longer than systemd itself has existed -- systemd-udevd is, for all intents and purposes, the continuation of the original udev, the latter having been subsumed into the systemd repository over 13 years ago [1].
Like it or not, systemd underpins the _overwhelming majority_ of non-android/non-embedded [2] Linux [3] installations today, and probably >99% of commercially-relevant installations. For all intents and purposes, it can be generally assumed to exist if you are writing something intended to be deployed on Linux. Frankly, leaving systemd's basic services out of a new baseline "this is what application writers can rely upon" spec is completely nonsensical, and is tantamount to ignoring the past 15 years of platform development.
[1] https://lwn.net/Articles/499480/
Posted Aug 18, 2025 4:34 UTC (Mon)
by alx.manpages (subscriber, #145117)
[Link] (3 responses)
> and probably >99% of commercially-relevant installations.
I'd like to remind that many Linux users are hobbyists and we should not stop supporting them. And that distros that avoid systemd also exist (I use one of them).
Posted Aug 18, 2025 13:06 UTC (Mon)
by pizza (subscriber, #46)
[Link] (2 responses)
Who is that "we" you refer to, and why are you volunteering them for additional work?
Do you think that "we" should still be actively supporting retrocomputing folks that intentionally run hardware that was discontinued at least two decades ago? What about Debain/KFreeBSD or Hurd? All of those users are hobbyists too!
Supporting a bajillion snowflake environments is why applications using autotools (not to mention autotools itself) are baroque messes. That complexity mattered at one point ("it's where most of the users are"), but is it really worth spending time to ensure folks running ancient proprietary UNIXes [1] can use the latest software? (Mainline Linux just dropped support for anything older than 2nd-gen Pentium processors for similar reasons!)
Given that you only have limited resources (time/effort/money) at your disposal, you can't support everyone, so you draw the line to get the best return on what you can do. Given that systemd has been the default (or only) option for anything resembling mainstream released [2] or still supported [3] in the past decade, maybe that is where your attention should be focused instead of (more than) doubling your effort to support the remaining few percent.
...To throw out another analogy -- Do you really expect a typical automobile mechanic today to be able to readily diagnose the kinds of malaises common with complex smog-era carburettors, given that the the final vehicle sold with one was in 1994 [4]? Or would you go to a specialist (or become the specialist yourself) as that is the price you're (literally) having to pay for your hobby?
[1] Keep in mind that these systems can be _emulated_ faster (and with vastly more memory and other resources) than the real hardware could ever achieve.
Posted Aug 18, 2025 18:02 UTC (Mon)
by alx.manpages (subscriber, #145117)
[Link] (1 responses)
Open source project maintainers in general.
And in particular, anyone attempting to replace the FHS 3.0, which I still try to follow as much as I can (with sane deviations, of course). Is it so much work to support those in a file-system hierarchy standard? I bet the differences are rather small.
> Do you think that "we" should still be actively supporting retrocomputing folks that intentionally run hardware that was discontinued at least two decades ago? What about Debain/KFreeBSD?
No. Hardware/software that was discontinued long ago is dead to me.
In general, maintaining support for those systems is a lot of work, and results in less safe code (for example, 32-bit code is prone to bugs). That's something I don't mess with.
> or Hurd? All of those users are hobbyists too!
I receive patches from GNU/Hurd maintainers when software that I co-maintain doesn't work in Hurd. I appreciate their effort in making it work, and accept those patches. After all, it's not too much; often, it's just a macro that in Hurd is not defined, so we define a fallback ourselves. Hurd is not discontinued, and not unsafe, so I help them.
> Given that systemd has been the default (or only) option for anything resembling mainstream released [2] or still supported [3] in the past decade, maybe that is where your attention should be focused instead of (more than) doubling your effort to support the remaining few percent.
Someone in this thread reminded that Gentoo doesn't use systemd by default. That's a system I would consider mainstream.
I personally use Devuan, and I'm happy with it. It works.
Posted Aug 18, 2025 20:20 UTC (Mon)
by pizza (subscriber, #46)
[Link]
"Open source project maintainers in general" don't owe you (or anyone else) anything.
You don't get to tell them, collectively or individually, what they should or should not be spending their time doing.
(Unless you're paying them)
> Someone in this thread reminded that Gentoo doesn't use systemd by default. That's a system I would consider mainstream.
Don't equate "familiarity" with "mainstream" -- Gentoo explicitly targets folks that already know enough to be able to make (and deal with the consequences of) the multitude of choices that it enables/provides. Whereas the "mainstream" just wants "something that works".
Posted Aug 18, 2025 14:12 UTC (Mon)
by kreijack (guest, #43513)
[Link] (1 responses)
I am perfectly fine with udev. This is not the point of discussion. The point of discussion is *IF* a specification should leverage or not on udev when we are talking about /dev
FHS should define what users and/or developers should expect from the filesystem. If it is not possible, the specification should either:
Both approaches are acceptables.
Therefore, the most appropriate course of action would be to leave /dev device management out of scope for this specification, rather than deferring to an implementation like udev.
Posted Aug 18, 2025 17:58 UTC (Mon)
by zuki (subscriber, #41808)
[Link]
The text in question just says that /dev is managed in cooperation by kernel and systemd-udevd, without saying anything about how this is done and how udev should behave. So the whole discussion seems a bit pointless. We certainly don't want to describe the details of udev in the page about file hierachy.
Anyway, https://github.com/uapi-group/specifications/pull/157 is now up with some rewordings based on the discussion and suggestions here.
Posted Aug 16, 2025 15:21 UTC (Sat)
by mgb (guest, #3226)
[Link] (1 responses)
So the "standard" changes every time udev changes and *the* one true standard way that /dev is populated is in fact determined by a thousand lines of rules in half a hundred rules files in /etc and /usr/lib ?
Do I need to switch from stable to unstable so that I can update my udev package roughly 40 times in the last 12 months to maintain compliance with this standard?
Posted Aug 16, 2025 18:35 UTC (Sat)
by bluca (subscriber, #118303)
[Link]
Posted Aug 17, 2025 0:46 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link]
> To query $libdir for the primary architecture of the system, invoke:
Currently, no alternative is provided, and systems that lack systemd altogether cannot support this interface.
Posted Aug 16, 2025 9:56 UTC (Sat)
by bluca (subscriber, #118303)
[Link] (30 responses)
It shouldn't be for any reasonable reader, and unreasonable ones will never be happy anyway.
Mentioning real-world tools like systemd-path as examples of things that can be used, rather than as normative things to follow, is useful and informative, as it suggests an immediate and practical way to interact with the specification.
This spec is very much intended to be user-facing as well, so that if one wonders what is what on their system, it can be used to find out.
Posted Aug 17, 2025 0:44 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (29 responses)
Agreed. Unfortunately, that is not what the standard says. For example:
> To query $libdir for the primary architecture of the system, invoke:
No alternative mechanism is provided. If you can't invoke systemd-path (because it is not installed), then per the standard, you just can't find that directory at all.
Posted Aug 17, 2025 10:11 UTC (Sun)
by bluca (subscriber, #118303)
[Link] (28 responses)
Posted Aug 17, 2025 14:36 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (27 responses)
If I read THE STANDARD, and my system does not provide systemd and its assorted bits and pieces, then I'm up a gum tree. Isn't the point of standards to avoid such gum tree messes? Yes yes real world cough cough it doesn't always work ... but that is a pretty blatant failure of the standards process!
Cheers,
Posted Aug 17, 2025 14:55 UTC (Sun)
by bluca (subscriber, #118303)
[Link] (10 responses)
No, it mentions whatever we find useful to mention and is in scope. And for normal users this is useful information.
If it offends the feelings of a couple of antis, well, they'd be offended anyway, so why bother and make things worse for nearly everyone in a futile attempt to satisfy a handful of loudmouths who will never be satisfied anyway? Makes zero logical sense
Posted Aug 17, 2025 18:18 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (9 responses)
Posted Aug 17, 2025 20:25 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (1 responses)
As I said before, we screamed blue murder about the amount of Office XML stuff that was defined as "what Office 95 does". Why are we now doing exactly the same thing and defining something as "what systemd does".
And again as I said, do we want to give any Tom Dick or Harry the power to change the defined standard - quite possibly without realising that's what they're doing - just by submitting a bugfix or enhancement to the definition?
It's shades of the C specification saying "we defer to the platform standard", when the Posix platform standard says "we defer to the official C specification". The end result is a definition that cannot be trusted to (a) be easily understood, and (b) to be trusted to remain (mostly) immutable.
Cheers,
Posted Aug 17, 2025 21:34 UTC (Sun)
by pizza (subscriber, #46)
[Link]
Putting aside the minor detail that "the amount" referenced above was actually just _once_ [1], there is a _major_ difference between saying "do what <proprietary undocumented thing> does" and "do what <a heavily-documented component of a Free Software tool that ~98.76% of the intended audience has been using for over a decade> does"
[1] 2.15.3.26 footnoteLayoutLikeWW8
Posted Aug 17, 2025 22:15 UTC (Sun)
by bluca (subscriber, #118303)
[Link] (6 responses)
No? The spec is about directories. Tools are not part of it, they are useful ancillary information. The spec is called "Linux Filesystem Hierarchy" not "tools to print directories"
Posted Aug 18, 2025 3:39 UTC (Mon)
by NYKevin (subscriber, #129325)
[Link] (5 responses)
Posted Aug 18, 2025 8:02 UTC (Mon)
by gdiscry (subscriber, #91125)
[Link]
The spec says that The architecture identifier to use is defined on Multiarch Architecture Specifiers (Tuples) list. The issue is that some distributions do not use that path: Legacy locations of Therefore, You could also use the first existing directory:
Posted Aug 18, 2025 8:49 UTC (Mon)
by bluca (subscriber, #118303)
[Link] (3 responses)
No, it doesn't say it's the only way. It provides that as a way to do that, which works in 99.999% of the cases.
Posted Aug 18, 2025 17:30 UTC (Mon)
by NYKevin (subscriber, #129325)
[Link] (2 responses)
Can we please drop the silly word pedantry? If the spec describes one and only one way to do something, and gives not the slightest hint that that way will not work in all circumstances, then supporting that method is a requirement of the spec. I'm baffled that you are continuing to argue this point.
Posted Aug 18, 2025 17:43 UTC (Mon)
by bluca (subscriber, #118303)
[Link] (1 responses)
Posted Aug 18, 2025 17:46 UTC (Mon)
by daroc (editor, #160859)
[Link]
Posted Aug 17, 2025 14:56 UTC (Sun)
by pizza (subscriber, #46)
[Link] (15 responses)
Uh, the entire point of a specification is to define minimum requirements, and by definition, if you don't meet those, you're SoL.
Posted Aug 17, 2025 20:35 UTC (Sun)
by NYKevin (subscriber, #129325)
[Link] (14 responses)
(I say this as someone who likes and uses systemd. My position is not that systemd should be removed from the standard, merely that systemd should not be part of the minimum requirements for a standard that wishes to be universal.)
Posted Aug 17, 2025 21:16 UTC (Sun)
by pizza (subscriber, #46)
[Link] (4 responses)
"Universality" only extends out to the scope of what you're trying to achieve.
A truly "universal standard" would necessarily need to include the likes of Windows, MacOS/iOS, zOS, and so forth... good luck finding common ground there. Just like it is reasonable to reduce the scope of said "universality" to exclude non-UNIXes, it's reasonable to exclude non-Linuxes. But even sticking to "Linux", it's reasonable to exclude Android and purpose-built embedded systems... and oh look, we're already quibbling over where the outer bounds are drawn.
In this specific instance, excluding systemd-udev by name makes little sense given that it is the canonical implementation of /dev management under Linux, and independent re-implentations [1] have to behave in the same manner or fail the basic fitness-for-purpose test.
[1] all one of them (ie busybox) -- There's also eudev, but it was forked from pre-residing-in-systemd's-git-repo udev for entirely political [2] reasons.
Posted Aug 17, 2025 22:26 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (3 responses)
Well, I run a mainstream (at least, last I knew it was used by kernel devs like Greg KH) distro, and I had to change the init system away from the default, and to systemd. (And yes, I do describe gentoo as somewhat systemd-hostile, but the distro devs prefer OpenRC which I believe predates systemd, so it's not a case of "we refuse to have systemd", just "we don't see the benefit in changing". I don't agree, but I'm not a distro dev, and I've taken advantage of the ability to change the default.)
Any spec that is intended to be a reference for ALL "typical" linux distros should not defer to what just SOME of those distros do. A proper superset should not be defined in terms of a subset - it's just the wrong thing to do.
To put it in your terms, if the spec writers intend it to apply to "all linux distros", or even "all linux distros with typical user spaces like Gnome or KDE/Plasma, then they have extended the boundaries of the spec beyond systemd-distros, so they cannot assume the presence of systemd on the system.
Cheers,
Posted Aug 17, 2025 22:33 UTC (Sun)
by bluca (subscriber, #118303)
[Link] (2 responses)
quote the parts where that is the case
Posted Aug 18, 2025 7:07 UTC (Mon)
by Wol (subscriber, #4433)
[Link] (1 responses)
My distro, by default, does NOT install systemd, therefore you cannot assume its presence on my system (yes it does happen to be there, I over-rode the default, but the choice is either/or, not both/and).
Cheers,
Posted Aug 18, 2025 8:51 UTC (Mon)
by bluca (subscriber, #118303)
[Link]
Posted Aug 17, 2025 22:13 UTC (Sun)
by bluca (subscriber, #118303)
[Link] (8 responses)
Can you quote the parts that where that is the case?
Posted Aug 18, 2025 3:41 UTC (Mon)
by NYKevin (subscriber, #129325)
[Link] (7 responses)
To be clear, this is not "optional" or ancillary information. It is the only way to discover the path to one of the specified directories.
Posted Aug 18, 2025 8:50 UTC (Mon)
by bluca (subscriber, #118303)
[Link] (6 responses)
Posted Aug 18, 2025 9:26 UTC (Mon)
by rschroev (subscriber, #4164)
[Link]
"Instead of constructing the arch-id and $libdir manually, you can query $libdir for the primary architecture of the system by invoking systemd-path system-library-arch on systems that support it". Or something similar.
The way it is written now, very much gives the impression that invoking systemd-path system-library-arch is the one and only way.
Posted Aug 18, 2025 17:27 UTC (Mon)
by NYKevin (subscriber, #129325)
[Link] (4 responses)
Posted Aug 18, 2025 17:41 UTC (Mon)
by bluca (subscriber, #118303)
[Link] (3 responses)
I assure you that out of ~60000 packages building right now in Debian, and however many are in Ubuntu, exactly _zero_ use systemd-path to query the library directory at build time. A significant fraction of those _will_ need to explicitly know what the exact path is, and they won't use that tool for it.
It's just a utility provided for convenience, it is not part of any specification.
Posted Aug 21, 2025 7:06 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link] (1 responses)
Good, then you should have no objection to rewording that sentence in a way that clarifies it is non-normative.
I'm glad we're in agreement on that much, at least.
Posted Aug 21, 2025 10:15 UTC (Thu)
by bluca (subscriber, #118303)
[Link]
Posted Aug 21, 2025 10:14 UTC (Thu)
by bluca (subscriber, #118303)
[Link]
This is not a hyperbole btw, I really mean it.
Number of packages calling systemd-path in debian/rules to find per-arch libdir: zero out of 30000
https://codesearch.debian.net/search?q=path%3Adebian%2Fru...
Number of packages using at least one other mean (a specific makefile include file that defines a specific makefile var, none of which are related to systemd): ~5000 out of ~30000
https://codesearch.debian.net/search?q=path%3Adebian%2Fru...
Posted Aug 16, 2025 13:09 UTC (Sat)
by rhbvkleef (subscriber, #154505)
[Link]
> Rephrase all mentions of systemd as non-normative descriptions of how that particular implementation does it, rather than normative specifications of how it must be done, similar to the Boot Loader spec[2]. I see this as a dispreferred option because it would leave a few subdirectories with no portable means of discovery, most significantly /usr/lib/arch-id and its cousins.
Posted Aug 16, 2025 12:04 UTC (Sat)
by pizza (subscriber, #46)
[Link]
The *only* defined job for init (ie pid 0) is to reap children processes. (And to not die itself...)
Meanwhile, in the real world, folks run non-spherical-cow inits [1] that do a heck of a lot more than that, because it turns out that operating system creators and application writers need more functionality to create a usable system with components whose presence can be relied upon. The FHS (and its successors) are attempts to do just that.
[1] eg sysvinit, which does neither one thing, nor well.
Posted Aug 15, 2025 22:31 UTC (Fri)
by josh (subscriber, #17465)
[Link] (19 responses)
Posted Aug 16, 2025 1:02 UTC (Sat)
by gdt (subscriber, #6284)
[Link] (18 responses)
More generally, writers are moving away from using vendor capitalisation to whatever format assists the reader best, treating the word as a proper noun and capitalising to assist pronunciation. That is, authors are writing for readers, not for corporations. For example, Ikea has a corporate-preferred capitalisation of "IKEA" but is not said as "I. K. E. A.": the corporate style misinforms the reader. Some publications have a house style requiring "System-D" (ie, written as pronounced unless the product is very famous), so this author's choice is within the range of normal.
Posted Aug 16, 2025 2:38 UTC (Sat)
by Cyberax (✭ supporter ✭, #52523)
[Link] (10 responses)
Posted Aug 16, 2025 7:02 UTC (Sat)
by wtarreau (subscriber, #51152)
[Link] (6 responses)
Care to explain to the ignorant I am, a "useful indicator" of what ? Does the latter convey a particular meaning for some groups ? I've seen it spelled both ways and genuinely thought that the former is the process name while the latter is the project's name, and have seen the latter being used by those trying to carefully represent it. So if this form is associated by some to a certain meaning, it would be nice to know. But I doubt it would be associated with anything negative by the project maintainers themselves, considering that it appears a few times in the repo's history and even still in the code itself: https://github.com/systemd/systemd/blob/main/src/resolve/.... So isn't this just some noise, or maybe those triggering on a particular spelling are themselves an indicator of anything like searching for trouble where there isn't ?
Posted Aug 16, 2025 9:50 UTC (Sat)
by bluca (subscriber, #118303)
[Link] (5 responses)
There's even a brand page defining it if you are in doubt: https://brand.systemd.io
Posted Aug 16, 2025 10:45 UTC (Sat)
by nadir (subscriber, #154506)
[Link] (4 responses)
Posted Aug 16, 2025 12:00 UTC (Sat)
by wtarreau (subscriber, #51152)
[Link] (3 responses)
Posted Aug 16, 2025 13:24 UTC (Sat)
by Wol (subscriber, #4433)
[Link] (1 responses)
So in standard unix nomenclature, systemd is the daemon that manages the system. And like all such daemons, it's lower case.
Cheers,
Posted Aug 16, 2025 21:10 UTC (Sat)
by SLi (subscriber, #53131)
[Link]
While calling it SystemD is obviously just clueless and wrong because that's not its name in any meaning, I don't think this fundamentally collapses the way you propose. For example, we have the thing that is named the Apache HTTP Server, often Apache in brief, which has a binary named httpd. Even if it had decided to call its binary "apached", that wouldn't mean that the software's or project's name is "apached". I think it's useful to think there's a layer of indirection between project names and filenames. Apache is not even the only httpd...
Posted Aug 17, 2025 9:14 UTC (Sun)
by jem (subscriber, #24231)
[Link]
Posted Aug 16, 2025 16:40 UTC (Sat)
by ATLief (subscriber, #166135)
[Link] (2 responses)
Posted Aug 16, 2025 17:56 UTC (Sat)
by raven667 (subscriber, #5198)
[Link]
To answer your (presumably bad-faith) question earnestly, if there was a project that chose capitalization like 'kEWlfS' to refer to their work, rather than the more conventional 'KewlFS' that would be fine, maybe this project is a FUSE driver for Exchange Web Services (EWS) so they want to emphasize this in their branding, it would be disrespectful to insist that your personal interpretation and preferences are more correct and should override the members of the project who are doing the work, in a matter of style such as this.
Posted Aug 18, 2025 9:16 UTC (Mon)
by tao (subscriber, #17563)
[Link]
Posted Aug 16, 2025 16:00 UTC (Sat)
by kleptog (subscriber, #1183)
[Link] (6 responses)
We write iPhone, not Iphone. It is written the way people recognise it, you don't need to know how to pronounce it to know what it means. Written and spoken languages are not the same (though obviously closely related).
Anyone writing System-D is basically doing the same as people writing Micro$oft. A deliberate misspelling for effect.
Posted Aug 17, 2025 11:39 UTC (Sun)
by wtarreau (subscriber, #51152)
[Link] (5 responses)
Why "deliberate" ? I used to think it was spelled like this. There are commits in the systemd repo spelling it this way, and there is even still one instance of it in the code. Why always search for nastiness when it can simply be explained by ignorance ? Why would people know how developers *wanted* to spell it when the *only* contact they have with the name is oral, when spoken about by others ? How many times a day do you see "systemd" written on your screen to represent the project (not the process nor directories), or even do you write it on your keyboard ?
Systematically jumping on people when they ignore something that you happen to know is not doing any service to anyone, let alone to the project you want to defend or represent, it makes it look like being surrounded by people waiting in the corner, ready to attack you if you fail to pronounce it well. This makes no sense. It reminds me of the good old days of LaTeX, where some morons would laugh when someone pronounced "latex", with the most extremes even insisting "don't you see, it's not an X, it's a Chi, but OK you can use the X letter". Better just teach others rather than criticize.
In the case of "Micro$oft" you cited above, it's different, it's using a character that is not a letter but the symbol for a currency to infer a relation between a company name and money. You should instead compare this to spelling "MICROSOFT", or "MicroSoft" instead of "Microsoft", which is easy to be mistaken about as well, particularly since the original logo was uppercase BTW!
Posted Aug 17, 2025 12:08 UTC (Sun)
by bluca (subscriber, #118303)
[Link]
2 in total, both from 2010
> and there is even still one instance of it in the code.
a mistake by a contractor in a code comment that slipped through the cracks, already fixed
> Why always search for nastiness when it can simply be explained by ignorance ?
This time it's just an honest mistake, the issue is that 99% of the times it's not, and instead it's a case of a particular venn diagram being a circle
Posted Aug 17, 2025 18:15 UTC (Sun)
by jem (subscriber, #24231)
[Link] (3 responses)
This text has been on the systemd website since the beginning. Where else would the naysayers have learned to call it SystemD?
Posted Aug 18, 2025 5:21 UTC (Mon)
by wtarreau (subscriber, #51152)
[Link] (2 responses)
Yesterday I made a test and told a friend about this news. He was surprised and told me "Ah? I thought it was written like SystemV". That might actually be one possible source of confusion and a more likely one than deliberately wanting to misrepresent a brand. I find it really bizarre to put criticizers and newcomers in a same box just for their accidental misuse of a name, at the pretext that some untold statistics shows that 99% of the time it's criticizers who spell it like this. Maybe instead they become criticizers after having been insulted for writing it this way. I really find this approach offensive. But anyway, let's end this topic.
Posted Aug 29, 2025 1:10 UTC (Fri)
by cypherpunks2 (guest, #152408)
[Link] (1 responses)
That was my thought as well. I'm quite surprised that people are reading so much into the spelling, to the point of even inferring political opinions.
I don't see any secret cabal of systemd-haters covertly communicating with each other using misspellings to trick those who don't dislike systemd. People who dislike systemd are generally not shy about saying they dislike it. We shouldn't be looking under rocks for people who have different opinions about init systems.
Posted Aug 29, 2025 8:59 UTC (Fri)
by anselm (subscriber, #2796)
[Link]
It's interesting that people don't seem to wonder why the number in the name should suddenly jump from 5 to 500 …
Also, the legacy init system which systemd replaced wasn't actually called “SystemV”. It didn't have a proper name to begin with (after all it was just the init system, not much to see here, move on) and, in the Linux community, people used to refer to it as “System V init” because it was patterned on what was delivered with Unix System V (in the 1980s), as opposed to, e.g., what BSD was doing. So it isn't entirely obvious why the successor to “System V init” would be called “SystemD” – if Lennart Poettering had intended to continue that pattern he would clearly have gone with “System D init” and not just “SystemD”, but then it'd still be strange to move from “V” to “D” and not “VI” or “W” (remember that the X Window System was the successor of another window system called W, hence the “X”).
Anyway, more than a decade and many blog posts, man pages, distribution releases, conference presentations, etc. later it should be common knowledge that the “d” at the end of “systemd” is, in fact, lowercase. It is reasonable to assume that people who still insist on writing “SystemD” have either been living under a rock or else have an axe to grind.
Posted Aug 16, 2025 20:10 UTC (Sat)
by ianmcc (subscriber, #88379)
[Link] (2 responses)
Posted Aug 16, 2025 20:38 UTC (Sat)
by zdzichu (subscriber, #17118)
[Link] (1 responses)
Posted Aug 16, 2025 20:56 UTC (Sat)
by corbet (editor, #1)
[Link]
Thank you.
Posted Aug 17, 2025 21:23 UTC (Sun)
by arsen (subscriber, #161285)
[Link]
putting aside for a moment the standard itself, I see no way in which a filesystem hierarchy standard can be "tied to" a system layer implementation (term used as coined by Benno Rice, I believe), especially not merely an init system inside of such. it isn't even implemented by the system layer, it's implemented by the OS or distribution.
a FHS like this one can only be judged on 1) whether it allows various administrative practices you or others mind need, and 2) vibes.
this FHS is very similar to the old LSB FHS, I see no problem on either front with it. ISTM that the major difference is some simplfiication (usr-merge, no sbin), but many distros and admins (myself included) have already chosen to do that anyway, so it's not very strange.
ISTM that what we see here and elsewhere is a pre-judgement kinda thing, where the UAPI group is guilty of being a systemd-specific space, because the specs they work on are based on prior insight gained by implementations in systemd, and because there's developer overlap. but this seems at best needlessly unfavorable—skimming the standards, they're clear that prior art is systemd, yet do not depend on it (consider, for instance, BLS, which has been implemented in GRUB, or UKIs, which can and are used without systemd).
Posted Aug 16, 2025 2:59 UTC (Sat)
by tamiko (subscriber, #115350)
[Link]
[1] https://packages.gentoo.org/packages/sys-apps/baselayout
Posted Aug 16, 2025 5:56 UTC (Sat)
by nekomachi-touge (subscriber, #177753)
[Link] (5 responses)
/bin : executables always on $PATH
And I want the following dirs migrated to:
Posted Aug 16, 2025 7:59 UTC (Sat)
by zuki (subscriber, #41808)
[Link]
Posted Aug 16, 2025 17:40 UTC (Sat)
by grawity (subscriber, #80596)
[Link] (1 responses)
It could in theory be under /tmp, but placing a restricted directory under a wide-open one is a bit backwards and probably unwise. The opposite would make more sense, but the "/tmp" path is now a bit too entrenched.
For similar reasons /boot isn't under /var – you want to be able to mount it even if /var isn't mountable for some reason. They have opposite goals too, so they cannot be merged into one; /var would use some fancy high-performance file system while /boot needs a file system as simple as possible for the bootloader's minimal drivers.
/media was already migrated to /run/media. (It differs from /mnt in that the mount points under /media are volatile and managed by something like udisks, primarily for hotplugged devices, while /mnt is the system admin's manually-managed territory.)
Posted Aug 16, 2025 18:12 UTC (Sat)
by raven667 (subscriber, #5198)
[Link]
Posted Aug 18, 2025 14:10 UTC (Mon)
by farnz (subscriber, #17727)
[Link]
That way, in a failure situation, you can work on the filesystems individually (either from the initramfs, or by moving a drive to another system), until you can mount all of them once again. Additionally, because /home and /usr are separate mount points, you know that you can mount a live USB stick's /usr over the system's /usr without breaking things or affecting user data, either for repair work, or to let you do urgent other work before you come back to repairs.
You end up wanting a set of paths that can be entirely recovered from distro packages (/boot, /usr, /bin), a set for kernel data (/sys, /proc), a set for configuration (/etc - which in an ideal world is just local overrides, and can be empty), a set for local system data that should not be blindly deleted (/home, /var, /opt), and a set for non-persistent data (/run, /tmp).
Posted Aug 18, 2025 18:57 UTC (Mon)
by Cyberax (✭ supporter ✭, #52523)
[Link]
This pollutes the '/' even further. But importantly, mounting the '/usr' is atomic, while mounting multiple entries into '/bin', '/lib', '/lib-arm64', '/lib-arm32', '/lib-x86' is not.
> /boot : /var or /etc
'/boot' (or a part of it) needs to be on its own partition (because of UEFI) and with its own lifecycle.
Posted Aug 16, 2025 8:36 UTC (Sat)
by aleXXX (subscriber, #2742)
[Link] (1 responses)
Posted Aug 16, 2025 9:51 UTC (Sat)
by bluca (subscriber, #118303)
[Link]
Posted Aug 16, 2025 12:04 UTC (Sat)
by aviallon (subscriber, #157205)
[Link] (2 responses)
Posted Aug 16, 2025 21:30 UTC (Sat)
by SLi (subscriber, #53131)
[Link]
I think it can, and arguably should. In order to accomplish this, you need a layer of indirection: Standardize *roles* and *invariants*, not specific implementation details. Think "what exactly needs to be true at runtime", not "where exactly vendor bits live on disk".
Define a *small set of normative invariants* about roles (code, policy, runtime, state) and their lifecycle (read-only vs writable, ephemeral vs persistent), then provide *profiles* that map those roles to paths. Classic distros, immutable images, containers, and Nix/Guix can all conform by choosing an appropriate profile (or declaring a custom one) while preserving interoperability.
To be standardized (MUST or SHOULD):
1. Roles, not paths.
Vendor content: executable code, static data shipped by the OS/vendor. MUST be treatable as read-only at runtime.
Admin policy: local configuration overriding vendor defaults. MUST be writable and take precedence over vendor content.
Runtime state: sockets, pid files, transient caches. MUST NOT survive a reboot.
Persistent state: databases, logs, package metadata, app state. MUST survive a reboot and be writable.
2. Precedence and merge.
Admin policy MUST override vendor defaults via a deterministic precedence order (e.g., /etc ≻ vendor config).
3. Discoverability.
The locations implementing each role MUST be discoverable at runtime via well-defined mechanisms (e.g., environment variables, a machine-readable file, or stat(2)-detectable mounts), so software doesn't have to hard-code paths.
4. Stability guarantees.
Persistent state paths SHOULD remain stable across OS upgrades; runtime paths MAY be tmpfs and cleared at boot.
5. Graceful fallback.
If a profile doesn't provide an alternative location, well defined sane defaults apply.
---
With this, a classic FHS style system would map vendor=/usr (ro-capable), admin_policy=/etc, runtime=/run, persistent_state=/var.
NixOS could declare something like vendor=/nix/store (ro) with profile views under /run/current-systems/sw exposing POSIX paths, admin_policy=/etc (generated from declarative config but still the top of precedence), runtime=/run, persistent_state=/var. NOTE: the spec would not require vendor content to be under /usr, but only discoverable.
Discovery mechanisms could be something like a simple configuration file pointed to by an environment variable or in a standard location like /run/fs-roles.d/active.json, and/or just env vars.
Posted Aug 16, 2025 23:14 UTC (Sat)
by bluca (subscriber, #118303)
[Link]
Posted Aug 22, 2025 13:14 UTC (Fri)
by mwsealey (subscriber, #71282)
[Link] (1 responses)
Posted Aug 29, 2025 19:45 UTC (Fri)
by Alterego (guest, #55989)
[Link]
We are still struggling with 1970's sequels (usr/bin merge...) , it is time to be bold and embrace something like Gobo :)
Posted Sep 25, 2025 2:53 UTC (Thu)
by jkridner (subscriber, #179011)
[Link]
This has gotten harder and harder the more we move away from FHS, but I still use it as a guide for what is "most likely similar" to what is running.
Containers
Containers
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
* The man page for systemd-path says that it parses environment variables rather than talking to systemd. So it should be possible to replace all mentions of this binary with references to the corresponding environment variables. It might still be a good idea to say that systemd-path exists and can be used when systemd is installed, for the convenience of systemd users. But that will depend on whether non-systemd distros routinely set all of the relevant environment variables, with the same names and values. It may be the case that some things just can't be done portably.
* Remove all mentions of systemd entirely. This is strictly worse than rephrasing, because now *nobody* can find /usr/lib/arch-id, not even the systemd users.
[2]: https://uapi-group.org/specifications/specs/boot_loader_specification/
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
>
> The root directory for device nodes. Usually, this directory is mounted as a devtmpfs instance, but might be of a different type in sandboxed/containerized setups. This directory is managed jointly by the kernel and systemd-udevd(8), and should not be written to by other components. A number of special purpose virtual file systems might be mounted below this directory.
>
> The root directory for device nodes. Usually, this directory is mounted as a devtmpfs instance, but might be of a different type in sandboxed/containerized setups. This directory is managed jointly by the kernel and a userspace component such as systemd-udevd(8), and should not be written to by other components. A number of special purpose virtual file systems might be mounted below this directory.
2. The host environment or "operating system," broadly construed, is responsible for managing those device files.
3. If you're an application developer, this is not your problem to deal with. Don't try to do anything clever, just open the device file you want to use.
4. ...unless you're willing to take a systemd dependency, then of course you can assume systemd-specific behaviors.
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
> [...]
> If you don't know what systemd-udev is, you probably shouldn't be putting together something that requires either setting things up in /dev or even referencing things in /dev.
- /dev/ is populated by the devices seen by the kernel; depending by the environment it can be a static directory or a dynamic one populated by *udev.
- /dev/disks is populated by the devices seen by the kernel; it is managed by udev; in environment where udev is not used it doesn't exist"
hope not tied to SystemD
[2] Ie where Linux is not considered a hidden implementation detail
[3] Non-linux systems diverge wildly once you venture beyond what POSIX requires. Where hardware interaction is concerned, ie where interaction with /dev comes into play, every major OS family (even in the UNIXish world) does things its own way.
hope not tied to SystemD
hope not tied to SystemD
[2] Debian was the final holdout, and even then its non-systemd paths have been slowly bitrotting because the folks complaining are rarely the ones *doing*.
[3] As of today, the only commercial non-systemd options are supported only via very pricey "extended support" offerings. Nobody is going to be setting up _new_ systems with (or writing/porting new software to) RHEL6 without a pretty substantial budget or the understanding they are completely on their own.
[4] Most of the industry had completely switched to fuel injection by the late 80s, though a few stragglers held on into the early 1990s. The final carburettor-equipped vehicle sold in the US was the 1994 Isuzu "Faster" pickup truck.
hope not tied to SystemD
hope not tied to SystemD
> Open source project maintainers in general.
hope not tied to SystemD
1) explicitly state that it is out of scope,
or 2) point ti another specification
It has to be point out that udev is an *implementation*, not a *specification*, and leveraging to udev is an mistake because understanding what udev does is possible only reading the source/man page/configuration files which is an activity long and errors prone.
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
>
> systemd-path system-library-arch
hope not tied to SystemD
hope not tied to SystemD
>
> systemd-path system-library-arch
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
arch-id
in $libdir
is an architecture tuple:
$libdir
are /usr/lib/
, /usr/lib64/
.systemd-path
is currently one way to query the path of $libdir
at runtime across distributions that use systemd.
/usr/lib/arch-id/
/usr/lib64/
(if your architecture is x86_64)/usr/lib/
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
[2] "We don't want to have any source code from systemd present even if the udev binary produced has zero runtime dependencies on systemd"
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to systemd
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
Wol
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
hope not tied to SystemD
That was my thought as well.
hope not tied to SystemD
hope not tied to SystemD
Dog whistle or not, we really do not all need to keep barking at it; can we stop here?
hope not tied to SystemD
hope not tied to SystemD
Gentoo
[2] https://wiki.gentoo.org/wiki/Merge-usr
Simpler structure practical?
As a developer I had a fair share of path debugging, which is counterproductive if not a toil.
I wonder whether it is practically possible to simplify directory structure like:
/dev, /proc : hardware access and OS parameters
/mnt : persistent storage exposed by a file system
/var : anything variable and persistent, may be link to subdirectories of /mnt
/tmp : /var but volatile
/etc : anything invariable (most of the time)
/opt : stuffs not flexible enough to use the dirs above
/boot : /var or /etc
/media : /mnt
/run: /var or /tmp
/usr: just use / directly!
Simpler structure practical?
Simpler structure practical?
Simpler structure practical?
Adding to grawity's comment (which covers most of it), I'd also note that you want the root to be simple enough that you can have a read-only ramfs root on top of which you mount the "real" filesystems.
Simpler structure practical?
Simpler structure practical?
What about /opt ?
Does this mean using /opt is outdated ?
I really like using /opt for software packages which are not supplied by the OS.
What about /opt ?
And then there is NixOS
And then there is NixOS
And then there is NixOS
Wait for it..
Waiting for Gobo...
The need still exists