diff options
| author | Yann E. MORIN <yann.morin.1998@free.fr> | 2015-09-04 22:17:32 +0200 |
|---|---|---|
| committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2015-10-14 22:50:03 +0200 |
| commit | c5bd8af65e50a51735eb112fed9cbe6337f14e06 (patch) | |
| tree | 68fc0acfba0e720e7bac19fd913b06103cec464a /package/skeleton | |
| parent | 142522ee753a858d30dacd46824930a2b3249907 (diff) | |
| download | buildroot-c5bd8af65e50a51735eb112fed9cbe6337f14e06.tar.gz buildroot-c5bd8af65e50a51735eb112fed9cbe6337f14e06.zip | |
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" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Mike Williams <mike@mikebwilliams.com>
Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Cc: Baruch Siach <baruch@tkos.co.il>
Tested-by: Mike Williams <mike@mikebwilliams.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/skeleton')
| -rw-r--r-- | package/skeleton/skeleton.mk | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk index 48e708515d..920d3b42d3 100644 --- a/package/skeleton/skeleton.mk +++ b/package/skeleton/skeleton.mk @@ -19,15 +19,29 @@ else SKELETON_PATH = system/skeleton endif +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +define SKELETON_USR_SYMLINKS_OR_DIRS + ln -snf usr/bin $(TARGET_DIR)/bin + ln -snf usr/sbin $(TARGET_DIR)/sbin + ln -snf usr/lib $(TARGET_DIR)/lib +endef +else +define SKELETON_USR_SYMLINKS_OR_DIRS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/bin + $(INSTALL) -d -m 0755 $(TARGET_DIR)/sbin + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib +endef +endif + define SKELETON_INSTALL_TARGET_CMDS rsync -a --ignore-times $(SYNC_VCS_EXCLUSIONS) \ --chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \ $(SKELETON_PATH)/ $(TARGET_DIR)/ - $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ - $(TARGET_DIR_WARNING_FILE) + $(SKELETON_USR_SYMLINKS_OR_DIRS) ln -snf lib $(TARGET_DIR)/$(LIB_SYMLINK) - mkdir -p $(TARGET_DIR)/usr ln -snf lib $(TARGET_DIR)/usr/$(LIB_SYMLINK) + $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ + $(TARGET_DIR_WARNING_FILE) endef SKELETON_TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) |

