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)