From c5bd8af65e50a51735eb112fed9cbe6337f14e06 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Fri, 4 Sep 2015 22:17:32 +0200 Subject: system: add options for /bin /sbin and /lib to be symlinks into /usr systemd is increasingly expecting things to live in /usr/bin, /usr/sbin or /usr/lib nad not in /bin, /sbin or /lib. It has inherited those expectations from a Fedora change: https://fedoraproject.org/wiki/Features/UsrMove Note however, that systemd does support /usr being on a separate filesystem; it just expects an initramfs to mount it before the final switchroot over to the actual rootfs. But the traditional use-case for Buildroot is not to boot with an initramfs; although that is totally feasible, that's probably not what is commonly done in the vast majority of cases. However, a lot of packages still install stuff directly into /bin, /sbin or /lib, which systemd may need early-on in the boot process, even before it may have a chance to mount /usr. Even though we can tell systemd, at configure-time, where it should expect programs to be at runtime, it does not make sense to go head-first against an upstream wa^Hill. Add an option so that /bin, /sbin and /lib be symlinks to /usr/bin and /usr/sbin. That option is forcibly enabled when the init system is systemd. Note: we need not handle /lib32 or /lib64, as they already are symlinks to /lib, which means they will automatically be redirected to /usr/lib, as /usr/lib32 and /usr/lib64 already are. Furthermore, this means we're no longer supporting a split-usr setup, so the corresponding configure options have been removed as well for systemd and, when using a merged /usr, for eudev as well. In Buildroot, we decided (with this patch) not to support a split-usr when systemd is used as an init system. This is a design decision, not a systemd issue. Thus the select is with BR2_INIT_SYSTEMD rather than with BR2_PACKAGE_SYSTEMD. Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Arnout Vandecappelle Cc: Mike Williams Cc: Vicente Olivert Riera Cc: Baruch Siach Tested-by: Mike Williams Signed-off-by: Thomas Petazzoni --- system/Config.in | 17 +++++++++++++++++ system/skeleton/bin/.empty | 0 system/skeleton/lib/.empty | 0 system/skeleton/sbin/.empty | 0 4 files changed, 17 insertions(+) delete mode 100644 system/skeleton/bin/.empty delete mode 100644 system/skeleton/lib/.empty delete mode 100644 system/skeleton/sbin/.empty (limited to 'system') diff --git a/system/Config.in b/system/Config.in index 6afe8962d..4d070103f 100644 --- a/system/Config.in +++ b/system/Config.in @@ -78,6 +78,10 @@ config BR2_INIT_SYSV select BR2_PACKAGE_INITSCRIPTS select BR2_PACKAGE_SYSVINIT +# In Buildroot, we decided not to support a split-usr when systemd is +# used as an init system. This is a design decision, not a systemd +# issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than +# with BR2_PACKAGE_SYSTEMD. config BR2_INIT_SYSTEMD bool "systemd" depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS @@ -88,6 +92,7 @@ config BR2_INIT_SYSTEMD depends on BR2_USE_MMU depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_ROOTFS_MERGED_USR select BR2_PACKAGE_SYSTEMD comment "systemd needs (e)glibc toolchain, headers >= 3.10" @@ -178,6 +183,18 @@ endif if BR2_ROOTFS_SKELETON_DEFAULT +config BR2_ROOTFS_MERGED_USR + bool "Use symlinks to /usr for /bin, /sbin and /lib" + help + If you say 'n' here, then /bin, /sbin and /lib and their + counterparts in /usr will be separate directories. This + is the historical UNIX way. In this case, /usr can be a + filesystem on a partition separate from / . + + If you say 'y' here, then /bin, /sbin and /lib will be symlinks + to their counterparts in /usr. In this case, /usr can not be a + separate filesystem. + config BR2_TARGET_ENABLE_ROOT_LOGIN bool "Enable root login with password" default y diff --git a/system/skeleton/bin/.empty b/system/skeleton/bin/.empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/system/skeleton/lib/.empty b/system/skeleton/lib/.empty deleted file mode 100644 index e69de29bb..000000000 diff --git a/system/skeleton/sbin/.empty b/system/skeleton/sbin/.empty deleted file mode 100644 index e69de29bb..000000000 -- cgit v1.2.3