Why are /bin and /sbin now symlinks in Ubuntu 20.04?
tl;dr: In Ubuntu 20.04, folders such as /bin and /sbin are now symlinks to the same folders in /usr. Why was this change made and shouldn't the release notes mention it?
This took a few days, but I tracked down some issues I was having in system setup. As part of a preseed post-install set of commands, I unpack a .tar.gz onto new systems, which puts some files in various folders, including /bin
. I've been doing this since Ubuntu 14.04. With Ubuntu 20.04, my systems weren't bootable after install (various failure to mount errors).
I finally narrowed the issue down to this unpacking step, and realized that I'm replacing the /bin folder and making many things inaccessible. What a lovely surprise. The fix is easy enough; dump files in /usr/bin, instead.
Specifically, the following symlinks are new in 20.04, apparently (below via multiple fresh installs):
$ lsb_release -ds
Ubuntu 20.04 LTS
$ ls -l / | grep -E "usr|bin|lib"
lrwxrwxrwx 1 root root 7 Apr 23 15:02 bin -> usr/bin/
lrwxrwxrwx 1 root root 7 Apr 23 15:02 lib -> usr/lib/
lrwxrwxrwx 1 root root 8 Apr 23 15:02 sbin -> usr/sbin/
drwxr-xr-x 11 root root 4096 Apr 23 15:05 usr/
Compare with 19.10 (edit: this system was upgraded from 18.04 I think; whoops):
$ lsb_release -ds
Ubuntu 19.10
$ ls -l / | grep -E "usr|bin|lib"
drwxr-xr-x 2 root root 4096 Dec 11 07:41 bin
drwxr-xr-x 20 root root 4096 Nov 4 2019 lib
drwxr-xr-x 2 root root 4096 Nov 3 2019 lib64
drwxr-xr-x 2 root root 12288 Apr 6 13:29 sbin
drwxr-xr-x 11 root root 4096 Aug 5 2019 usr
Arch does this, apparently starting years ago, and the overall topic is the Filesystem Hierachy Standard . It's not in the release notes: https://wiki.ubuntu.com/FocalFossa/ReleaseNotes
Solution 1:
I hadn't noticed this change, so I dug into it a little bit. I'm guessing it was not in the release notes because it was really an upstream change in Debian:
- UsrMerge at Debian wiki
This Ubuntu announcement is the only official notification of the change I've seen
Merged-usr is now the default in Disco for new installations only
Some other general info
- https://lwn.net/Articles/670071/ (Preparing for a merged /usr in Debian)
- https://www.linux-magazine.com/Online/Features/Debian-usr-Merge
- https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
- https://lwn.net/Articles/483921/ (Various notes on /usr unification)