Morning, gang.
Even as a mod, I wasn't too sure where to put this, but I settled on "Users" because it's a 'current' topic, and whether we like it or not, it's going to impact future generations of Puppies, since they're based around existing mainstream releases. So it merits being in a well-used, visible section of the Forum.
--------------------------------------------
I wasn't even aware of this until I began to participate in the ongoing thread in the Fossapup64 section of the 'Mainline Puppy Distros' forum....."New Fossapup64".
During the course of this thread, mention was made of the way in which certain parts of the Linux filesystem are now being re-implemented. So; I asked:-
@dimkr :-
This business of /bin, /sbin, /lib & /lib64 now being merely sym-links to their counterparts in /usr; was this inspired by the way Void Linux does things, or is this a "sea-change" across the whole Linux landscape?
I haven't run a mainstream distro for several years, so I really have no idea what's been happening across the wider community. If this IS a community-wide change, I have to assume it was initiated by the RedHat/Fedora team, since they appear to be at the leading edge of most of the sweeping changes that seem to have been occurring over the last decade or so.....
Mike.
To which came back the reply:-
I got curious about this, and did a wee bit of research. It was indeed implemented by that bastion of the oft-perceived-as-idiotic at RedHat, Lennart Poettering.....although in this particular case, I CAN see the sense behind the logic.
--------------------------------
Turns out this was originally mooted around 12 years ago, so it's been in active discussion & development for all that time. This article over at freedesktop.org - the guys responsible for a lot of inter-distro/platform interoperability - states the reasoning very well:-
There's an interesting side-link in this article......explaining the original, historical reason for why this "split" between / and /usr occurred in the first place. It all dates back to when Dennis Ritchie & Ken Thompson were developing Unix back at the very tail end of the 60s.....and what happened when they upgraded from their original development machine - a PDP-7 - to a newer PDP-11.
The following is a transcript of a discussion between developers Rob Landley and David Collier in the course of developing an applet for detecting file-system types:-
"You know how Ken Thompson and Dennis Ritchie created Unix on a PDP-7 in 1969?
Well around 1971 they upgraded to a PDP-11 with a pair of RK05 disk packs (1.5
megabytes each) for storage.When the operating system grew too big to fit on the first RK05 disk pack (their
root filesystem) they let it leak into the second one, which is where all the
user home directories lived (which is why the mount was called /usr). They
replicated all the OS directories under there (/bin, /sbin, /lib, /tmp...) and
wrote files to those new directories because their original disk was out of
space. When they got a third disk, they mounted it on /home and relocated all
the user directories to there so the OS could consume all the space on both
disks and grow to THREE WHOLE MEGABYTES (ooooh!).Of course they made rules about "when the system first boots, it has to come up
enough to be able to mount the second disk on /usr, so don't put things like
the mount command /usr/bin or we'll have a chicken and egg problem bringing
the system up." Fairly straightforward. Also fairly specific to v6 unix of 35
years ago.The /bin vs /usr/bin split (and all the others) is an artifact of this, a
1970's implementation detail that got carried forward for decades by
bureaucrats who never question _why_ they're doing things. It stopped making
any sense before Linux was ever invented, for multiple reasons:1) Early system bringup is the provice of initrd and initramfs, which deals
with the "this file is needed before that file" issues. We've already _got_ a
temporary system that boots the main system.2) shared libraries (introduced by the Berkeley guys) prevent you from
independently upgrading the /lib and /usr/bin parts. They two partitions have
to _match_ or they won't work. This wasn't the case in 1974, back then they
had a certain level of independence because everything was statically linked.3) Cheap retail hard drives passed the 100 megabyte mark around 1990, and
partition resizing software showed up somewhere around there (partition magic
3.0 shipped in 1997).Of course once the split existed, some people made other rules to justify it.
Root was for the OS stuff you got from upstream and /usr was for your site-
local files. Then / was for the stuff you got from AT&T and /usr was for the
stuff that your distro like IBM AIX or Dec Ultrix or SGI Irix added to it, and
/usr/local was for your specific installation's files. Then somebody decided
/usr/local wasn't a good place to install new packages, so let's add /opt!
I'm still waiting for /opt/local to show up...Of course given 30 years to fester, this split made some interesting distro-
specific rules show up and go away again, such as "/tmp is cleared between
reboots but /usr/tmp isn't". (Of course on Ubuntu /usr/tmp doesn't exist and
on Gentoo /usr/tmp is a symlink to /var/tmp which now has the "not cleared
between reboots" rule. Yes all this predated tmpfs. It has to do with read-
only root filesystems, /usr is always going to be read only in that case and
/var is where your writable space is, / is _mostly_ read only except for bits
of /etc which they tried to move to /var but really symlinking /etc to
/var/etc happens more often than not...)Standards bureaucracies like the Linux Foundation (which consumed the Free
Standards Group in its ever-growing accretion disk years ago) happily
document and add to this sort of complexity without ever trying to understand
why it was there in the first place. 'Ken and Dennis leaked their OS into the
equivalent of home because an RK05 disk pack on the PDP-11 was too small" goes
whoosh over their heads.I'm pretty sure the busybox install just puts binaries wherever other versions
of those binaries have historically gone. There's no actual REASON for any of
it anymore. Personally, I symlink /bin /sbin and /lib to their /usr
equivalents on systems I put together. Embedded guys try to understand and
simplify..."
It cracks me up, the bit about the bureaucrats just continuing to blindly implement - as a henceforth, rigorously-followed "standard" - what amounted to a colossal, temporary "workaround" (which would no doubt have been corrected later on) wihout ever trying to understand why this happened in the first place! As Rob Landley says here, " 'Ken and Dennis leaked their OS into the
equivalent of home because an RK05 disk pack on the PDP-11 was too small' goes
whoosh over their heads. "
And so the current re-implementation, it appears, is just attempting to correct a decades-old balls-up, and to restore interoperability between Linux and the current crop of Unix-based commercial systems out there. Which is in fact a laudable goal, and to be commended. It does, however, mean that much current Puppy-specific software will need to be re-written - or at the very least, "tweaked" - if it's going to continue to work with successive newer Pups over time....
Just thought y'all might like to understand why all this is happening.
Mike.