/usr-merge by default for new installations, with backwards compat
Dimitri John Ledkov
xnox at ubuntu.com
Mon Jul 23 12:41:03 UTC 2018
Over the past year, there have been multiple times when I had to fix
scripts / exec calls to account for split-usr and usr-merged systems
by patching constants or adding configuration checks to detect if
certain binaries need to be called from /usr or /.
At the same time, I find certain properties of usr-merged systems
attractive. For example, the fact that all the packaged managed stuff
is scoped in /usr is very convenient, for deduplication, sharing,
snapshotting, including/excluding said dir in configs for diffs &
backups. Ability to call any binary using /bin and /sbin prefixes is
very cute too. Our initrd implementation has been fixed for a while to
mount both / and /usr before executing init.
Going forward, I believe, it is useful to enable usr-merge by default
on new installs, without forcing migration of existing installations
and continue to support split-usr systems. It will enable our users to
use their systems in more innovative ways, and reduce the amount of
any accidental /-vs-/usr mistakes and incompatibilities in the
archive, and among third-party software.
In the Ubuntu Archive in cosmic all / vs /usr conflicts are resolved,
initrd by default mounts /usr (if it is separate), and
debootstrap/dpkg have support to create usr-merged systems and ensure
conflicting binaries are prevented from installation. Therefore next
week, I would like to start the upload of debootstrap to switch cosmic
to have merged-usr by default for new installations only. This will
then include desktop / server / cloud / container installations and
images as well.
Existing installations will not be forced to merge /usr, but can opt
into doing so by installing usrmerge package.
/usr-merged installations with /usr as a seperate mountpoints will
continue to be supported, as long as they boot with initrd which does
mount both / and /usr - this is already the case with default Ubuntu
for a few releases now.
Overall the scope of changes is very small, simply /bin becomes a
symlink to /usr/bin (and a few other paths, in a similar fashion) with
everything still available and working via any path prefix.
More information about the ubuntu-devel