mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-27 05:06:39 +00:00
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>
This commit is contained in:
parent
142522ee75
commit
c5bd8af65e
@ -22,16 +22,18 @@ EUDEV_CONF_ENV += LIBS=-lrt
|
|||||||
EUDEV_CONF_OPTS = \
|
EUDEV_CONF_OPTS = \
|
||||||
--disable-manpages \
|
--disable-manpages \
|
||||||
--sbindir=/sbin \
|
--sbindir=/sbin \
|
||||||
--with-rootlibdir=/lib \
|
|
||||||
--libexecdir=/lib \
|
--libexecdir=/lib \
|
||||||
--with-firmware-path=/lib/firmware \
|
--with-firmware-path=/lib/firmware \
|
||||||
--disable-introspection \
|
--disable-introspection \
|
||||||
--enable-split-usr \
|
|
||||||
--enable-libkmod
|
--enable-libkmod
|
||||||
|
|
||||||
EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod
|
EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod
|
||||||
EUDEV_PROVIDES = udev
|
EUDEV_PROVIDES = udev
|
||||||
|
|
||||||
|
ifeq ($(BR2_ROOTFS_MERGED_USR),)
|
||||||
|
EUDEV_CONF_OPTS += --with-rootlibdir=/lib --enable-split-usr
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y)
|
ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y)
|
||||||
EUDEV_CONF_OPTS += --enable-rule_generator
|
EUDEV_CONF_OPTS += --enable-rule_generator
|
||||||
endif
|
endif
|
||||||
|
@ -19,15 +19,29 @@ else
|
|||||||
SKELETON_PATH = system/skeleton
|
SKELETON_PATH = system/skeleton
|
||||||
endif
|
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
|
define SKELETON_INSTALL_TARGET_CMDS
|
||||||
rsync -a --ignore-times $(SYNC_VCS_EXCLUSIONS) \
|
rsync -a --ignore-times $(SYNC_VCS_EXCLUSIONS) \
|
||||||
--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
|
--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \
|
||||||
$(SKELETON_PATH)/ $(TARGET_DIR)/
|
$(SKELETON_PATH)/ $(TARGET_DIR)/
|
||||||
|
$(SKELETON_USR_SYMLINKS_OR_DIRS)
|
||||||
|
ln -snf lib $(TARGET_DIR)/$(LIB_SYMLINK)
|
||||||
|
ln -snf lib $(TARGET_DIR)/usr/$(LIB_SYMLINK)
|
||||||
$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
|
$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \
|
||||||
$(TARGET_DIR_WARNING_FILE)
|
$(TARGET_DIR_WARNING_FILE)
|
||||||
ln -snf lib $(TARGET_DIR)/$(LIB_SYMLINK)
|
|
||||||
mkdir -p $(TARGET_DIR)/usr
|
|
||||||
ln -snf lib $(TARGET_DIR)/usr/$(LIB_SYMLINK)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
SKELETON_TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
|
SKELETON_TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
|
||||||
|
@ -27,7 +27,6 @@ endif
|
|||||||
|
|
||||||
SYSTEMD_CONF_OPTS += \
|
SYSTEMD_CONF_OPTS += \
|
||||||
--with-rootprefix= \
|
--with-rootprefix= \
|
||||||
--with-rootlibdir=/lib \
|
|
||||||
--enable-static=no \
|
--enable-static=no \
|
||||||
--disable-manpages \
|
--disable-manpages \
|
||||||
--disable-selinux \
|
--disable-selinux \
|
||||||
@ -36,7 +35,6 @@ SYSTEMD_CONF_OPTS += \
|
|||||||
--with-dbuspolicydir=/etc/dbus-1/system.d \
|
--with-dbuspolicydir=/etc/dbus-1/system.d \
|
||||||
--with-dbussessionservicedir=/usr/share/dbus-1/services \
|
--with-dbussessionservicedir=/usr/share/dbus-1/services \
|
||||||
--with-dbussystemservicedir=/usr/share/dbus-1/system-services \
|
--with-dbussystemservicedir=/usr/share/dbus-1/system-services \
|
||||||
--enable-split-usr \
|
|
||||||
--disable-efi \
|
--disable-efi \
|
||||||
--disable-gnuefi \
|
--disable-gnuefi \
|
||||||
--disable-tests \
|
--disable-tests \
|
||||||
|
@ -78,6 +78,10 @@ config BR2_INIT_SYSV
|
|||||||
select BR2_PACKAGE_INITSCRIPTS
|
select BR2_PACKAGE_INITSCRIPTS
|
||||||
select BR2_PACKAGE_SYSVINIT
|
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
|
config BR2_INIT_SYSTEMD
|
||||||
bool "systemd"
|
bool "systemd"
|
||||||
depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
|
||||||
@ -88,6 +92,7 @@ config BR2_INIT_SYSTEMD
|
|||||||
depends on BR2_USE_MMU
|
depends on BR2_USE_MMU
|
||||||
depends on !BR2_STATIC_LIBS
|
depends on !BR2_STATIC_LIBS
|
||||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
|
||||||
|
select BR2_ROOTFS_MERGED_USR
|
||||||
select BR2_PACKAGE_SYSTEMD
|
select BR2_PACKAGE_SYSTEMD
|
||||||
|
|
||||||
comment "systemd needs (e)glibc toolchain, headers >= 3.10"
|
comment "systemd needs (e)glibc toolchain, headers >= 3.10"
|
||||||
@ -178,6 +183,18 @@ endif
|
|||||||
|
|
||||||
if BR2_ROOTFS_SKELETON_DEFAULT
|
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
|
config BR2_TARGET_ENABLE_ROOT_LOGIN
|
||||||
bool "Enable root login with password"
|
bool "Enable root login with password"
|
||||||
default y
|
default y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user