* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
@ 2018-12-14 11:42 james.hilliard1 at gmail.com
2018-12-15 8:58 ` Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: james.hilliard1 at gmail.com @ 2018-12-14 11:42 UTC (permalink / raw)
To: buildroot
From: James Hilliard <james.hilliard1@gmail.com>
This is essentially the successor to gummiboot.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
DEVELOPERS | 1 +
boot/Config.in | 1 +
boot/systemd-boot/Config.in | 23 ++++++++++++++
boot/systemd-boot/systemd-boot.mk | 7 +++++
package/meson/cross-compilation.conf.in | 1 +
package/meson/meson.mk | 41 ++++++++++++++++++++++++-
package/systemd/Config.in | 54 +++++++++++++++++++++++++--------
package/systemd/buildroot.conf | 3 ++
package/systemd/loader.conf | 2 ++
package/systemd/systemd.mk | 53 ++++++++++++++++++++++++++++++--
system/Config.in | 1 +
11 files changed, 171 insertions(+), 16 deletions(-)
create mode 100644 boot/systemd-boot/Config.in
create mode 100644 boot/systemd-boot/systemd-boot.mk
create mode 100644 package/systemd/buildroot.conf
create mode 100644 package/systemd/loader.conf
diff --git a/DEVELOPERS b/DEVELOPERS
index 4192681..93599fe 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -995,6 +995,7 @@ F: configs/pine64_defconfig
F: configs/pine64_sopine_defconfig
N: James Hilliard <james.hilliard1@gmail.com>
+F: boot/systemd-boot/
F: package/python-aiodns/
F: package/python-aiohttp/
F: package/python-aiohttp-jinja2/
diff --git a/boot/Config.in b/boot/Config.in
index 8e0c8e5..5b7f606 100644
--- a/boot/Config.in
+++ b/boot/Config.in
@@ -16,6 +16,7 @@ source "boot/mxs-bootlets/Config.in"
source "boot/riscv-pk/Config.in"
source "boot/s500-bootloader/Config.in"
source "boot/syslinux/Config.in"
+source "boot/systemd-boot/Config.in"
source "boot/ts4800-mbrboot/Config.in"
source "boot/uboot/Config.in"
source "boot/vexpress-firmware/Config.in"
diff --git a/boot/systemd-boot/Config.in b/boot/systemd-boot/Config.in
new file mode 100644
index 0000000..7c64cef
--- /dev/null
+++ b/boot/systemd-boot/Config.in
@@ -0,0 +1,23 @@
+config BR2_TARGET_SYSTEMD_BOOT
+ bool "systemd-boot"
+ depends on BR2_i386 || BR2_x86_64
+ select BR2_PACKAGE_BUILD_SYSTEMD
+ select BR2_PACKAGE_SYSTEMD
+ select BR2_PACKAGE_GNU_EFI
+ help
+ systemd-boot is a simple UEFI boot manager which executes
+ configured EFI images. The default entry is selected by a
+ configured pattern (glob) or an on-screen menu.
+
+ systemd-boot operates on the EFI System Partition (ESP)
+ only. Configuration file fragments, kernels, initrds, other
+ EFI images need to reside on the ESP. Linux kernels need to
+ be built with CONFIG_EFI_STUB to be able to be directly
+ executed as an EFI image.
+
+ See the Grub2 help text for details on preparing an EFI
+ capable disk image using systemd-boot: the instructions are
+ exactly the same, except that the systemd-boot configuration
+ files will be located in /loader/ inside the EFI partition.
+
+ https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
\ No newline at end of file
diff --git a/boot/systemd-boot/systemd-boot.mk b/boot/systemd-boot/systemd-boot.mk
new file mode 100644
index 0000000..5854024
--- /dev/null
+++ b/boot/systemd-boot/systemd-boot.mk
@@ -0,0 +1,7 @@
+################################################################################
+#
+# systemd-boot
+#
+################################################################################
+
+$(eval $(virtual-package))
diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
index 0eec740..fc8e27f 100644
--- a/package/meson/cross-compilation.conf.in
+++ b/package/meson/cross-compilation.conf.in
@@ -11,6 +11,7 @@ strip = '@TARGET_CROSS at strip'
pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
[properties]
+needs_exe_wrapper = true
c_args = [@TARGET_CFLAGS@]
c_link_args = [@TARGET_LDFLAGS@]
cpp_args = [@TARGET_CXXFLAGS@]
diff --git a/package/meson/meson.mk b/package/meson/meson.mk
index e1675c2..d9ad2fc 100644
--- a/package/meson/meson.mk
+++ b/package/meson/meson.mk
@@ -15,6 +15,45 @@ HOST_MESON_NEEDS_HOST_PYTHON = python3
HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN))
HOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)
+ifeq ($(BR2_arcle),y)
+HOST_MESON_TARGET_CPU_FAMILY = arc
+else ifeq ($(BR2_arceb),y)
+HOST_MESON_TARGET_CPU_FAMILY = arc
+else ifeq ($(BR2_arm),y)
+HOST_MESON_TARGET_CPU_FAMILY = arm
+else ifeq ($(BR2_armeb),y)
+HOST_MESON_TARGET_CPU_FAMILY = arm
+else ifeq ($(BR2_aarch64),y)
+HOST_MESON_TARGET_CPU_FAMILY = aarch64
+else ifeq ($(BR2_aarch64_be),y)
+HOST_MESON_TARGET_CPU_FAMILY = aarch64
+else ifeq ($(BR2_i386),y)
+HOST_MESON_TARGET_CPU_FAMILY = x86
+else ifeq ($(BR2_mips),y)
+HOST_MESON_TARGET_CPU_FAMILY = mips
+else ifeq ($(BR2_mipsel),y)
+HOST_MESON_TARGET_CPU_FAMILY = mips
+else ifeq ($(BR2_mips64),y)
+HOST_MESON_TARGET_CPU_FAMILY = mips64
+else ifeq ($(BR2_mips64el),y)
+HOST_MESON_TARGET_CPU_FAMILY = mips64
+else ifeq ($(BR2_powerpc),y)
+HOST_MESON_TARGET_CPU_FAMILY = ppc
+else ifeq ($(BR2_powerpc64),y)
+HOST_MESON_TARGET_CPU_FAMILY = ppc64
+else ifeq ($(BR2_powerpc64le),y)
+HOST_MESON_TARGET_CPU_FAMILY = ppc64
+else ifeq ($(BR2_riscv),y)
+HOST_MESON_TARGET_CPU_FAMILY = riscv32
+else ifeq ($(BR2_sparc),y)
+HOST_MESON_TARGET_CPU_FAMILY = sparc
+else ifeq ($(BR2_sparc64),y)
+HOST_MESON_TARGET_CPU_FAMILY = sparc64
+else ifeq ($(BR2_x86_64),y)
+HOST_MESON_TARGET_CPU_FAMILY = x86_64
+else
+HOST_MESON_TARGET_CPU_FAMILY = $(ARCH)
+endif
HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`)
HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
@@ -23,7 +62,7 @@ HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARG
define HOST_MESON_INSTALL_CROSS_CONF
mkdir -p $(HOST_DIR)/etc/meson
sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
- -e "s%@TARGET_ARCH@%$(ARCH)%g" \
+ -e "s%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g" \
-e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \
-e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
-e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \
diff --git a/package/systemd/Config.in b/package/systemd/Config.in
index 25f322e..c8fa786 100644
--- a/package/systemd/Config.in
+++ b/package/systemd/Config.in
@@ -7,27 +7,30 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \
BR2_aarch64 || BR2_m68k || BR2_arc
+config BR2_PACKAGE_BUILD_SYSTEMD
+ bool
+
menuconfig BR2_PACKAGE_SYSTEMD
bool "systemd"
- depends on BR2_INIT_SYSTEMD
+ depends on BR2_PACKAGE_BUILD_SYSTEMD
depends on !BR2_STATIC_LIBS # kmod
depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
depends on BR2_USE_MMU # dbus
- select BR2_PACKAGE_HAS_UDEV
- select BR2_PACKAGE_DBUS # runtime dependency only
+ select BR2_PACKAGE_HAS_UDEV if BR2_INIT_SYSTEMD
+ select BR2_PACKAGE_DBUS if BR2_INIT_SYSTEMD # runtime dependency only
select BR2_PACKAGE_LIBCAP
select BR2_PACKAGE_UTIL_LINUX
- select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+ select BR2_PACKAGE_UTIL_LINUX_LIBBLKID if BR2_INIT_SYSTEMD
select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
- select BR2_PACKAGE_UTIL_LINUX_BINARIES
+ select BR2_PACKAGE_UTIL_LINUX_BINARIES if BR2_INIT_SYSTEMD
select BR2_PACKAGE_UTIL_LINUX_MOUNT
- select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
- select BR2_PACKAGE_UTIL_LINUX_FSCK
- select BR2_PACKAGE_KMOD
- select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
- select BR2_PACKAGE_KMOD_TOOLS
- select BR2_TARGET_TZ_INFO
- select BR2_NEEDS_HOST_UTF8_LOCALE
+ select BR2_PACKAGE_UTIL_LINUX_NOLOGIN if BR2_INIT_SYSTEMD
+ select BR2_PACKAGE_UTIL_LINUX_FSCK if BR2_INIT_SYSTEMD
+ select BR2_PACKAGE_KMOD if BR2_INIT_SYSTEMD
+ select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_INIT_SYSTEMD # kmod-tools
+ select BR2_PACKAGE_KMOD_TOOLS if BR2_INIT_SYSTEMD
+ select BR2_TARGET_TZ_INFO if BR2_INIT_SYSTEMD
+ select BR2_NEEDS_HOST_UTF8_LOCALE if BR2_INIT_SYSTEMD
help
systemd is a system and service manager for Linux,
compatible with SysV and LSB init scripts. systemd provides
@@ -76,9 +79,11 @@ if BR2_PACKAGE_SYSTEMD
config BR2_PACKAGE_PROVIDES_UDEV
default "systemd"
+ depends on BR2_INIT_SYSTEMD
config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
bool "HTTP server for journal events"
+ depends on BR2_INIT_SYSTEMD
select BR2_PACKAGE_LIBMICROHTTPD
help
systemd-journal-gatewayd serves journal events over the
@@ -89,6 +94,7 @@ config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
config BR2_PACKAGE_SYSTEMD_BACKLIGHT
bool "enable backlight support"
+ depends on BR2_INIT_SYSTEMD
help
systemd-backlight is a service that restores the display
backlight brightness at early boot and saves it at shutdown.
@@ -97,6 +103,7 @@ config BR2_PACKAGE_SYSTEMD_BACKLIGHT
config BR2_PACKAGE_SYSTEMD_BINFMT
bool "enable binfmt tool"
+ depends on BR2_INIT_SYSTEMD
help
systemd-binfmt is an early boot service that registers
additional binary formats for executables in the kernel.
@@ -105,6 +112,7 @@ config BR2_PACKAGE_SYSTEMD_BINFMT
config BR2_PACKAGE_SYSTEMD_COREDUMP
bool "enable coredump hook"
+ depends on BR2_INIT_SYSTEMD
help
systemd-coredump can be used as a helper binary by the
kernel when a user space program receives a fatal signal and
@@ -114,6 +122,7 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP
config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
bool "enable firstboot support"
+ depends on BR2_INIT_SYSTEMD
help
systemd-firstboot initializes the most basic system settings
interactively on the first boot.
@@ -122,6 +131,7 @@ config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
config BR2_PACKAGE_SYSTEMD_HIBERNATE
bool "enable hibernation support"
+ depends on BR2_INIT_SYSTEMD
help
When this features is enabled, additional tools and services
are built to support suspending and resuming the system.
@@ -131,6 +141,7 @@ config BR2_PACKAGE_SYSTEMD_HIBERNATE
config BR2_PACKAGE_SYSTEMD_HOSTNAMED
bool "enable hostname daemon"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-hostnamed is a system service that may be used as a
mechanism to change the system's hostname.
@@ -140,6 +151,7 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED
config BR2_PACKAGE_SYSTEMD_HWDB
bool "enable hwdb installation"
default y
+ depends on BR2_INIT_SYSTEMD
help
Enables hardware database installation to /usr/lib/udev/hwdb.d
@@ -150,6 +162,7 @@ config BR2_PACKAGE_SYSTEMD_HWDB
config BR2_PACKAGE_SYSTEMD_IMPORTD
bool "enable import daemon"
+ depends on BR2_INIT_SYSTEMD
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
select BR2_PACKAGE_LIBCURL
select BR2_PACKAGE_LIBGCRYPT
@@ -166,6 +179,7 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD
config BR2_PACKAGE_SYSTEMD_LOCALED
bool "enable locale daemon"
+ depends on BR2_INIT_SYSTEMD
help
systemd-localed is a system service that may be used as
mechanism to change the system locale settings, as well as
@@ -175,6 +189,7 @@ config BR2_PACKAGE_SYSTEMD_LOCALED
config BR2_PACKAGE_SYSTEMD_LOGIND
bool "enable login daemon"
+ depends on BR2_INIT_SYSTEMD
help
systemd-logind is a system service that manages user logins.
@@ -182,6 +197,7 @@ config BR2_PACKAGE_SYSTEMD_LOGIND
config BR2_PACKAGE_SYSTEMD_MACHINED
bool "enable machine daemon"
+ depends on BR2_INIT_SYSTEMD
help
systemd-machined is a system service that keeps track of
virtual machines and containers, and processes belonging to
@@ -192,6 +208,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED
config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
bool "enable myhostname NSS plugin"
default y
+ depends on BR2_INIT_SYSTEMD
help
nss-myhostname is a plug-in module for the GNU Name Service
Switch (NSS) functionality of the GNU C Library (glibc),
@@ -203,6 +220,7 @@ config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
config BR2_PACKAGE_SYSTEMD_NETWORKD
bool "enable network manager"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-networkd is a system service that manages networks.
It detects and configures network devices as they appear, as
@@ -215,6 +233,7 @@ config BR2_PACKAGE_SYSTEMD_NETWORKD
config BR2_PACKAGE_SYSTEMD_POLKIT
bool "enable polkit support"
+ depends on BR2_INIT_SYSTEMD
depends on BR2_TOOLCHAIN_USES_GLIBC # polkit
select BR2_PACKAGE_POLKIT
help
@@ -226,10 +245,12 @@ config BR2_PACKAGE_SYSTEMD_POLKIT
http://wiki.freedesktop.org/www/Software/polkit/
comment "polkit support needs a glibc toolchain"
+ depends on BR2_INIT_SYSTEMD
depends on !BR2_TOOLCHAIN_USES_GLIBC
config BR2_PACKAGE_SYSTEMD_QUOTACHECK
bool "enable quotacheck tools"
+ depends on BR2_INIT_SYSTEMD
help
systemd-quotacheck is a service responsible for file system
quota checks. It is run once at boot after all necessary
@@ -240,6 +261,7 @@ config BR2_PACKAGE_SYSTEMD_QUOTACHECK
config BR2_PACKAGE_SYSTEMD_RANDOMSEED
bool "enable random-seed support"
+ depends on BR2_INIT_SYSTEMD
help
systemd-random-seed is a service that restores the random
seed of the system at early boot and saves it at
@@ -251,6 +273,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED
config BR2_PACKAGE_SYSTEMD_RESOLVED
bool "enable resolve daemon"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-resolved is a system service that provides network
name resolution to local applications. It implements a
@@ -261,6 +284,7 @@ config BR2_PACKAGE_SYSTEMD_RESOLVED
config BR2_PACKAGE_SYSTEMD_RFKILL
bool "enable rfkill tools"
+ depends on BR2_INIT_SYSTEMD
help
systemd-rfkill is a service that restores the RF kill switch
state at early boot and saves it at shutdown.
@@ -269,6 +293,7 @@ config BR2_PACKAGE_SYSTEMD_RFKILL
config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
bool "enable SMACK support"
+ depends on BR2_INIT_SYSTEMD
select BR2_PACKAGE_ATTR
select BR2_PACKAGE_SMACK
help
@@ -283,6 +308,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
config BR2_PACKAGE_SYSTEMD_SYSUSERS
bool "enable sysusers support"
+ depends on BR2_INIT_SYSTEMD
help
systemd-sysusers creates system users and groups, based on
the file format and location specified in sysusers.d(5).
@@ -292,6 +318,7 @@ config BR2_PACKAGE_SYSTEMD_SYSUSERS
config BR2_PACKAGE_SYSTEMD_TIMEDATED
bool "enable timedate daemon"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-timedated is a system service that may be used as a
mechanism to change the system clock and timezone, as well
@@ -302,6 +329,7 @@ config BR2_PACKAGE_SYSTEMD_TIMEDATED
config BR2_PACKAGE_SYSTEMD_TIMESYNCD
bool "enable timesync daemon"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-timesyncd is a service that may be used to
synchronize the local system clock with a Network Time
@@ -315,6 +343,7 @@ config BR2_PACKAGE_SYSTEMD_TIMESYNCD
config BR2_PACKAGE_SYSTEMD_TMPFILES
bool "enable tmpfiles support"
default y
+ depends on BR2_INIT_SYSTEMD
help
systemd-tmpfiles creates, deletes, and cleans up volatile
and temporary files and directories, based on the
@@ -325,6 +354,7 @@ config BR2_PACKAGE_SYSTEMD_TMPFILES
config BR2_PACKAGE_SYSTEMD_VCONSOLE
bool "enable vconsole tool"
+ depends on BR2_INIT_SYSTEMD
help
systemd-vconsole-setup is an early boot service that
configures the virtual console font and console keymap.
diff --git a/package/systemd/buildroot.conf b/package/systemd/buildroot.conf
new file mode 100644
index 0000000..16d4d85
--- /dev/null
+++ b/package/systemd/buildroot.conf
@@ -0,0 +1,3 @@
+title Buildroot
+linux /bzImage
+options root=/dev/sda2 rootwait console=tty1
diff --git a/package/systemd/loader.conf b/package/systemd/loader.conf
new file mode 100644
index 0000000..93b77b8
--- /dev/null
+++ b/package/systemd/loader.conf
@@ -0,0 +1,2 @@
+timeout 3
+default buildroot
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index e53f0b6..b7234be 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -8,15 +8,31 @@ SYSTEMD_VERSION = 239
SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
+ifeq ($(BR2_INIT_SYSTEMD),y)
SYSTEMD_INSTALL_STAGING = YES
+else
+SYSTEMD_INSTALL_STAGING = NO
+SYSTEMD_INSTALL_TARGET = NO
+endif
+ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
+SYSTEMD_INSTALL_IMAGES = YES
+ifeq ($(BR2_i386),y)
+SYSTEMD_IMGARCH = ia32
+else ifeq ($(BR2_x86_64),y)
+SYSTEMD_IMGARCH = x64
+endif
+endif
SYSTEMD_DEPENDENCIES = \
host-gperf \
host-intltool \
- kmod \
libcap \
util-linux
+ifeq ($(BR2_INIT_SYSTEMD),y)
+SYSTEMD_DEPENDENCIES += \
+ kmod
SYSTEMD_PROVIDES = udev
+endif
SYSTEMD_CONF_OPTS += \
-Drootlibdir='/usr/lib' \
@@ -24,8 +40,6 @@ SYSTEMD_CONF_OPTS += \
-Dman=false \
-Dima=false \
-Dlibcryptsetup=false \
- -Defi=false \
- -Dgnu-efi=false \
-Dldconfig=false \
-Ddefault-dnssec=no \
-Dtests=false \
@@ -404,4 +418,37 @@ endef
SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
+ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
+SYSTEMD_DEPENDENCIES += gnu-efi
+SYSTEMD_CONF_OPTS += \
+ -Defi=true \
+ -Dgnu-efi=true \
+ -Defi-cc=$(TARGET_CC) \
+ -Defi-ld=$(TARGET_LD) \
+ -Defi-libdir=$(STAGING_DIR)/usr/lib \
+ -Defi-ldsdir=$(STAGING_DIR)/usr/lib \
+ -Defi-includedir=$(STAGING_DIR)/usr/include/efi \
+
+ifneq ($(BR2_INIT_SYSTEMD),y)
+define SYSTEMD_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(SYSTEMD_NINJA_ENV) \
+ $(NINJA) $(NINJA_OPTS) -C $(SYSTEMD_SRCDIR)/build \
+ src/boot/efi/{systemd-boot$(SYSTEMD_IMGARCH).efi,linux$(SYSTEMD_IMGARCH).efi.stub}
+endef
+endif
+
+define SYSTEMD_INSTALL_IMAGES_CMDS
+ $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_IMGARCH).efi \
+ $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_IMGARCH).efi
+ echo "boot$(SYSTEMD_IMGARCH).efi" > \
+ $(BINARIES_DIR)/efi-part/startup.nsh
+ $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/loader.conf \
+ $(BINARIES_DIR)/efi-part/loader/loader.conf
+ $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/buildroot.conf \
+ $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
+endef
+else
+SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
+endif
+
$(eval $(meson-package))
diff --git a/system/Config.in b/system/Config.in
index 9e34f11..773a2cc 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -133,6 +133,7 @@ config BR2_INIT_SYSTEMD
depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
select BR2_ROOTFS_MERGED_USR
+ select BR2_PACKAGE_BUILD_SYSTEMD
select BR2_PACKAGE_SYSTEMD
comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10"
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-14 11:42 [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package james.hilliard1 at gmail.com
@ 2018-12-15 8:58 ` Yann E. MORIN
2018-12-15 9:12 ` James Hilliard
0 siblings, 1 reply; 11+ messages in thread
From: Yann E. MORIN @ 2018-12-15 8:58 UTC (permalink / raw)
To: buildroot
James, All,
On 2018-12-14 19:42 +0800, james.hilliard1 at gmail.com spake thusly:
> From: James Hilliard <james.hilliard1@gmail.com>
>
> This is essentially the successor to gummiboot.
First, this patch is huge, it does many tricky things, so the commit
log can't be that short. You need to explain in the commit log what
this patch does, why it needs to do it.
Second, the patch basically does three different things:
- change stuff in the meson-packae infrastructure
- change stuff in the systemd package
- adds a new virtual boot package
This is a good indication that there should be _at least_ three patches,
one for each of the above changes, each with a detailed commit log that
explains what the change does and why it has to be done). Patches should
do a complete change of their own, yet be atomic (i.e. can't be split).
Here it is obvious that the patch can be split. And if it can't then you
have to say why in the commit log, again.
Third, the new virtual boot package has no provider, so that's a
indication that something is wrong with that patch.
You need to clearly explain what is going on here, because all I can
think is, why can't we simply build the systemd-boot component of
systemd directly from the systemd package itself? (Yeah, I think I know
the answer, but you have to explain it in the commit log. And no, it
can't just be "but this is a bootloader, it has to have an entry in
boot/": we have other bootloaders elsewhere, e.g. rpi-firmware, which
do not live in boot/ (to my own dismay, but that's another story.))
Regards,
Yann E. MORIN.
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
> DEVELOPERS | 1 +
> boot/Config.in | 1 +
> boot/systemd-boot/Config.in | 23 ++++++++++++++
> boot/systemd-boot/systemd-boot.mk | 7 +++++
> package/meson/cross-compilation.conf.in | 1 +
> package/meson/meson.mk | 41 ++++++++++++++++++++++++-
> package/systemd/Config.in | 54 +++++++++++++++++++++++++--------
> package/systemd/buildroot.conf | 3 ++
> package/systemd/loader.conf | 2 ++
> package/systemd/systemd.mk | 53 ++++++++++++++++++++++++++++++--
> system/Config.in | 1 +
> 11 files changed, 171 insertions(+), 16 deletions(-)
> create mode 100644 boot/systemd-boot/Config.in
> create mode 100644 boot/systemd-boot/systemd-boot.mk
> create mode 100644 package/systemd/buildroot.conf
> create mode 100644 package/systemd/loader.conf
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 4192681..93599fe 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -995,6 +995,7 @@ F: configs/pine64_defconfig
> F: configs/pine64_sopine_defconfig
>
> N: James Hilliard <james.hilliard1@gmail.com>
> +F: boot/systemd-boot/
> F: package/python-aiodns/
> F: package/python-aiohttp/
> F: package/python-aiohttp-jinja2/
> diff --git a/boot/Config.in b/boot/Config.in
> index 8e0c8e5..5b7f606 100644
> --- a/boot/Config.in
> +++ b/boot/Config.in
> @@ -16,6 +16,7 @@ source "boot/mxs-bootlets/Config.in"
> source "boot/riscv-pk/Config.in"
> source "boot/s500-bootloader/Config.in"
> source "boot/syslinux/Config.in"
> +source "boot/systemd-boot/Config.in"
> source "boot/ts4800-mbrboot/Config.in"
> source "boot/uboot/Config.in"
> source "boot/vexpress-firmware/Config.in"
> diff --git a/boot/systemd-boot/Config.in b/boot/systemd-boot/Config.in
> new file mode 100644
> index 0000000..7c64cef
> --- /dev/null
> +++ b/boot/systemd-boot/Config.in
> @@ -0,0 +1,23 @@
> +config BR2_TARGET_SYSTEMD_BOOT
> + bool "systemd-boot"
> + depends on BR2_i386 || BR2_x86_64
> + select BR2_PACKAGE_BUILD_SYSTEMD
> + select BR2_PACKAGE_SYSTEMD
> + select BR2_PACKAGE_GNU_EFI
> + help
> + systemd-boot is a simple UEFI boot manager which executes
> + configured EFI images. The default entry is selected by a
> + configured pattern (glob) or an on-screen menu.
> +
> + systemd-boot operates on the EFI System Partition (ESP)
> + only. Configuration file fragments, kernels, initrds, other
> + EFI images need to reside on the ESP. Linux kernels need to
> + be built with CONFIG_EFI_STUB to be able to be directly
> + executed as an EFI image.
> +
> + See the Grub2 help text for details on preparing an EFI
> + capable disk image using systemd-boot: the instructions are
> + exactly the same, except that the systemd-boot configuration
> + files will be located in /loader/ inside the EFI partition.
> +
> + https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
> \ No newline at end of file
> diff --git a/boot/systemd-boot/systemd-boot.mk b/boot/systemd-boot/systemd-boot.mk
> new file mode 100644
> index 0000000..5854024
> --- /dev/null
> +++ b/boot/systemd-boot/systemd-boot.mk
> @@ -0,0 +1,7 @@
> +################################################################################
> +#
> +# systemd-boot
> +#
> +################################################################################
> +
> +$(eval $(virtual-package))
> diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> index 0eec740..fc8e27f 100644
> --- a/package/meson/cross-compilation.conf.in
> +++ b/package/meson/cross-compilation.conf.in
> @@ -11,6 +11,7 @@ strip = '@TARGET_CROSS at strip'
> pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
>
> [properties]
> +needs_exe_wrapper = true
> c_args = [@TARGET_CFLAGS@]
> c_link_args = [@TARGET_LDFLAGS@]
> cpp_args = [@TARGET_CXXFLAGS@]
> diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> index e1675c2..d9ad2fc 100644
> --- a/package/meson/meson.mk
> +++ b/package/meson/meson.mk
> @@ -15,6 +15,45 @@ HOST_MESON_NEEDS_HOST_PYTHON = python3
>
> HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN))
> HOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)
> +ifeq ($(BR2_arcle),y)
> +HOST_MESON_TARGET_CPU_FAMILY = arc
> +else ifeq ($(BR2_arceb),y)
> +HOST_MESON_TARGET_CPU_FAMILY = arc
> +else ifeq ($(BR2_arm),y)
> +HOST_MESON_TARGET_CPU_FAMILY = arm
> +else ifeq ($(BR2_armeb),y)
> +HOST_MESON_TARGET_CPU_FAMILY = arm
> +else ifeq ($(BR2_aarch64),y)
> +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> +else ifeq ($(BR2_aarch64_be),y)
> +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> +else ifeq ($(BR2_i386),y)
> +HOST_MESON_TARGET_CPU_FAMILY = x86
> +else ifeq ($(BR2_mips),y)
> +HOST_MESON_TARGET_CPU_FAMILY = mips
> +else ifeq ($(BR2_mipsel),y)
> +HOST_MESON_TARGET_CPU_FAMILY = mips
> +else ifeq ($(BR2_mips64),y)
> +HOST_MESON_TARGET_CPU_FAMILY = mips64
> +else ifeq ($(BR2_mips64el),y)
> +HOST_MESON_TARGET_CPU_FAMILY = mips64
> +else ifeq ($(BR2_powerpc),y)
> +HOST_MESON_TARGET_CPU_FAMILY = ppc
> +else ifeq ($(BR2_powerpc64),y)
> +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> +else ifeq ($(BR2_powerpc64le),y)
> +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> +else ifeq ($(BR2_riscv),y)
> +HOST_MESON_TARGET_CPU_FAMILY = riscv32
> +else ifeq ($(BR2_sparc),y)
> +HOST_MESON_TARGET_CPU_FAMILY = sparc
> +else ifeq ($(BR2_sparc64),y)
> +HOST_MESON_TARGET_CPU_FAMILY = sparc64
> +else ifeq ($(BR2_x86_64),y)
> +HOST_MESON_TARGET_CPU_FAMILY = x86_64
> +else
> +HOST_MESON_TARGET_CPU_FAMILY = $(ARCH)
> +endif
>
> HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`)
> HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
> @@ -23,7 +62,7 @@ HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARG
> define HOST_MESON_INSTALL_CROSS_CONF
> mkdir -p $(HOST_DIR)/etc/meson
> sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
> - -e "s%@TARGET_ARCH@%$(ARCH)%g" \
> + -e "s%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g" \
> -e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \
> -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
> -e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \
> diff --git a/package/systemd/Config.in b/package/systemd/Config.in
> index 25f322e..c8fa786 100644
> --- a/package/systemd/Config.in
> +++ b/package/systemd/Config.in
> @@ -7,27 +7,30 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
> BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \
> BR2_aarch64 || BR2_m68k || BR2_arc
>
> +config BR2_PACKAGE_BUILD_SYSTEMD
> + bool
> +
> menuconfig BR2_PACKAGE_SYSTEMD
> bool "systemd"
> - depends on BR2_INIT_SYSTEMD
> + depends on BR2_PACKAGE_BUILD_SYSTEMD
> depends on !BR2_STATIC_LIBS # kmod
> depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
> depends on BR2_USE_MMU # dbus
> - select BR2_PACKAGE_HAS_UDEV
> - select BR2_PACKAGE_DBUS # runtime dependency only
> + select BR2_PACKAGE_HAS_UDEV if BR2_INIT_SYSTEMD
> + select BR2_PACKAGE_DBUS if BR2_INIT_SYSTEMD # runtime dependency only
> select BR2_PACKAGE_LIBCAP
> select BR2_PACKAGE_UTIL_LINUX
> - select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID if BR2_INIT_SYSTEMD
> select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> - select BR2_PACKAGE_UTIL_LINUX_BINARIES
> + select BR2_PACKAGE_UTIL_LINUX_BINARIES if BR2_INIT_SYSTEMD
> select BR2_PACKAGE_UTIL_LINUX_MOUNT
> - select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
> - select BR2_PACKAGE_UTIL_LINUX_FSCK
> - select BR2_PACKAGE_KMOD
> - select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
> - select BR2_PACKAGE_KMOD_TOOLS
> - select BR2_TARGET_TZ_INFO
> - select BR2_NEEDS_HOST_UTF8_LOCALE
> + select BR2_PACKAGE_UTIL_LINUX_NOLOGIN if BR2_INIT_SYSTEMD
> + select BR2_PACKAGE_UTIL_LINUX_FSCK if BR2_INIT_SYSTEMD
> + select BR2_PACKAGE_KMOD if BR2_INIT_SYSTEMD
> + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_INIT_SYSTEMD # kmod-tools
> + select BR2_PACKAGE_KMOD_TOOLS if BR2_INIT_SYSTEMD
> + select BR2_TARGET_TZ_INFO if BR2_INIT_SYSTEMD
> + select BR2_NEEDS_HOST_UTF8_LOCALE if BR2_INIT_SYSTEMD
> help
> systemd is a system and service manager for Linux,
> compatible with SysV and LSB init scripts. systemd provides
> @@ -76,9 +79,11 @@ if BR2_PACKAGE_SYSTEMD
>
> config BR2_PACKAGE_PROVIDES_UDEV
> default "systemd"
> + depends on BR2_INIT_SYSTEMD
>
> config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> bool "HTTP server for journal events"
> + depends on BR2_INIT_SYSTEMD
> select BR2_PACKAGE_LIBMICROHTTPD
> help
> systemd-journal-gatewayd serves journal events over the
> @@ -89,6 +94,7 @@ config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
>
> config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> bool "enable backlight support"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-backlight is a service that restores the display
> backlight brightness at early boot and saves it at shutdown.
> @@ -97,6 +103,7 @@ config BR2_PACKAGE_SYSTEMD_BACKLIGHT
>
> config BR2_PACKAGE_SYSTEMD_BINFMT
> bool "enable binfmt tool"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-binfmt is an early boot service that registers
> additional binary formats for executables in the kernel.
> @@ -105,6 +112,7 @@ config BR2_PACKAGE_SYSTEMD_BINFMT
>
> config BR2_PACKAGE_SYSTEMD_COREDUMP
> bool "enable coredump hook"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-coredump can be used as a helper binary by the
> kernel when a user space program receives a fatal signal and
> @@ -114,6 +122,7 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP
>
> config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> bool "enable firstboot support"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-firstboot initializes the most basic system settings
> interactively on the first boot.
> @@ -122,6 +131,7 @@ config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
>
> config BR2_PACKAGE_SYSTEMD_HIBERNATE
> bool "enable hibernation support"
> + depends on BR2_INIT_SYSTEMD
> help
> When this features is enabled, additional tools and services
> are built to support suspending and resuming the system.
> @@ -131,6 +141,7 @@ config BR2_PACKAGE_SYSTEMD_HIBERNATE
> config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> bool "enable hostname daemon"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-hostnamed is a system service that may be used as a
> mechanism to change the system's hostname.
> @@ -140,6 +151,7 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> config BR2_PACKAGE_SYSTEMD_HWDB
> bool "enable hwdb installation"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> Enables hardware database installation to /usr/lib/udev/hwdb.d
>
> @@ -150,6 +162,7 @@ config BR2_PACKAGE_SYSTEMD_HWDB
>
> config BR2_PACKAGE_SYSTEMD_IMPORTD
> bool "enable import daemon"
> + depends on BR2_INIT_SYSTEMD
> depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
> select BR2_PACKAGE_LIBCURL
> select BR2_PACKAGE_LIBGCRYPT
> @@ -166,6 +179,7 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD
>
> config BR2_PACKAGE_SYSTEMD_LOCALED
> bool "enable locale daemon"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-localed is a system service that may be used as
> mechanism to change the system locale settings, as well as
> @@ -175,6 +189,7 @@ config BR2_PACKAGE_SYSTEMD_LOCALED
>
> config BR2_PACKAGE_SYSTEMD_LOGIND
> bool "enable login daemon"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-logind is a system service that manages user logins.
>
> @@ -182,6 +197,7 @@ config BR2_PACKAGE_SYSTEMD_LOGIND
>
> config BR2_PACKAGE_SYSTEMD_MACHINED
> bool "enable machine daemon"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-machined is a system service that keeps track of
> virtual machines and containers, and processes belonging to
> @@ -192,6 +208,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED
> config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> bool "enable myhostname NSS plugin"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> nss-myhostname is a plug-in module for the GNU Name Service
> Switch (NSS) functionality of the GNU C Library (glibc),
> @@ -203,6 +220,7 @@ config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> config BR2_PACKAGE_SYSTEMD_NETWORKD
> bool "enable network manager"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-networkd is a system service that manages networks.
> It detects and configures network devices as they appear, as
> @@ -215,6 +233,7 @@ config BR2_PACKAGE_SYSTEMD_NETWORKD
>
> config BR2_PACKAGE_SYSTEMD_POLKIT
> bool "enable polkit support"
> + depends on BR2_INIT_SYSTEMD
> depends on BR2_TOOLCHAIN_USES_GLIBC # polkit
> select BR2_PACKAGE_POLKIT
> help
> @@ -226,10 +245,12 @@ config BR2_PACKAGE_SYSTEMD_POLKIT
> http://wiki.freedesktop.org/www/Software/polkit/
>
> comment "polkit support needs a glibc toolchain"
> + depends on BR2_INIT_SYSTEMD
> depends on !BR2_TOOLCHAIN_USES_GLIBC
>
> config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> bool "enable quotacheck tools"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-quotacheck is a service responsible for file system
> quota checks. It is run once at boot after all necessary
> @@ -240,6 +261,7 @@ config BR2_PACKAGE_SYSTEMD_QUOTACHECK
>
> config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> bool "enable random-seed support"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-random-seed is a service that restores the random
> seed of the system at early boot and saves it at
> @@ -251,6 +273,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> config BR2_PACKAGE_SYSTEMD_RESOLVED
> bool "enable resolve daemon"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-resolved is a system service that provides network
> name resolution to local applications. It implements a
> @@ -261,6 +284,7 @@ config BR2_PACKAGE_SYSTEMD_RESOLVED
>
> config BR2_PACKAGE_SYSTEMD_RFKILL
> bool "enable rfkill tools"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-rfkill is a service that restores the RF kill switch
> state at early boot and saves it at shutdown.
> @@ -269,6 +293,7 @@ config BR2_PACKAGE_SYSTEMD_RFKILL
>
> config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> bool "enable SMACK support"
> + depends on BR2_INIT_SYSTEMD
> select BR2_PACKAGE_ATTR
> select BR2_PACKAGE_SMACK
> help
> @@ -283,6 +308,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
>
> config BR2_PACKAGE_SYSTEMD_SYSUSERS
> bool "enable sysusers support"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-sysusers creates system users and groups, based on
> the file format and location specified in sysusers.d(5).
> @@ -292,6 +318,7 @@ config BR2_PACKAGE_SYSTEMD_SYSUSERS
> config BR2_PACKAGE_SYSTEMD_TIMEDATED
> bool "enable timedate daemon"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-timedated is a system service that may be used as a
> mechanism to change the system clock and timezone, as well
> @@ -302,6 +329,7 @@ config BR2_PACKAGE_SYSTEMD_TIMEDATED
> config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> bool "enable timesync daemon"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-timesyncd is a service that may be used to
> synchronize the local system clock with a Network Time
> @@ -315,6 +343,7 @@ config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> config BR2_PACKAGE_SYSTEMD_TMPFILES
> bool "enable tmpfiles support"
> default y
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-tmpfiles creates, deletes, and cleans up volatile
> and temporary files and directories, based on the
> @@ -325,6 +354,7 @@ config BR2_PACKAGE_SYSTEMD_TMPFILES
>
> config BR2_PACKAGE_SYSTEMD_VCONSOLE
> bool "enable vconsole tool"
> + depends on BR2_INIT_SYSTEMD
> help
> systemd-vconsole-setup is an early boot service that
> configures the virtual console font and console keymap.
> diff --git a/package/systemd/buildroot.conf b/package/systemd/buildroot.conf
> new file mode 100644
> index 0000000..16d4d85
> --- /dev/null
> +++ b/package/systemd/buildroot.conf
> @@ -0,0 +1,3 @@
> +title Buildroot
> +linux /bzImage
> +options root=/dev/sda2 rootwait console=tty1
> diff --git a/package/systemd/loader.conf b/package/systemd/loader.conf
> new file mode 100644
> index 0000000..93b77b8
> --- /dev/null
> +++ b/package/systemd/loader.conf
> @@ -0,0 +1,2 @@
> +timeout 3
> +default buildroot
> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> index e53f0b6..b7234be 100644
> --- a/package/systemd/systemd.mk
> +++ b/package/systemd/systemd.mk
> @@ -8,15 +8,31 @@ SYSTEMD_VERSION = 239
> SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
> SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
> SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
> +ifeq ($(BR2_INIT_SYSTEMD),y)
> SYSTEMD_INSTALL_STAGING = YES
> +else
> +SYSTEMD_INSTALL_STAGING = NO
> +SYSTEMD_INSTALL_TARGET = NO
> +endif
> +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> +SYSTEMD_INSTALL_IMAGES = YES
> +ifeq ($(BR2_i386),y)
> +SYSTEMD_IMGARCH = ia32
> +else ifeq ($(BR2_x86_64),y)
> +SYSTEMD_IMGARCH = x64
> +endif
> +endif
> SYSTEMD_DEPENDENCIES = \
> host-gperf \
> host-intltool \
> - kmod \
> libcap \
> util-linux
>
> +ifeq ($(BR2_INIT_SYSTEMD),y)
> +SYSTEMD_DEPENDENCIES += \
> + kmod
> SYSTEMD_PROVIDES = udev
> +endif
>
> SYSTEMD_CONF_OPTS += \
> -Drootlibdir='/usr/lib' \
> @@ -24,8 +40,6 @@ SYSTEMD_CONF_OPTS += \
> -Dman=false \
> -Dima=false \
> -Dlibcryptsetup=false \
> - -Defi=false \
> - -Dgnu-efi=false \
> -Dldconfig=false \
> -Ddefault-dnssec=no \
> -Dtests=false \
> @@ -404,4 +418,37 @@ endef
> SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
> SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
>
> +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> +SYSTEMD_DEPENDENCIES += gnu-efi
> +SYSTEMD_CONF_OPTS += \
> + -Defi=true \
> + -Dgnu-efi=true \
> + -Defi-cc=$(TARGET_CC) \
> + -Defi-ld=$(TARGET_LD) \
> + -Defi-libdir=$(STAGING_DIR)/usr/lib \
> + -Defi-ldsdir=$(STAGING_DIR)/usr/lib \
> + -Defi-includedir=$(STAGING_DIR)/usr/include/efi \
> +
> +ifneq ($(BR2_INIT_SYSTEMD),y)
> +define SYSTEMD_BUILD_CMDS
> + $(TARGET_MAKE_ENV) $(SYSTEMD_NINJA_ENV) \
> + $(NINJA) $(NINJA_OPTS) -C $(SYSTEMD_SRCDIR)/build \
> + src/boot/efi/{systemd-boot$(SYSTEMD_IMGARCH).efi,linux$(SYSTEMD_IMGARCH).efi.stub}
> +endef
> +endif
> +
> +define SYSTEMD_INSTALL_IMAGES_CMDS
> + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_IMGARCH).efi \
> + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_IMGARCH).efi
> + echo "boot$(SYSTEMD_IMGARCH).efi" > \
> + $(BINARIES_DIR)/efi-part/startup.nsh
> + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/loader.conf \
> + $(BINARIES_DIR)/efi-part/loader/loader.conf
> + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/buildroot.conf \
> + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
> +endef
> +else
> +SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> +endif
> +
> $(eval $(meson-package))
> diff --git a/system/Config.in b/system/Config.in
> index 9e34f11..773a2cc 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -133,6 +133,7 @@ config BR2_INIT_SYSTEMD
> depends on !BR2_STATIC_LIBS
> depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> select BR2_ROOTFS_MERGED_USR
> + select BR2_PACKAGE_BUILD_SYSTEMD
> select BR2_PACKAGE_SYSTEMD
>
> comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10"
> --
> 2.7.4
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 8:58 ` Yann E. MORIN
@ 2018-12-15 9:12 ` James Hilliard
2018-12-15 10:27 ` Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: James Hilliard @ 2018-12-15 9:12 UTC (permalink / raw)
To: buildroot
On Sat, Dec 15, 2018 at 1:59 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> James, All,
>
> On 2018-12-14 19:42 +0800, james.hilliard1 at gmail.com spake thusly:
> > From: James Hilliard <james.hilliard1@gmail.com>
> >
> > This is essentially the successor to gummiboot.
>
> First, this patch is huge, it does many tricky things, so the commit
> log can't be that short. You need to explain in the commit log what
> this patch does, why it needs to do it.
>
> Second, the patch basically does three different things:
> - change stuff in the meson-packae infrastructure
Yeah, this can def be split off, it's to fix an issue with meson
requiring cpu family to be normalized(it only seems to be an issue for
meson.build files that have cpu family detection however).
> - change stuff in the systemd package
> - adds a new virtual boot package
These kind of go together, all the changes in the systemd package are
essentially adding systemd-boot package infrastructure.
> This is a good indication that there should be _at least_ three patches,
> one for each of the above changes, each with a detailed commit log that
> explains what the change does and why it has to be done). Patches should
> do a complete change of their own, yet be atomic (i.e. can't be split).
> Here it is obvious that the patch can be split. And if it can't then you
> have to say why in the commit log, again.
>
> Third, the new virtual boot package has no provider, so that's a
> indication that something is wrong with that patch.
So the virtual package is really just there so that there's an entry
in the boot menu instead of packages for systemd-boot.
>
> You need to clearly explain what is going on here, because all I can
> think is, why can't we simply build the systemd-boot component of
> systemd directly from the systemd package itself? (Yeah, I think I know
> the answer, but you have to explain it in the commit log. And no, it
> can't just be "but this is a bootloader, it has to have an entry in
> boot/": we have other bootloaders elsewhere, e.g. rpi-firmware, which
> do not live in boot/ (to my own dismay, but that's another story.))
I did it this way so that it's clear that systemd-boot can be built
without a systemd init system. Would it make sense to move all
bootloaders to be under the boot menu?
>
> Regards,
> Yann E. MORIN.
>
> > Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> > ---
> > DEVELOPERS | 1 +
> > boot/Config.in | 1 +
> > boot/systemd-boot/Config.in | 23 ++++++++++++++
> > boot/systemd-boot/systemd-boot.mk | 7 +++++
> > package/meson/cross-compilation.conf.in | 1 +
> > package/meson/meson.mk | 41 ++++++++++++++++++++++++-
> > package/systemd/Config.in | 54 +++++++++++++++++++++++++--------
> > package/systemd/buildroot.conf | 3 ++
> > package/systemd/loader.conf | 2 ++
> > package/systemd/systemd.mk | 53 ++++++++++++++++++++++++++++++--
> > system/Config.in | 1 +
> > 11 files changed, 171 insertions(+), 16 deletions(-)
> > create mode 100644 boot/systemd-boot/Config.in
> > create mode 100644 boot/systemd-boot/systemd-boot.mk
> > create mode 100644 package/systemd/buildroot.conf
> > create mode 100644 package/systemd/loader.conf
> >
> > diff --git a/DEVELOPERS b/DEVELOPERS
> > index 4192681..93599fe 100644
> > --- a/DEVELOPERS
> > +++ b/DEVELOPERS
> > @@ -995,6 +995,7 @@ F: configs/pine64_defconfig
> > F: configs/pine64_sopine_defconfig
> >
> > N: James Hilliard <james.hilliard1@gmail.com>
> > +F: boot/systemd-boot/
> > F: package/python-aiodns/
> > F: package/python-aiohttp/
> > F: package/python-aiohttp-jinja2/
> > diff --git a/boot/Config.in b/boot/Config.in
> > index 8e0c8e5..5b7f606 100644
> > --- a/boot/Config.in
> > +++ b/boot/Config.in
> > @@ -16,6 +16,7 @@ source "boot/mxs-bootlets/Config.in"
> > source "boot/riscv-pk/Config.in"
> > source "boot/s500-bootloader/Config.in"
> > source "boot/syslinux/Config.in"
> > +source "boot/systemd-boot/Config.in"
> > source "boot/ts4800-mbrboot/Config.in"
> > source "boot/uboot/Config.in"
> > source "boot/vexpress-firmware/Config.in"
> > diff --git a/boot/systemd-boot/Config.in b/boot/systemd-boot/Config.in
> > new file mode 100644
> > index 0000000..7c64cef
> > --- /dev/null
> > +++ b/boot/systemd-boot/Config.in
> > @@ -0,0 +1,23 @@
> > +config BR2_TARGET_SYSTEMD_BOOT
> > + bool "systemd-boot"
> > + depends on BR2_i386 || BR2_x86_64
> > + select BR2_PACKAGE_BUILD_SYSTEMD
> > + select BR2_PACKAGE_SYSTEMD
> > + select BR2_PACKAGE_GNU_EFI
> > + help
> > + systemd-boot is a simple UEFI boot manager which executes
> > + configured EFI images. The default entry is selected by a
> > + configured pattern (glob) or an on-screen menu.
> > +
> > + systemd-boot operates on the EFI System Partition (ESP)
> > + only. Configuration file fragments, kernels, initrds, other
> > + EFI images need to reside on the ESP. Linux kernels need to
> > + be built with CONFIG_EFI_STUB to be able to be directly
> > + executed as an EFI image.
> > +
> > + See the Grub2 help text for details on preparing an EFI
> > + capable disk image using systemd-boot: the instructions are
> > + exactly the same, except that the systemd-boot configuration
> > + files will be located in /loader/ inside the EFI partition.
> > +
> > + https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
> > \ No newline at end of file
> > diff --git a/boot/systemd-boot/systemd-boot.mk b/boot/systemd-boot/systemd-boot.mk
> > new file mode 100644
> > index 0000000..5854024
> > --- /dev/null
> > +++ b/boot/systemd-boot/systemd-boot.mk
> > @@ -0,0 +1,7 @@
> > +################################################################################
> > +#
> > +# systemd-boot
> > +#
> > +################################################################################
> > +
> > +$(eval $(virtual-package))
> > diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> > index 0eec740..fc8e27f 100644
> > --- a/package/meson/cross-compilation.conf.in
> > +++ b/package/meson/cross-compilation.conf.in
> > @@ -11,6 +11,7 @@ strip = '@TARGET_CROSS at strip'
> > pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> >
> > [properties]
> > +needs_exe_wrapper = true
> > c_args = [@TARGET_CFLAGS@]
> > c_link_args = [@TARGET_LDFLAGS@]
> > cpp_args = [@TARGET_CXXFLAGS@]
> > diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> > index e1675c2..d9ad2fc 100644
> > --- a/package/meson/meson.mk
> > +++ b/package/meson/meson.mk
> > @@ -15,6 +15,45 @@ HOST_MESON_NEEDS_HOST_PYTHON = python3
> >
> > HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN))
> > HOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)
> > +ifeq ($(BR2_arcle),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > +else ifeq ($(BR2_arceb),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > +else ifeq ($(BR2_arm),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > +else ifeq ($(BR2_armeb),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > +else ifeq ($(BR2_aarch64),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > +else ifeq ($(BR2_aarch64_be),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > +else ifeq ($(BR2_i386),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = x86
> > +else ifeq ($(BR2_mips),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > +else ifeq ($(BR2_mipsel),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > +else ifeq ($(BR2_mips64),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > +else ifeq ($(BR2_mips64el),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > +else ifeq ($(BR2_powerpc),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = ppc
> > +else ifeq ($(BR2_powerpc64),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > +else ifeq ($(BR2_powerpc64le),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > +else ifeq ($(BR2_riscv),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = riscv32
> > +else ifeq ($(BR2_sparc),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = sparc
> > +else ifeq ($(BR2_sparc64),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = sparc64
> > +else ifeq ($(BR2_x86_64),y)
> > +HOST_MESON_TARGET_CPU_FAMILY = x86_64
> > +else
> > +HOST_MESON_TARGET_CPU_FAMILY = $(ARCH)
> > +endif
> >
> > HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`)
> > HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
> > @@ -23,7 +62,7 @@ HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARG
> > define HOST_MESON_INSTALL_CROSS_CONF
> > mkdir -p $(HOST_DIR)/etc/meson
> > sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
> > - -e "s%@TARGET_ARCH@%$(ARCH)%g" \
> > + -e "s%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g" \
> > -e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \
> > -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
> > -e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \
> > diff --git a/package/systemd/Config.in b/package/systemd/Config.in
> > index 25f322e..c8fa786 100644
> > --- a/package/systemd/Config.in
> > +++ b/package/systemd/Config.in
> > @@ -7,27 +7,30 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
> > BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \
> > BR2_aarch64 || BR2_m68k || BR2_arc
> >
> > +config BR2_PACKAGE_BUILD_SYSTEMD
> > + bool
> > +
> > menuconfig BR2_PACKAGE_SYSTEMD
> > bool "systemd"
> > - depends on BR2_INIT_SYSTEMD
> > + depends on BR2_PACKAGE_BUILD_SYSTEMD
> > depends on !BR2_STATIC_LIBS # kmod
> > depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
> > depends on BR2_USE_MMU # dbus
> > - select BR2_PACKAGE_HAS_UDEV
> > - select BR2_PACKAGE_DBUS # runtime dependency only
> > + select BR2_PACKAGE_HAS_UDEV if BR2_INIT_SYSTEMD
> > + select BR2_PACKAGE_DBUS if BR2_INIT_SYSTEMD # runtime dependency only
> > select BR2_PACKAGE_LIBCAP
> > select BR2_PACKAGE_UTIL_LINUX
> > - select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> > + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID if BR2_INIT_SYSTEMD
> > select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> > - select BR2_PACKAGE_UTIL_LINUX_BINARIES
> > + select BR2_PACKAGE_UTIL_LINUX_BINARIES if BR2_INIT_SYSTEMD
> > select BR2_PACKAGE_UTIL_LINUX_MOUNT
> > - select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
> > - select BR2_PACKAGE_UTIL_LINUX_FSCK
> > - select BR2_PACKAGE_KMOD
> > - select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
> > - select BR2_PACKAGE_KMOD_TOOLS
> > - select BR2_TARGET_TZ_INFO
> > - select BR2_NEEDS_HOST_UTF8_LOCALE
> > + select BR2_PACKAGE_UTIL_LINUX_NOLOGIN if BR2_INIT_SYSTEMD
> > + select BR2_PACKAGE_UTIL_LINUX_FSCK if BR2_INIT_SYSTEMD
> > + select BR2_PACKAGE_KMOD if BR2_INIT_SYSTEMD
> > + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_INIT_SYSTEMD # kmod-tools
> > + select BR2_PACKAGE_KMOD_TOOLS if BR2_INIT_SYSTEMD
> > + select BR2_TARGET_TZ_INFO if BR2_INIT_SYSTEMD
> > + select BR2_NEEDS_HOST_UTF8_LOCALE if BR2_INIT_SYSTEMD
> > help
> > systemd is a system and service manager for Linux,
> > compatible with SysV and LSB init scripts. systemd provides
> > @@ -76,9 +79,11 @@ if BR2_PACKAGE_SYSTEMD
> >
> > config BR2_PACKAGE_PROVIDES_UDEV
> > default "systemd"
> > + depends on BR2_INIT_SYSTEMD
> >
> > config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> > bool "HTTP server for journal events"
> > + depends on BR2_INIT_SYSTEMD
> > select BR2_PACKAGE_LIBMICROHTTPD
> > help
> > systemd-journal-gatewayd serves journal events over the
> > @@ -89,6 +94,7 @@ config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> >
> > config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> > bool "enable backlight support"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-backlight is a service that restores the display
> > backlight brightness at early boot and saves it at shutdown.
> > @@ -97,6 +103,7 @@ config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> >
> > config BR2_PACKAGE_SYSTEMD_BINFMT
> > bool "enable binfmt tool"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-binfmt is an early boot service that registers
> > additional binary formats for executables in the kernel.
> > @@ -105,6 +112,7 @@ config BR2_PACKAGE_SYSTEMD_BINFMT
> >
> > config BR2_PACKAGE_SYSTEMD_COREDUMP
> > bool "enable coredump hook"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-coredump can be used as a helper binary by the
> > kernel when a user space program receives a fatal signal and
> > @@ -114,6 +122,7 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP
> >
> > config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> > bool "enable firstboot support"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-firstboot initializes the most basic system settings
> > interactively on the first boot.
> > @@ -122,6 +131,7 @@ config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> >
> > config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > bool "enable hibernation support"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > When this features is enabled, additional tools and services
> > are built to support suspending and resuming the system.
> > @@ -131,6 +141,7 @@ config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > bool "enable hostname daemon"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-hostnamed is a system service that may be used as a
> > mechanism to change the system's hostname.
> > @@ -140,6 +151,7 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > config BR2_PACKAGE_SYSTEMD_HWDB
> > bool "enable hwdb installation"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > Enables hardware database installation to /usr/lib/udev/hwdb.d
> >
> > @@ -150,6 +162,7 @@ config BR2_PACKAGE_SYSTEMD_HWDB
> >
> > config BR2_PACKAGE_SYSTEMD_IMPORTD
> > bool "enable import daemon"
> > + depends on BR2_INIT_SYSTEMD
> > depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
> > select BR2_PACKAGE_LIBCURL
> > select BR2_PACKAGE_LIBGCRYPT
> > @@ -166,6 +179,7 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD
> >
> > config BR2_PACKAGE_SYSTEMD_LOCALED
> > bool "enable locale daemon"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-localed is a system service that may be used as
> > mechanism to change the system locale settings, as well as
> > @@ -175,6 +189,7 @@ config BR2_PACKAGE_SYSTEMD_LOCALED
> >
> > config BR2_PACKAGE_SYSTEMD_LOGIND
> > bool "enable login daemon"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-logind is a system service that manages user logins.
> >
> > @@ -182,6 +197,7 @@ config BR2_PACKAGE_SYSTEMD_LOGIND
> >
> > config BR2_PACKAGE_SYSTEMD_MACHINED
> > bool "enable machine daemon"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-machined is a system service that keeps track of
> > virtual machines and containers, and processes belonging to
> > @@ -192,6 +208,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED
> > config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > bool "enable myhostname NSS plugin"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > nss-myhostname is a plug-in module for the GNU Name Service
> > Switch (NSS) functionality of the GNU C Library (glibc),
> > @@ -203,6 +220,7 @@ config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > config BR2_PACKAGE_SYSTEMD_NETWORKD
> > bool "enable network manager"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-networkd is a system service that manages networks.
> > It detects and configures network devices as they appear, as
> > @@ -215,6 +233,7 @@ config BR2_PACKAGE_SYSTEMD_NETWORKD
> >
> > config BR2_PACKAGE_SYSTEMD_POLKIT
> > bool "enable polkit support"
> > + depends on BR2_INIT_SYSTEMD
> > depends on BR2_TOOLCHAIN_USES_GLIBC # polkit
> > select BR2_PACKAGE_POLKIT
> > help
> > @@ -226,10 +245,12 @@ config BR2_PACKAGE_SYSTEMD_POLKIT
> > http://wiki.freedesktop.org/www/Software/polkit/
> >
> > comment "polkit support needs a glibc toolchain"
> > + depends on BR2_INIT_SYSTEMD
> > depends on !BR2_TOOLCHAIN_USES_GLIBC
> >
> > config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> > bool "enable quotacheck tools"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-quotacheck is a service responsible for file system
> > quota checks. It is run once at boot after all necessary
> > @@ -240,6 +261,7 @@ config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> >
> > config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > bool "enable random-seed support"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-random-seed is a service that restores the random
> > seed of the system at early boot and saves it at
> > @@ -251,6 +273,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > config BR2_PACKAGE_SYSTEMD_RESOLVED
> > bool "enable resolve daemon"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-resolved is a system service that provides network
> > name resolution to local applications. It implements a
> > @@ -261,6 +284,7 @@ config BR2_PACKAGE_SYSTEMD_RESOLVED
> >
> > config BR2_PACKAGE_SYSTEMD_RFKILL
> > bool "enable rfkill tools"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-rfkill is a service that restores the RF kill switch
> > state at early boot and saves it at shutdown.
> > @@ -269,6 +293,7 @@ config BR2_PACKAGE_SYSTEMD_RFKILL
> >
> > config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> > bool "enable SMACK support"
> > + depends on BR2_INIT_SYSTEMD
> > select BR2_PACKAGE_ATTR
> > select BR2_PACKAGE_SMACK
> > help
> > @@ -283,6 +308,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> >
> > config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > bool "enable sysusers support"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-sysusers creates system users and groups, based on
> > the file format and location specified in sysusers.d(5).
> > @@ -292,6 +318,7 @@ config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > bool "enable timedate daemon"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-timedated is a system service that may be used as a
> > mechanism to change the system clock and timezone, as well
> > @@ -302,6 +329,7 @@ config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > bool "enable timesync daemon"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-timesyncd is a service that may be used to
> > synchronize the local system clock with a Network Time
> > @@ -315,6 +343,7 @@ config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > config BR2_PACKAGE_SYSTEMD_TMPFILES
> > bool "enable tmpfiles support"
> > default y
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-tmpfiles creates, deletes, and cleans up volatile
> > and temporary files and directories, based on the
> > @@ -325,6 +354,7 @@ config BR2_PACKAGE_SYSTEMD_TMPFILES
> >
> > config BR2_PACKAGE_SYSTEMD_VCONSOLE
> > bool "enable vconsole tool"
> > + depends on BR2_INIT_SYSTEMD
> > help
> > systemd-vconsole-setup is an early boot service that
> > configures the virtual console font and console keymap.
> > diff --git a/package/systemd/buildroot.conf b/package/systemd/buildroot.conf
> > new file mode 100644
> > index 0000000..16d4d85
> > --- /dev/null
> > +++ b/package/systemd/buildroot.conf
> > @@ -0,0 +1,3 @@
> > +title Buildroot
> > +linux /bzImage
> > +options root=/dev/sda2 rootwait console=tty1
> > diff --git a/package/systemd/loader.conf b/package/systemd/loader.conf
> > new file mode 100644
> > index 0000000..93b77b8
> > --- /dev/null
> > +++ b/package/systemd/loader.conf
> > @@ -0,0 +1,2 @@
> > +timeout 3
> > +default buildroot
> > diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> > index e53f0b6..b7234be 100644
> > --- a/package/systemd/systemd.mk
> > +++ b/package/systemd/systemd.mk
> > @@ -8,15 +8,31 @@ SYSTEMD_VERSION = 239
> > SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
> > SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
> > SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
> > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > SYSTEMD_INSTALL_STAGING = YES
> > +else
> > +SYSTEMD_INSTALL_STAGING = NO
> > +SYSTEMD_INSTALL_TARGET = NO
> > +endif
> > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > +SYSTEMD_INSTALL_IMAGES = YES
> > +ifeq ($(BR2_i386),y)
> > +SYSTEMD_IMGARCH = ia32
> > +else ifeq ($(BR2_x86_64),y)
> > +SYSTEMD_IMGARCH = x64
> > +endif
> > +endif
> > SYSTEMD_DEPENDENCIES = \
> > host-gperf \
> > host-intltool \
> > - kmod \
> > libcap \
> > util-linux
> >
> > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > +SYSTEMD_DEPENDENCIES += \
> > + kmod
> > SYSTEMD_PROVIDES = udev
> > +endif
> >
> > SYSTEMD_CONF_OPTS += \
> > -Drootlibdir='/usr/lib' \
> > @@ -24,8 +40,6 @@ SYSTEMD_CONF_OPTS += \
> > -Dman=false \
> > -Dima=false \
> > -Dlibcryptsetup=false \
> > - -Defi=false \
> > - -Dgnu-efi=false \
> > -Dldconfig=false \
> > -Ddefault-dnssec=no \
> > -Dtests=false \
> > @@ -404,4 +418,37 @@ endef
> > SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
> > SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
> >
> > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > +SYSTEMD_DEPENDENCIES += gnu-efi
> > +SYSTEMD_CONF_OPTS += \
> > + -Defi=true \
> > + -Dgnu-efi=true \
> > + -Defi-cc=$(TARGET_CC) \
> > + -Defi-ld=$(TARGET_LD) \
> > + -Defi-libdir=$(STAGING_DIR)/usr/lib \
> > + -Defi-ldsdir=$(STAGING_DIR)/usr/lib \
> > + -Defi-includedir=$(STAGING_DIR)/usr/include/efi \
> > +
> > +ifneq ($(BR2_INIT_SYSTEMD),y)
> > +define SYSTEMD_BUILD_CMDS
> > + $(TARGET_MAKE_ENV) $(SYSTEMD_NINJA_ENV) \
> > + $(NINJA) $(NINJA_OPTS) -C $(SYSTEMD_SRCDIR)/build \
> > + src/boot/efi/{systemd-boot$(SYSTEMD_IMGARCH).efi,linux$(SYSTEMD_IMGARCH).efi.stub}
> > +endef
> > +endif
> > +
> > +define SYSTEMD_INSTALL_IMAGES_CMDS
> > + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_IMGARCH).efi \
> > + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_IMGARCH).efi
> > + echo "boot$(SYSTEMD_IMGARCH).efi" > \
> > + $(BINARIES_DIR)/efi-part/startup.nsh
> > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/loader.conf \
> > + $(BINARIES_DIR)/efi-part/loader/loader.conf
> > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/buildroot.conf \
> > + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
> > +endef
> > +else
> > +SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> > +endif
> > +
> > $(eval $(meson-package))
> > diff --git a/system/Config.in b/system/Config.in
> > index 9e34f11..773a2cc 100644
> > --- a/system/Config.in
> > +++ b/system/Config.in
> > @@ -133,6 +133,7 @@ config BR2_INIT_SYSTEMD
> > depends on !BR2_STATIC_LIBS
> > depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> > select BR2_ROOTFS_MERGED_USR
> > + select BR2_PACKAGE_BUILD_SYSTEMD
> > select BR2_PACKAGE_SYSTEMD
> >
> > comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10"
> > --
> > 2.7.4
> >
>
> --
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> '------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 9:12 ` James Hilliard
@ 2018-12-15 10:27 ` Yann E. MORIN
2018-12-15 10:43 ` Peter Korsgaard
2018-12-15 10:43 ` James Hilliard
0 siblings, 2 replies; 11+ messages in thread
From: Yann E. MORIN @ 2018-12-15 10:27 UTC (permalink / raw)
To: buildroot
James, All,
On 2018-12-15 02:12 -0700, James Hilliard spake thusly:
> On Sat, Dec 15, 2018 at 1:59 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > On 2018-12-14 19:42 +0800, james.hilliard1 at gmail.com spake thusly:
> > > From: James Hilliard <james.hilliard1@gmail.com>
> > >
> > > This is essentially the successor to gummiboot.
> >
> > First, this patch is huge, it does many tricky things, so the commit
> > log can't be that short. You need to explain in the commit log what
> > this patch does, why it needs to do it.
> >
> > Second, the patch basically does three different things:
> > - change stuff in the meson-packae infrastructure
> Yeah, this can def be split off, it's to fix an issue with meson
> requiring cpu family to be normalized(it only seems to be an issue for
> meson.build files that have cpu family detection however).
Then just submit it as a separate patch of its own.
If this change was needed because of systemd-boot, then you can send a
patch series to make it explicit that they are part of a same job, with
the front patches needed by later patches in the series.
> > - change stuff in the systemd package
> > - adds a new virtual boot package
> These kind of go together, all the changes in the systemd package are
> essentially adding systemd-boot package infrastructure.
No, sorry, I don't buy it. You can do changes in a package in a patch,
that paves the way for another patch to use those changes.
In this case (but read below [*]), a first patch would change systemd so
that it can be built without being the init system; then a second patch
would add systemd-boot, that relies on building systemd even if it is
not an init system.
> > This is a good indication that there should be _at least_ three patches,
> > one for each of the above changes, each with a detailed commit log that
> > explains what the change does and why it has to be done). Patches should
> > do a complete change of their own, yet be atomic (i.e. can't be split).
> > Here it is obvious that the patch can be split. And if it can't then you
> > have to say why in the commit log, again.
> >
> > Third, the new virtual boot package has no provider, so that's a
> > indication that something is wrong with that patch.
> So the virtual package is really just there so that there's an entry
> in the boot menu instead of packages for systemd-boot.
[*] Sorry, but I am still not convinced that we need all that complexity
and why we can't just build systemd-boot as yet anotehr component of
systemd *in* the systemd package, i.e. in package/systemd/systemd.mk,
like we do for the other components (e.g. systemd-networkd or -resolved,
etc...)
> > You need to clearly explain what is going on here, because all I can
> > think is, why can't we simply build the systemd-boot component of
> > systemd directly from the systemd package itself? (Yeah, I think I know
> > the answer, but you have to explain it in the commit log. And no, it
> > can't just be "but this is a bootloader, it has to have an entry in
> > boot/": we have other bootloaders elsewhere, e.g. rpi-firmware, which
> > do not live in boot/ (to my own dismay, but that's another story.))
> I did it this way so that it's clear that systemd-boot can be built
> without a systemd init system.
There, _that_ is the reason for all this complexity.
So, let me suggest two alternative options that avoid all this mess:
1- make systemd-boot available only for systemd-based init,
2- just do a systemd-boot package (in boot/) that is a whole package on
its own, and just happens to build just the systemd-boot part of
systemd.
I would very much favour the first option, because it is very simple, as
it just requires a *few* tweaks in the existing sytemd.mk, i.e.
basically:
ifeq ($()BR2_PACKAGES_SYSTEMD_BOOT,y)
SYSTEMD_CONF_OPTS += \
-Defi=true \
-Dgnu-efi=true \
-Dcc-efi=blabla \
[...]
else
SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
endif
Also, I wonder if it ever makes sense to provide systemd-boot to
non-systemd init systems to begin with.
Baring that, option 2 is pretty simple as well. It's a separate package
that just happens to share its source code with another one, like we
have with mesa3d and mesa3d-headers (just as an example).
> Would it make sense to move all
> bootloaders to be under the boot menu?
No, that ship has long sailed now, let's not revisit this.
Regards,
Yann E. MORIN.
> >
> > Regards,
> > Yann E. MORIN.
> >
> > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> > > ---
> > > DEVELOPERS | 1 +
> > > boot/Config.in | 1 +
> > > boot/systemd-boot/Config.in | 23 ++++++++++++++
> > > boot/systemd-boot/systemd-boot.mk | 7 +++++
> > > package/meson/cross-compilation.conf.in | 1 +
> > > package/meson/meson.mk | 41 ++++++++++++++++++++++++-
> > > package/systemd/Config.in | 54 +++++++++++++++++++++++++--------
> > > package/systemd/buildroot.conf | 3 ++
> > > package/systemd/loader.conf | 2 ++
> > > package/systemd/systemd.mk | 53 ++++++++++++++++++++++++++++++--
> > > system/Config.in | 1 +
> > > 11 files changed, 171 insertions(+), 16 deletions(-)
> > > create mode 100644 boot/systemd-boot/Config.in
> > > create mode 100644 boot/systemd-boot/systemd-boot.mk
> > > create mode 100644 package/systemd/buildroot.conf
> > > create mode 100644 package/systemd/loader.conf
> > >
> > > diff --git a/DEVELOPERS b/DEVELOPERS
> > > index 4192681..93599fe 100644
> > > --- a/DEVELOPERS
> > > +++ b/DEVELOPERS
> > > @@ -995,6 +995,7 @@ F: configs/pine64_defconfig
> > > F: configs/pine64_sopine_defconfig
> > >
> > > N: James Hilliard <james.hilliard1@gmail.com>
> > > +F: boot/systemd-boot/
> > > F: package/python-aiodns/
> > > F: package/python-aiohttp/
> > > F: package/python-aiohttp-jinja2/
> > > diff --git a/boot/Config.in b/boot/Config.in
> > > index 8e0c8e5..5b7f606 100644
> > > --- a/boot/Config.in
> > > +++ b/boot/Config.in
> > > @@ -16,6 +16,7 @@ source "boot/mxs-bootlets/Config.in"
> > > source "boot/riscv-pk/Config.in"
> > > source "boot/s500-bootloader/Config.in"
> > > source "boot/syslinux/Config.in"
> > > +source "boot/systemd-boot/Config.in"
> > > source "boot/ts4800-mbrboot/Config.in"
> > > source "boot/uboot/Config.in"
> > > source "boot/vexpress-firmware/Config.in"
> > > diff --git a/boot/systemd-boot/Config.in b/boot/systemd-boot/Config.in
> > > new file mode 100644
> > > index 0000000..7c64cef
> > > --- /dev/null
> > > +++ b/boot/systemd-boot/Config.in
> > > @@ -0,0 +1,23 @@
> > > +config BR2_TARGET_SYSTEMD_BOOT
> > > + bool "systemd-boot"
> > > + depends on BR2_i386 || BR2_x86_64
> > > + select BR2_PACKAGE_BUILD_SYSTEMD
> > > + select BR2_PACKAGE_SYSTEMD
> > > + select BR2_PACKAGE_GNU_EFI
> > > + help
> > > + systemd-boot is a simple UEFI boot manager which executes
> > > + configured EFI images. The default entry is selected by a
> > > + configured pattern (glob) or an on-screen menu.
> > > +
> > > + systemd-boot operates on the EFI System Partition (ESP)
> > > + only. Configuration file fragments, kernels, initrds, other
> > > + EFI images need to reside on the ESP. Linux kernels need to
> > > + be built with CONFIG_EFI_STUB to be able to be directly
> > > + executed as an EFI image.
> > > +
> > > + See the Grub2 help text for details on preparing an EFI
> > > + capable disk image using systemd-boot: the instructions are
> > > + exactly the same, except that the systemd-boot configuration
> > > + files will be located in /loader/ inside the EFI partition.
> > > +
> > > + https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
> > > \ No newline at end of file
> > > diff --git a/boot/systemd-boot/systemd-boot.mk b/boot/systemd-boot/systemd-boot.mk
> > > new file mode 100644
> > > index 0000000..5854024
> > > --- /dev/null
> > > +++ b/boot/systemd-boot/systemd-boot.mk
> > > @@ -0,0 +1,7 @@
> > > +################################################################################
> > > +#
> > > +# systemd-boot
> > > +#
> > > +################################################################################
> > > +
> > > +$(eval $(virtual-package))
> > > diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> > > index 0eec740..fc8e27f 100644
> > > --- a/package/meson/cross-compilation.conf.in
> > > +++ b/package/meson/cross-compilation.conf.in
> > > @@ -11,6 +11,7 @@ strip = '@TARGET_CROSS at strip'
> > > pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> > >
> > > [properties]
> > > +needs_exe_wrapper = true
> > > c_args = [@TARGET_CFLAGS@]
> > > c_link_args = [@TARGET_LDFLAGS@]
> > > cpp_args = [@TARGET_CXXFLAGS@]
> > > diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> > > index e1675c2..d9ad2fc 100644
> > > --- a/package/meson/meson.mk
> > > +++ b/package/meson/meson.mk
> > > @@ -15,6 +15,45 @@ HOST_MESON_NEEDS_HOST_PYTHON = python3
> > >
> > > HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN))
> > > HOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)
> > > +ifeq ($(BR2_arcle),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > > +else ifeq ($(BR2_arceb),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > > +else ifeq ($(BR2_arm),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > > +else ifeq ($(BR2_armeb),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > > +else ifeq ($(BR2_aarch64),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > > +else ifeq ($(BR2_aarch64_be),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > > +else ifeq ($(BR2_i386),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = x86
> > > +else ifeq ($(BR2_mips),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > > +else ifeq ($(BR2_mipsel),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > > +else ifeq ($(BR2_mips64),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > > +else ifeq ($(BR2_mips64el),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > > +else ifeq ($(BR2_powerpc),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = ppc
> > > +else ifeq ($(BR2_powerpc64),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > > +else ifeq ($(BR2_powerpc64le),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > > +else ifeq ($(BR2_riscv),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = riscv32
> > > +else ifeq ($(BR2_sparc),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = sparc
> > > +else ifeq ($(BR2_sparc64),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = sparc64
> > > +else ifeq ($(BR2_x86_64),y)
> > > +HOST_MESON_TARGET_CPU_FAMILY = x86_64
> > > +else
> > > +HOST_MESON_TARGET_CPU_FAMILY = $(ARCH)
> > > +endif
> > >
> > > HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`)
> > > HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
> > > @@ -23,7 +62,7 @@ HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARG
> > > define HOST_MESON_INSTALL_CROSS_CONF
> > > mkdir -p $(HOST_DIR)/etc/meson
> > > sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
> > > - -e "s%@TARGET_ARCH@%$(ARCH)%g" \
> > > + -e "s%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g" \
> > > -e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \
> > > -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
> > > -e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \
> > > diff --git a/package/systemd/Config.in b/package/systemd/Config.in
> > > index 25f322e..c8fa786 100644
> > > --- a/package/systemd/Config.in
> > > +++ b/package/systemd/Config.in
> > > @@ -7,27 +7,30 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
> > > BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \
> > > BR2_aarch64 || BR2_m68k || BR2_arc
> > >
> > > +config BR2_PACKAGE_BUILD_SYSTEMD
> > > + bool
> > > +
> > > menuconfig BR2_PACKAGE_SYSTEMD
> > > bool "systemd"
> > > - depends on BR2_INIT_SYSTEMD
> > > + depends on BR2_PACKAGE_BUILD_SYSTEMD
> > > depends on !BR2_STATIC_LIBS # kmod
> > > depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
> > > depends on BR2_USE_MMU # dbus
> > > - select BR2_PACKAGE_HAS_UDEV
> > > - select BR2_PACKAGE_DBUS # runtime dependency only
> > > + select BR2_PACKAGE_HAS_UDEV if BR2_INIT_SYSTEMD
> > > + select BR2_PACKAGE_DBUS if BR2_INIT_SYSTEMD # runtime dependency only
> > > select BR2_PACKAGE_LIBCAP
> > > select BR2_PACKAGE_UTIL_LINUX
> > > - select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> > > + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID if BR2_INIT_SYSTEMD
> > > select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> > > - select BR2_PACKAGE_UTIL_LINUX_BINARIES
> > > + select BR2_PACKAGE_UTIL_LINUX_BINARIES if BR2_INIT_SYSTEMD
> > > select BR2_PACKAGE_UTIL_LINUX_MOUNT
> > > - select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
> > > - select BR2_PACKAGE_UTIL_LINUX_FSCK
> > > - select BR2_PACKAGE_KMOD
> > > - select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
> > > - select BR2_PACKAGE_KMOD_TOOLS
> > > - select BR2_TARGET_TZ_INFO
> > > - select BR2_NEEDS_HOST_UTF8_LOCALE
> > > + select BR2_PACKAGE_UTIL_LINUX_NOLOGIN if BR2_INIT_SYSTEMD
> > > + select BR2_PACKAGE_UTIL_LINUX_FSCK if BR2_INIT_SYSTEMD
> > > + select BR2_PACKAGE_KMOD if BR2_INIT_SYSTEMD
> > > + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_INIT_SYSTEMD # kmod-tools
> > > + select BR2_PACKAGE_KMOD_TOOLS if BR2_INIT_SYSTEMD
> > > + select BR2_TARGET_TZ_INFO if BR2_INIT_SYSTEMD
> > > + select BR2_NEEDS_HOST_UTF8_LOCALE if BR2_INIT_SYSTEMD
> > > help
> > > systemd is a system and service manager for Linux,
> > > compatible with SysV and LSB init scripts. systemd provides
> > > @@ -76,9 +79,11 @@ if BR2_PACKAGE_SYSTEMD
> > >
> > > config BR2_PACKAGE_PROVIDES_UDEV
> > > default "systemd"
> > > + depends on BR2_INIT_SYSTEMD
> > >
> > > config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> > > bool "HTTP server for journal events"
> > > + depends on BR2_INIT_SYSTEMD
> > > select BR2_PACKAGE_LIBMICROHTTPD
> > > help
> > > systemd-journal-gatewayd serves journal events over the
> > > @@ -89,6 +94,7 @@ config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> > >
> > > config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> > > bool "enable backlight support"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-backlight is a service that restores the display
> > > backlight brightness at early boot and saves it at shutdown.
> > > @@ -97,6 +103,7 @@ config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> > >
> > > config BR2_PACKAGE_SYSTEMD_BINFMT
> > > bool "enable binfmt tool"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-binfmt is an early boot service that registers
> > > additional binary formats for executables in the kernel.
> > > @@ -105,6 +112,7 @@ config BR2_PACKAGE_SYSTEMD_BINFMT
> > >
> > > config BR2_PACKAGE_SYSTEMD_COREDUMP
> > > bool "enable coredump hook"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-coredump can be used as a helper binary by the
> > > kernel when a user space program receives a fatal signal and
> > > @@ -114,6 +122,7 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP
> > >
> > > config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> > > bool "enable firstboot support"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-firstboot initializes the most basic system settings
> > > interactively on the first boot.
> > > @@ -122,6 +131,7 @@ config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> > >
> > > config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > > bool "enable hibernation support"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > When this features is enabled, additional tools and services
> > > are built to support suspending and resuming the system.
> > > @@ -131,6 +141,7 @@ config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > > config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > > bool "enable hostname daemon"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-hostnamed is a system service that may be used as a
> > > mechanism to change the system's hostname.
> > > @@ -140,6 +151,7 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > > config BR2_PACKAGE_SYSTEMD_HWDB
> > > bool "enable hwdb installation"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > Enables hardware database installation to /usr/lib/udev/hwdb.d
> > >
> > > @@ -150,6 +162,7 @@ config BR2_PACKAGE_SYSTEMD_HWDB
> > >
> > > config BR2_PACKAGE_SYSTEMD_IMPORTD
> > > bool "enable import daemon"
> > > + depends on BR2_INIT_SYSTEMD
> > > depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
> > > select BR2_PACKAGE_LIBCURL
> > > select BR2_PACKAGE_LIBGCRYPT
> > > @@ -166,6 +179,7 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD
> > >
> > > config BR2_PACKAGE_SYSTEMD_LOCALED
> > > bool "enable locale daemon"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-localed is a system service that may be used as
> > > mechanism to change the system locale settings, as well as
> > > @@ -175,6 +189,7 @@ config BR2_PACKAGE_SYSTEMD_LOCALED
> > >
> > > config BR2_PACKAGE_SYSTEMD_LOGIND
> > > bool "enable login daemon"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-logind is a system service that manages user logins.
> > >
> > > @@ -182,6 +197,7 @@ config BR2_PACKAGE_SYSTEMD_LOGIND
> > >
> > > config BR2_PACKAGE_SYSTEMD_MACHINED
> > > bool "enable machine daemon"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-machined is a system service that keeps track of
> > > virtual machines and containers, and processes belonging to
> > > @@ -192,6 +208,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED
> > > config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > > bool "enable myhostname NSS plugin"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > nss-myhostname is a plug-in module for the GNU Name Service
> > > Switch (NSS) functionality of the GNU C Library (glibc),
> > > @@ -203,6 +220,7 @@ config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > > config BR2_PACKAGE_SYSTEMD_NETWORKD
> > > bool "enable network manager"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-networkd is a system service that manages networks.
> > > It detects and configures network devices as they appear, as
> > > @@ -215,6 +233,7 @@ config BR2_PACKAGE_SYSTEMD_NETWORKD
> > >
> > > config BR2_PACKAGE_SYSTEMD_POLKIT
> > > bool "enable polkit support"
> > > + depends on BR2_INIT_SYSTEMD
> > > depends on BR2_TOOLCHAIN_USES_GLIBC # polkit
> > > select BR2_PACKAGE_POLKIT
> > > help
> > > @@ -226,10 +245,12 @@ config BR2_PACKAGE_SYSTEMD_POLKIT
> > > http://wiki.freedesktop.org/www/Software/polkit/
> > >
> > > comment "polkit support needs a glibc toolchain"
> > > + depends on BR2_INIT_SYSTEMD
> > > depends on !BR2_TOOLCHAIN_USES_GLIBC
> > >
> > > config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> > > bool "enable quotacheck tools"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-quotacheck is a service responsible for file system
> > > quota checks. It is run once at boot after all necessary
> > > @@ -240,6 +261,7 @@ config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> > >
> > > config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > > bool "enable random-seed support"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-random-seed is a service that restores the random
> > > seed of the system at early boot and saves it at
> > > @@ -251,6 +273,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > > config BR2_PACKAGE_SYSTEMD_RESOLVED
> > > bool "enable resolve daemon"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-resolved is a system service that provides network
> > > name resolution to local applications. It implements a
> > > @@ -261,6 +284,7 @@ config BR2_PACKAGE_SYSTEMD_RESOLVED
> > >
> > > config BR2_PACKAGE_SYSTEMD_RFKILL
> > > bool "enable rfkill tools"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-rfkill is a service that restores the RF kill switch
> > > state at early boot and saves it at shutdown.
> > > @@ -269,6 +293,7 @@ config BR2_PACKAGE_SYSTEMD_RFKILL
> > >
> > > config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> > > bool "enable SMACK support"
> > > + depends on BR2_INIT_SYSTEMD
> > > select BR2_PACKAGE_ATTR
> > > select BR2_PACKAGE_SMACK
> > > help
> > > @@ -283,6 +308,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> > >
> > > config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > > bool "enable sysusers support"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-sysusers creates system users and groups, based on
> > > the file format and location specified in sysusers.d(5).
> > > @@ -292,6 +318,7 @@ config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > > config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > > bool "enable timedate daemon"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-timedated is a system service that may be used as a
> > > mechanism to change the system clock and timezone, as well
> > > @@ -302,6 +329,7 @@ config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > > config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > > bool "enable timesync daemon"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-timesyncd is a service that may be used to
> > > synchronize the local system clock with a Network Time
> > > @@ -315,6 +343,7 @@ config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > > config BR2_PACKAGE_SYSTEMD_TMPFILES
> > > bool "enable tmpfiles support"
> > > default y
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-tmpfiles creates, deletes, and cleans up volatile
> > > and temporary files and directories, based on the
> > > @@ -325,6 +354,7 @@ config BR2_PACKAGE_SYSTEMD_TMPFILES
> > >
> > > config BR2_PACKAGE_SYSTEMD_VCONSOLE
> > > bool "enable vconsole tool"
> > > + depends on BR2_INIT_SYSTEMD
> > > help
> > > systemd-vconsole-setup is an early boot service that
> > > configures the virtual console font and console keymap.
> > > diff --git a/package/systemd/buildroot.conf b/package/systemd/buildroot.conf
> > > new file mode 100644
> > > index 0000000..16d4d85
> > > --- /dev/null
> > > +++ b/package/systemd/buildroot.conf
> > > @@ -0,0 +1,3 @@
> > > +title Buildroot
> > > +linux /bzImage
> > > +options root=/dev/sda2 rootwait console=tty1
> > > diff --git a/package/systemd/loader.conf b/package/systemd/loader.conf
> > > new file mode 100644
> > > index 0000000..93b77b8
> > > --- /dev/null
> > > +++ b/package/systemd/loader.conf
> > > @@ -0,0 +1,2 @@
> > > +timeout 3
> > > +default buildroot
> > > diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> > > index e53f0b6..b7234be 100644
> > > --- a/package/systemd/systemd.mk
> > > +++ b/package/systemd/systemd.mk
> > > @@ -8,15 +8,31 @@ SYSTEMD_VERSION = 239
> > > SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
> > > SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
> > > SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
> > > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > > SYSTEMD_INSTALL_STAGING = YES
> > > +else
> > > +SYSTEMD_INSTALL_STAGING = NO
> > > +SYSTEMD_INSTALL_TARGET = NO
> > > +endif
> > > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > > +SYSTEMD_INSTALL_IMAGES = YES
> > > +ifeq ($(BR2_i386),y)
> > > +SYSTEMD_IMGARCH = ia32
> > > +else ifeq ($(BR2_x86_64),y)
> > > +SYSTEMD_IMGARCH = x64
> > > +endif
> > > +endif
> > > SYSTEMD_DEPENDENCIES = \
> > > host-gperf \
> > > host-intltool \
> > > - kmod \
> > > libcap \
> > > util-linux
> > >
> > > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > > +SYSTEMD_DEPENDENCIES += \
> > > + kmod
> > > SYSTEMD_PROVIDES = udev
> > > +endif
> > >
> > > SYSTEMD_CONF_OPTS += \
> > > -Drootlibdir='/usr/lib' \
> > > @@ -24,8 +40,6 @@ SYSTEMD_CONF_OPTS += \
> > > -Dman=false \
> > > -Dima=false \
> > > -Dlibcryptsetup=false \
> > > - -Defi=false \
> > > - -Dgnu-efi=false \
> > > -Dldconfig=false \
> > > -Ddefault-dnssec=no \
> > > -Dtests=false \
> > > @@ -404,4 +418,37 @@ endef
> > > SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
> > > SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
> > >
> > > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > > +SYSTEMD_DEPENDENCIES += gnu-efi
> > > +SYSTEMD_CONF_OPTS += \
> > > + -Defi=true \
> > > + -Dgnu-efi=true \
> > > + -Defi-cc=$(TARGET_CC) \
> > > + -Defi-ld=$(TARGET_LD) \
> > > + -Defi-libdir=$(STAGING_DIR)/usr/lib \
> > > + -Defi-ldsdir=$(STAGING_DIR)/usr/lib \
> > > + -Defi-includedir=$(STAGING_DIR)/usr/include/efi \
> > > +
> > > +ifneq ($(BR2_INIT_SYSTEMD),y)
> > > +define SYSTEMD_BUILD_CMDS
> > > + $(TARGET_MAKE_ENV) $(SYSTEMD_NINJA_ENV) \
> > > + $(NINJA) $(NINJA_OPTS) -C $(SYSTEMD_SRCDIR)/build \
> > > + src/boot/efi/{systemd-boot$(SYSTEMD_IMGARCH).efi,linux$(SYSTEMD_IMGARCH).efi.stub}
> > > +endef
> > > +endif
> > > +
> > > +define SYSTEMD_INSTALL_IMAGES_CMDS
> > > + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_IMGARCH).efi \
> > > + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_IMGARCH).efi
> > > + echo "boot$(SYSTEMD_IMGARCH).efi" > \
> > > + $(BINARIES_DIR)/efi-part/startup.nsh
> > > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/loader.conf \
> > > + $(BINARIES_DIR)/efi-part/loader/loader.conf
> > > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/buildroot.conf \
> > > + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
> > > +endef
> > > +else
> > > +SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> > > +endif
> > > +
> > > $(eval $(meson-package))
> > > diff --git a/system/Config.in b/system/Config.in
> > > index 9e34f11..773a2cc 100644
> > > --- a/system/Config.in
> > > +++ b/system/Config.in
> > > @@ -133,6 +133,7 @@ config BR2_INIT_SYSTEMD
> > > depends on !BR2_STATIC_LIBS
> > > depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> > > select BR2_ROOTFS_MERGED_USR
> > > + select BR2_PACKAGE_BUILD_SYSTEMD
> > > select BR2_PACKAGE_SYSTEMD
> > >
> > > comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10"
> > > --
> > > 2.7.4
> > >
> >
> > --
> > .-----------------.--------------------.------------------.--------------------.
> > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> > | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> > '------------------------------^-------^------------------^--------------------'
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 10:27 ` Yann E. MORIN
@ 2018-12-15 10:43 ` Peter Korsgaard
2018-12-15 10:47 ` James Hilliard
2018-12-15 10:49 ` Yann E. MORIN
2018-12-15 10:43 ` James Hilliard
1 sibling, 2 replies; 11+ messages in thread
From: Peter Korsgaard @ 2018-12-15 10:43 UTC (permalink / raw)
To: buildroot
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
Hi,
> Also, I wonder if it ever makes sense to provide systemd-boot to
> non-systemd init systems to begin with.
I agree with everything Yann wrote.
One feature of systemd-boot that some people (E.G. me) might find
interesting even if they do not use systemd as init system is the fact
that it comes with an EFI stub loader that allows you to combine Linux
kernel, hardcoded command line and initramfs into a single (potentially
signed) EFI PE image with objcopy:
objcopy \
--add-section .cmdline=cmdline --change-section-vma .osrel=0x20000 \
--add-section .linux=linux --change-section-vma .linux=0x30000 \
--add-section .initrd=initrd --change-section-vma .initrd=0x3000000 \
stubx64.efi linux.efi
For some use cases (E.G. if these are not built by the same defconfigs
or for A/B boot with different Linux command line) this late binding may
be preferable to just building a Linux kernel with compile time
hardcoded command line and embedded initramfs.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 10:27 ` Yann E. MORIN
2018-12-15 10:43 ` Peter Korsgaard
@ 2018-12-15 10:43 ` James Hilliard
2018-12-15 11:00 ` Yann E. MORIN
1 sibling, 1 reply; 11+ messages in thread
From: James Hilliard @ 2018-12-15 10:43 UTC (permalink / raw)
To: buildroot
On Sat, Dec 15, 2018 at 3:27 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> James, All,
>
> On 2018-12-15 02:12 -0700, James Hilliard spake thusly:
> > On Sat, Dec 15, 2018 at 1:59 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > > On 2018-12-14 19:42 +0800, james.hilliard1 at gmail.com spake thusly:
> > > > From: James Hilliard <james.hilliard1@gmail.com>
> > > >
> > > > This is essentially the successor to gummiboot.
> > >
> > > First, this patch is huge, it does many tricky things, so the commit
> > > log can't be that short. You need to explain in the commit log what
> > > this patch does, why it needs to do it.
> > >
> > > Second, the patch basically does three different things:
> > > - change stuff in the meson-packae infrastructure
> > Yeah, this can def be split off, it's to fix an issue with meson
> > requiring cpu family to be normalized(it only seems to be an issue for
> > meson.build files that have cpu family detection however).
>
> Then just submit it as a separate patch of its own.
>
> If this change was needed because of systemd-boot, then you can send a
> patch series to make it explicit that they are part of a same job, with
> the front patches needed by later patches in the series.
>
> > > - change stuff in the systemd package
> > > - adds a new virtual boot package
> > These kind of go together, all the changes in the systemd package are
> > essentially adding systemd-boot package infrastructure.
>
> No, sorry, I don't buy it. You can do changes in a package in a patch,
> that paves the way for another patch to use those changes.
>
> In this case (but read below [*]), a first patch would change systemd so
> that it can be built without being the init system; then a second patch
> would add systemd-boot, that relies on building systemd even if it is
> not an init system.
>
> > > This is a good indication that there should be _at least_ three patches,
> > > one for each of the above changes, each with a detailed commit log that
> > > explains what the change does and why it has to be done). Patches should
> > > do a complete change of their own, yet be atomic (i.e. can't be split).
> > > Here it is obvious that the patch can be split. And if it can't then you
> > > have to say why in the commit log, again.
> > >
> > > Third, the new virtual boot package has no provider, so that's a
> > > indication that something is wrong with that patch.
> > So the virtual package is really just there so that there's an entry
> > in the boot menu instead of packages for systemd-boot.
>
> [*] Sorry, but I am still not convinced that we need all that complexity
> and why we can't just build systemd-boot as yet anotehr component of
> systemd *in* the systemd package, i.e. in package/systemd/systemd.mk,
> like we do for the other components (e.g. systemd-networkd or -resolved,
> etc...)
>
> > > You need to clearly explain what is going on here, because all I can
> > > think is, why can't we simply build the systemd-boot component of
> > > systemd directly from the systemd package itself? (Yeah, I think I know
> > > the answer, but you have to explain it in the commit log. And no, it
> > > can't just be "but this is a bootloader, it has to have an entry in
> > > boot/": we have other bootloaders elsewhere, e.g. rpi-firmware, which
> > > do not live in boot/ (to my own dismay, but that's another story.))
> > I did it this way so that it's clear that systemd-boot can be built
> > without a systemd init system.
>
> There, _that_ is the reason for all this complexity.
>
> So, let me suggest two alternative options that avoid all this mess:
>
> 1- make systemd-boot available only for systemd-based init,
>
> 2- just do a systemd-boot package (in boot/) that is a whole package on
> its own, and just happens to build just the systemd-boot part of
> systemd.
>
> I would very much favour the first option, because it is very simple, as
> it just requires a *few* tweaks in the existing sytemd.mk, i.e.
> basically:
>
> ifeq ($()BR2_PACKAGES_SYSTEMD_BOOT,y)
> SYSTEMD_CONF_OPTS += \
> -Defi=true \
> -Dgnu-efi=true \
> -Dcc-efi=blabla \
> [...]
> else
> SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> endif
it would also need the SYSTEMD_INSTALL_IMAGES_CMDS part.
>
> Also, I wonder if it ever makes sense to provide systemd-boot to
> non-systemd init systems to begin with.
I think it does, systemd-boot is even designed to boot operating
systems without systemd, including windows.
>
> Baring that, option 2 is pretty simple as well. It's a separate package
> that just happens to share its source code with another one, like we
> have with mesa3d and mesa3d-headers (just as an example).
I tried that approach first in my v1 patch, I abandoned it since
systemd-boot needed to be built at the same time as the userspace
tools for systems that have a systemd init system for the integration
to work properly.
>
> > Would it make sense to move all
> > bootloaders to be under the boot menu?
>
> No, that ship has long sailed now, let's not revisit this.
>
> Regards,
> Yann E. MORIN.
>
> > >
> > > Regards,
> > > Yann E. MORIN.
> > >
> > > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> > > > ---
> > > > DEVELOPERS | 1 +
> > > > boot/Config.in | 1 +
> > > > boot/systemd-boot/Config.in | 23 ++++++++++++++
> > > > boot/systemd-boot/systemd-boot.mk | 7 +++++
> > > > package/meson/cross-compilation.conf.in | 1 +
> > > > package/meson/meson.mk | 41 ++++++++++++++++++++++++-
> > > > package/systemd/Config.in | 54 +++++++++++++++++++++++++--------
> > > > package/systemd/buildroot.conf | 3 ++
> > > > package/systemd/loader.conf | 2 ++
> > > > package/systemd/systemd.mk | 53 ++++++++++++++++++++++++++++++--
> > > > system/Config.in | 1 +
> > > > 11 files changed, 171 insertions(+), 16 deletions(-)
> > > > create mode 100644 boot/systemd-boot/Config.in
> > > > create mode 100644 boot/systemd-boot/systemd-boot.mk
> > > > create mode 100644 package/systemd/buildroot.conf
> > > > create mode 100644 package/systemd/loader.conf
> > > >
> > > > diff --git a/DEVELOPERS b/DEVELOPERS
> > > > index 4192681..93599fe 100644
> > > > --- a/DEVELOPERS
> > > > +++ b/DEVELOPERS
> > > > @@ -995,6 +995,7 @@ F: configs/pine64_defconfig
> > > > F: configs/pine64_sopine_defconfig
> > > >
> > > > N: James Hilliard <james.hilliard1@gmail.com>
> > > > +F: boot/systemd-boot/
> > > > F: package/python-aiodns/
> > > > F: package/python-aiohttp/
> > > > F: package/python-aiohttp-jinja2/
> > > > diff --git a/boot/Config.in b/boot/Config.in
> > > > index 8e0c8e5..5b7f606 100644
> > > > --- a/boot/Config.in
> > > > +++ b/boot/Config.in
> > > > @@ -16,6 +16,7 @@ source "boot/mxs-bootlets/Config.in"
> > > > source "boot/riscv-pk/Config.in"
> > > > source "boot/s500-bootloader/Config.in"
> > > > source "boot/syslinux/Config.in"
> > > > +source "boot/systemd-boot/Config.in"
> > > > source "boot/ts4800-mbrboot/Config.in"
> > > > source "boot/uboot/Config.in"
> > > > source "boot/vexpress-firmware/Config.in"
> > > > diff --git a/boot/systemd-boot/Config.in b/boot/systemd-boot/Config.in
> > > > new file mode 100644
> > > > index 0000000..7c64cef
> > > > --- /dev/null
> > > > +++ b/boot/systemd-boot/Config.in
> > > > @@ -0,0 +1,23 @@
> > > > +config BR2_TARGET_SYSTEMD_BOOT
> > > > + bool "systemd-boot"
> > > > + depends on BR2_i386 || BR2_x86_64
> > > > + select BR2_PACKAGE_BUILD_SYSTEMD
> > > > + select BR2_PACKAGE_SYSTEMD
> > > > + select BR2_PACKAGE_GNU_EFI
> > > > + help
> > > > + systemd-boot is a simple UEFI boot manager which executes
> > > > + configured EFI images. The default entry is selected by a
> > > > + configured pattern (glob) or an on-screen menu.
> > > > +
> > > > + systemd-boot operates on the EFI System Partition (ESP)
> > > > + only. Configuration file fragments, kernels, initrds, other
> > > > + EFI images need to reside on the ESP. Linux kernels need to
> > > > + be built with CONFIG_EFI_STUB to be able to be directly
> > > > + executed as an EFI image.
> > > > +
> > > > + See the Grub2 help text for details on preparing an EFI
> > > > + capable disk image using systemd-boot: the instructions are
> > > > + exactly the same, except that the systemd-boot configuration
> > > > + files will be located in /loader/ inside the EFI partition.
> > > > +
> > > > + https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
> > > > \ No newline at end of file
> > > > diff --git a/boot/systemd-boot/systemd-boot.mk b/boot/systemd-boot/systemd-boot.mk
> > > > new file mode 100644
> > > > index 0000000..5854024
> > > > --- /dev/null
> > > > +++ b/boot/systemd-boot/systemd-boot.mk
> > > > @@ -0,0 +1,7 @@
> > > > +################################################################################
> > > > +#
> > > > +# systemd-boot
> > > > +#
> > > > +################################################################################
> > > > +
> > > > +$(eval $(virtual-package))
> > > > diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> > > > index 0eec740..fc8e27f 100644
> > > > --- a/package/meson/cross-compilation.conf.in
> > > > +++ b/package/meson/cross-compilation.conf.in
> > > > @@ -11,6 +11,7 @@ strip = '@TARGET_CROSS at strip'
> > > > pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> > > >
> > > > [properties]
> > > > +needs_exe_wrapper = true
> > > > c_args = [@TARGET_CFLAGS@]
> > > > c_link_args = [@TARGET_LDFLAGS@]
> > > > cpp_args = [@TARGET_CXXFLAGS@]
> > > > diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> > > > index e1675c2..d9ad2fc 100644
> > > > --- a/package/meson/meson.mk
> > > > +++ b/package/meson/meson.mk
> > > > @@ -15,6 +15,45 @@ HOST_MESON_NEEDS_HOST_PYTHON = python3
> > > >
> > > > HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN))
> > > > HOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)
> > > > +ifeq ($(BR2_arcle),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > > > +else ifeq ($(BR2_arceb),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = arc
> > > > +else ifeq ($(BR2_arm),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > > > +else ifeq ($(BR2_armeb),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = arm
> > > > +else ifeq ($(BR2_aarch64),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > > > +else ifeq ($(BR2_aarch64_be),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = aarch64
> > > > +else ifeq ($(BR2_i386),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = x86
> > > > +else ifeq ($(BR2_mips),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > > > +else ifeq ($(BR2_mipsel),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = mips
> > > > +else ifeq ($(BR2_mips64),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > > > +else ifeq ($(BR2_mips64el),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = mips64
> > > > +else ifeq ($(BR2_powerpc),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = ppc
> > > > +else ifeq ($(BR2_powerpc64),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > > > +else ifeq ($(BR2_powerpc64le),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = ppc64
> > > > +else ifeq ($(BR2_riscv),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = riscv32
> > > > +else ifeq ($(BR2_sparc),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = sparc
> > > > +else ifeq ($(BR2_sparc64),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = sparc64
> > > > +else ifeq ($(BR2_x86_64),y)
> > > > +HOST_MESON_TARGET_CPU_FAMILY = x86_64
> > > > +else
> > > > +HOST_MESON_TARGET_CPU_FAMILY = $(ARCH)
> > > > +endif
> > > >
> > > > HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`)
> > > > HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
> > > > @@ -23,7 +62,7 @@ HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARG
> > > > define HOST_MESON_INSTALL_CROSS_CONF
> > > > mkdir -p $(HOST_DIR)/etc/meson
> > > > sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
> > > > - -e "s%@TARGET_ARCH@%$(ARCH)%g" \
> > > > + -e "s%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g" \
> > > > -e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \
> > > > -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
> > > > -e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \
> > > > diff --git a/package/systemd/Config.in b/package/systemd/Config.in
> > > > index 25f322e..c8fa786 100644
> > > > --- a/package/systemd/Config.in
> > > > +++ b/package/systemd/Config.in
> > > > @@ -7,27 +7,30 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
> > > > BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \
> > > > BR2_aarch64 || BR2_m68k || BR2_arc
> > > >
> > > > +config BR2_PACKAGE_BUILD_SYSTEMD
> > > > + bool
> > > > +
> > > > menuconfig BR2_PACKAGE_SYSTEMD
> > > > bool "systemd"
> > > > - depends on BR2_INIT_SYSTEMD
> > > > + depends on BR2_PACKAGE_BUILD_SYSTEMD
> > > > depends on !BR2_STATIC_LIBS # kmod
> > > > depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
> > > > depends on BR2_USE_MMU # dbus
> > > > - select BR2_PACKAGE_HAS_UDEV
> > > > - select BR2_PACKAGE_DBUS # runtime dependency only
> > > > + select BR2_PACKAGE_HAS_UDEV if BR2_INIT_SYSTEMD
> > > > + select BR2_PACKAGE_DBUS if BR2_INIT_SYSTEMD # runtime dependency only
> > > > select BR2_PACKAGE_LIBCAP
> > > > select BR2_PACKAGE_UTIL_LINUX
> > > > - select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> > > > + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID if BR2_INIT_SYSTEMD
> > > > select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> > > > - select BR2_PACKAGE_UTIL_LINUX_BINARIES
> > > > + select BR2_PACKAGE_UTIL_LINUX_BINARIES if BR2_INIT_SYSTEMD
> > > > select BR2_PACKAGE_UTIL_LINUX_MOUNT
> > > > - select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
> > > > - select BR2_PACKAGE_UTIL_LINUX_FSCK
> > > > - select BR2_PACKAGE_KMOD
> > > > - select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
> > > > - select BR2_PACKAGE_KMOD_TOOLS
> > > > - select BR2_TARGET_TZ_INFO
> > > > - select BR2_NEEDS_HOST_UTF8_LOCALE
> > > > + select BR2_PACKAGE_UTIL_LINUX_NOLOGIN if BR2_INIT_SYSTEMD
> > > > + select BR2_PACKAGE_UTIL_LINUX_FSCK if BR2_INIT_SYSTEMD
> > > > + select BR2_PACKAGE_KMOD if BR2_INIT_SYSTEMD
> > > > + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_INIT_SYSTEMD # kmod-tools
> > > > + select BR2_PACKAGE_KMOD_TOOLS if BR2_INIT_SYSTEMD
> > > > + select BR2_TARGET_TZ_INFO if BR2_INIT_SYSTEMD
> > > > + select BR2_NEEDS_HOST_UTF8_LOCALE if BR2_INIT_SYSTEMD
> > > > help
> > > > systemd is a system and service manager for Linux,
> > > > compatible with SysV and LSB init scripts. systemd provides
> > > > @@ -76,9 +79,11 @@ if BR2_PACKAGE_SYSTEMD
> > > >
> > > > config BR2_PACKAGE_PROVIDES_UDEV
> > > > default "systemd"
> > > > + depends on BR2_INIT_SYSTEMD
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> > > > bool "HTTP server for journal events"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > select BR2_PACKAGE_LIBMICROHTTPD
> > > > help
> > > > systemd-journal-gatewayd serves journal events over the
> > > > @@ -89,6 +94,7 @@ config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> > > > bool "enable backlight support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-backlight is a service that restores the display
> > > > backlight brightness at early boot and saves it at shutdown.
> > > > @@ -97,6 +103,7 @@ config BR2_PACKAGE_SYSTEMD_BACKLIGHT
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_BINFMT
> > > > bool "enable binfmt tool"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-binfmt is an early boot service that registers
> > > > additional binary formats for executables in the kernel.
> > > > @@ -105,6 +112,7 @@ config BR2_PACKAGE_SYSTEMD_BINFMT
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_COREDUMP
> > > > bool "enable coredump hook"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-coredump can be used as a helper binary by the
> > > > kernel when a user space program receives a fatal signal and
> > > > @@ -114,6 +122,7 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> > > > bool "enable firstboot support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-firstboot initializes the most basic system settings
> > > > interactively on the first boot.
> > > > @@ -122,6 +131,7 @@ config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > > > bool "enable hibernation support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > When this features is enabled, additional tools and services
> > > > are built to support suspending and resuming the system.
> > > > @@ -131,6 +141,7 @@ config BR2_PACKAGE_SYSTEMD_HIBERNATE
> > > > config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > > > bool "enable hostname daemon"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-hostnamed is a system service that may be used as a
> > > > mechanism to change the system's hostname.
> > > > @@ -140,6 +151,7 @@ config BR2_PACKAGE_SYSTEMD_HOSTNAMED
> > > > config BR2_PACKAGE_SYSTEMD_HWDB
> > > > bool "enable hwdb installation"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > Enables hardware database installation to /usr/lib/udev/hwdb.d
> > > >
> > > > @@ -150,6 +162,7 @@ config BR2_PACKAGE_SYSTEMD_HWDB
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_IMPORTD
> > > > bool "enable import daemon"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
> > > > select BR2_PACKAGE_LIBCURL
> > > > select BR2_PACKAGE_LIBGCRYPT
> > > > @@ -166,6 +179,7 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_LOCALED
> > > > bool "enable locale daemon"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-localed is a system service that may be used as
> > > > mechanism to change the system locale settings, as well as
> > > > @@ -175,6 +189,7 @@ config BR2_PACKAGE_SYSTEMD_LOCALED
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_LOGIND
> > > > bool "enable login daemon"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-logind is a system service that manages user logins.
> > > >
> > > > @@ -182,6 +197,7 @@ config BR2_PACKAGE_SYSTEMD_LOGIND
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_MACHINED
> > > > bool "enable machine daemon"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-machined is a system service that keeps track of
> > > > virtual machines and containers, and processes belonging to
> > > > @@ -192,6 +208,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED
> > > > config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > > > bool "enable myhostname NSS plugin"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > nss-myhostname is a plug-in module for the GNU Name Service
> > > > Switch (NSS) functionality of the GNU C Library (glibc),
> > > > @@ -203,6 +220,7 @@ config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
> > > > config BR2_PACKAGE_SYSTEMD_NETWORKD
> > > > bool "enable network manager"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-networkd is a system service that manages networks.
> > > > It detects and configures network devices as they appear, as
> > > > @@ -215,6 +233,7 @@ config BR2_PACKAGE_SYSTEMD_NETWORKD
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_POLKIT
> > > > bool "enable polkit support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > depends on BR2_TOOLCHAIN_USES_GLIBC # polkit
> > > > select BR2_PACKAGE_POLKIT
> > > > help
> > > > @@ -226,10 +245,12 @@ config BR2_PACKAGE_SYSTEMD_POLKIT
> > > > http://wiki.freedesktop.org/www/Software/polkit/
> > > >
> > > > comment "polkit support needs a glibc toolchain"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > depends on !BR2_TOOLCHAIN_USES_GLIBC
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> > > > bool "enable quotacheck tools"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-quotacheck is a service responsible for file system
> > > > quota checks. It is run once at boot after all necessary
> > > > @@ -240,6 +261,7 @@ config BR2_PACKAGE_SYSTEMD_QUOTACHECK
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > > > bool "enable random-seed support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-random-seed is a service that restores the random
> > > > seed of the system at early boot and saves it at
> > > > @@ -251,6 +273,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED
> > > > config BR2_PACKAGE_SYSTEMD_RESOLVED
> > > > bool "enable resolve daemon"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-resolved is a system service that provides network
> > > > name resolution to local applications. It implements a
> > > > @@ -261,6 +284,7 @@ config BR2_PACKAGE_SYSTEMD_RESOLVED
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_RFKILL
> > > > bool "enable rfkill tools"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-rfkill is a service that restores the RF kill switch
> > > > state at early boot and saves it at shutdown.
> > > > @@ -269,6 +293,7 @@ config BR2_PACKAGE_SYSTEMD_RFKILL
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> > > > bool "enable SMACK support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > select BR2_PACKAGE_ATTR
> > > > select BR2_PACKAGE_SMACK
> > > > help
> > > > @@ -283,6 +308,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > > > bool "enable sysusers support"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-sysusers creates system users and groups, based on
> > > > the file format and location specified in sysusers.d(5).
> > > > @@ -292,6 +318,7 @@ config BR2_PACKAGE_SYSTEMD_SYSUSERS
> > > > config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > > > bool "enable timedate daemon"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-timedated is a system service that may be used as a
> > > > mechanism to change the system clock and timezone, as well
> > > > @@ -302,6 +329,7 @@ config BR2_PACKAGE_SYSTEMD_TIMEDATED
> > > > config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > > > bool "enable timesync daemon"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-timesyncd is a service that may be used to
> > > > synchronize the local system clock with a Network Time
> > > > @@ -315,6 +343,7 @@ config BR2_PACKAGE_SYSTEMD_TIMESYNCD
> > > > config BR2_PACKAGE_SYSTEMD_TMPFILES
> > > > bool "enable tmpfiles support"
> > > > default y
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-tmpfiles creates, deletes, and cleans up volatile
> > > > and temporary files and directories, based on the
> > > > @@ -325,6 +354,7 @@ config BR2_PACKAGE_SYSTEMD_TMPFILES
> > > >
> > > > config BR2_PACKAGE_SYSTEMD_VCONSOLE
> > > > bool "enable vconsole tool"
> > > > + depends on BR2_INIT_SYSTEMD
> > > > help
> > > > systemd-vconsole-setup is an early boot service that
> > > > configures the virtual console font and console keymap.
> > > > diff --git a/package/systemd/buildroot.conf b/package/systemd/buildroot.conf
> > > > new file mode 100644
> > > > index 0000000..16d4d85
> > > > --- /dev/null
> > > > +++ b/package/systemd/buildroot.conf
> > > > @@ -0,0 +1,3 @@
> > > > +title Buildroot
> > > > +linux /bzImage
> > > > +options root=/dev/sda2 rootwait console=tty1
> > > > diff --git a/package/systemd/loader.conf b/package/systemd/loader.conf
> > > > new file mode 100644
> > > > index 0000000..93b77b8
> > > > --- /dev/null
> > > > +++ b/package/systemd/loader.conf
> > > > @@ -0,0 +1,2 @@
> > > > +timeout 3
> > > > +default buildroot
> > > > diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> > > > index e53f0b6..b7234be 100644
> > > > --- a/package/systemd/systemd.mk
> > > > +++ b/package/systemd/systemd.mk
> > > > @@ -8,15 +8,31 @@ SYSTEMD_VERSION = 239
> > > > SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
> > > > SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README)
> > > > SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
> > > > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > > > SYSTEMD_INSTALL_STAGING = YES
> > > > +else
> > > > +SYSTEMD_INSTALL_STAGING = NO
> > > > +SYSTEMD_INSTALL_TARGET = NO
> > > > +endif
> > > > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > > > +SYSTEMD_INSTALL_IMAGES = YES
> > > > +ifeq ($(BR2_i386),y)
> > > > +SYSTEMD_IMGARCH = ia32
> > > > +else ifeq ($(BR2_x86_64),y)
> > > > +SYSTEMD_IMGARCH = x64
> > > > +endif
> > > > +endif
> > > > SYSTEMD_DEPENDENCIES = \
> > > > host-gperf \
> > > > host-intltool \
> > > > - kmod \
> > > > libcap \
> > > > util-linux
> > > >
> > > > +ifeq ($(BR2_INIT_SYSTEMD),y)
> > > > +SYSTEMD_DEPENDENCIES += \
> > > > + kmod
> > > > SYSTEMD_PROVIDES = udev
> > > > +endif
> > > >
> > > > SYSTEMD_CONF_OPTS += \
> > > > -Drootlibdir='/usr/lib' \
> > > > @@ -24,8 +40,6 @@ SYSTEMD_CONF_OPTS += \
> > > > -Dman=false \
> > > > -Dima=false \
> > > > -Dlibcryptsetup=false \
> > > > - -Defi=false \
> > > > - -Dgnu-efi=false \
> > > > -Dldconfig=false \
> > > > -Ddefault-dnssec=no \
> > > > -Dtests=false \
> > > > @@ -404,4 +418,37 @@ endef
> > > > SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
> > > > SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
> > > >
> > > > +ifeq ($(BR2_TARGET_SYSTEMD_BOOT),y)
> > > > +SYSTEMD_DEPENDENCIES += gnu-efi
> > > > +SYSTEMD_CONF_OPTS += \
> > > > + -Defi=true \
> > > > + -Dgnu-efi=true \
> > > > + -Defi-cc=$(TARGET_CC) \
> > > > + -Defi-ld=$(TARGET_LD) \
> > > > + -Defi-libdir=$(STAGING_DIR)/usr/lib \
> > > > + -Defi-ldsdir=$(STAGING_DIR)/usr/lib \
> > > > + -Defi-includedir=$(STAGING_DIR)/usr/include/efi \
> > > > +
> > > > +ifneq ($(BR2_INIT_SYSTEMD),y)
> > > > +define SYSTEMD_BUILD_CMDS
> > > > + $(TARGET_MAKE_ENV) $(SYSTEMD_NINJA_ENV) \
> > > > + $(NINJA) $(NINJA_OPTS) -C $(SYSTEMD_SRCDIR)/build \
> > > > + src/boot/efi/{systemd-boot$(SYSTEMD_IMGARCH).efi,linux$(SYSTEMD_IMGARCH).efi.stub}
> > > > +endef
> > > > +endif
> > > > +
> > > > +define SYSTEMD_INSTALL_IMAGES_CMDS
> > > > + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_IMGARCH).efi \
> > > > + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_IMGARCH).efi
> > > > + echo "boot$(SYSTEMD_IMGARCH).efi" > \
> > > > + $(BINARIES_DIR)/efi-part/startup.nsh
> > > > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/loader.conf \
> > > > + $(BINARIES_DIR)/efi-part/loader/loader.conf
> > > > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/buildroot.conf \
> > > > + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf
> > > > +endef
> > > > +else
> > > > +SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> > > > +endif
> > > > +
> > > > $(eval $(meson-package))
> > > > diff --git a/system/Config.in b/system/Config.in
> > > > index 9e34f11..773a2cc 100644
> > > > --- a/system/Config.in
> > > > +++ b/system/Config.in
> > > > @@ -133,6 +133,7 @@ config BR2_INIT_SYSTEMD
> > > > depends on !BR2_STATIC_LIBS
> > > > depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> > > > select BR2_ROOTFS_MERGED_USR
> > > > + select BR2_PACKAGE_BUILD_SYSTEMD
> > > > select BR2_PACKAGE_SYSTEMD
> > > >
> > > > comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10"
> > > > --
> > > > 2.7.4
> > > >
> > >
> > > --
> > > .-----------------.--------------------.------------------.--------------------.
> > > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> > > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> > > | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> > > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> > > '------------------------------^-------^------------------^--------------------'
>
> --
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> '------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 10:43 ` Peter Korsgaard
@ 2018-12-15 10:47 ` James Hilliard
2018-12-15 10:49 ` Yann E. MORIN
1 sibling, 0 replies; 11+ messages in thread
From: James Hilliard @ 2018-12-15 10:47 UTC (permalink / raw)
To: buildroot
On Sat, Dec 15, 2018 at 3:43 AM Peter Korsgaard <peter@korsgaard.com> wrote:
>
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
>
> Hi,
>
> > Also, I wonder if it ever makes sense to provide systemd-boot to
> > non-systemd init systems to begin with.
>
> I agree with everything Yann wrote.
>
> One feature of systemd-boot that some people (E.G. me) might find
> interesting even if they do not use systemd as init system is the fact
> that it comes with an EFI stub loader that allows you to combine Linux
> kernel, hardcoded command line and initramfs into a single (potentially
> signed) EFI PE image with objcopy:
Yeah, could be a useful option.
>
> objcopy \
> --add-section .cmdline=cmdline --change-section-vma .osrel=0x20000 \
> --add-section .linux=linux --change-section-vma .linux=0x30000 \
> --add-section .initrd=initrd --change-section-vma .initrd=0x3000000 \
> stubx64.efi linux.efi
>
> For some use cases (E.G. if these are not built by the same defconfigs
> or for A/B boot with different Linux command line) this late binding may
> be preferable to just building a Linux kernel with compile time
> hardcoded command line and embedded initramfs.
Yeah, maybe there should be a config option for that as well, I'm just
using the kernel compile time options.
>
> --
> Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 10:43 ` Peter Korsgaard
2018-12-15 10:47 ` James Hilliard
@ 2018-12-15 10:49 ` Yann E. MORIN
1 sibling, 0 replies; 11+ messages in thread
From: Yann E. MORIN @ 2018-12-15 10:49 UTC (permalink / raw)
To: buildroot
Peter, All,
On 2018-12-15 11:43 +0100, Peter Korsgaard spake thusly:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
> > Also, I wonder if it ever makes sense to provide systemd-boot to
> > non-systemd init systems to begin with.
> One feature of systemd-boot that some people (E.G. me) might find
> interesting even if they do not use systemd as init system is the fact
> that it comes with an EFI stub loader that allows you to combine Linux
> kernel, hardcoded command line and initramfs into a single (potentially
> signed) EFI PE image with objcopy:
>
> objcopy \
> --add-section .cmdline=cmdline --change-section-vma .osrel=0x20000 \
> --add-section .linux=linux --change-section-vma .linux=0x30000 \
> --add-section .initrd=initrd --change-section-vma .initrd=0x3000000 \
> stubx64.efi linux.efi
>
> For some use cases (E.G. if these are not built by the same defconfigs
> or for A/B boot with different Linux command line) this late binding may
> be preferable to just building a Linux kernel with compile time
> hardcoded command line and embedded initramfs.
Ok, then it makes sense we can have systemd-boot without systemd init.
Let's try to find a solution for that, then.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 10:43 ` James Hilliard
@ 2018-12-15 11:00 ` Yann E. MORIN
2018-12-15 11:09 ` James Hilliard
0 siblings, 1 reply; 11+ messages in thread
From: Yann E. MORIN @ 2018-12-15 11:00 UTC (permalink / raw)
To: buildroot
James, All,
On 2018-12-15 03:43 -0700, James Hilliard spake thusly:
> On Sat, Dec 15, 2018 at 3:27 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > On 2018-12-15 02:12 -0700, James Hilliard spake thusly:
[--SNIP--]
> > > I did it this way so that it's clear that systemd-boot can be built
> > > without a systemd init system.
> >
> > There, _that_ is the reason for all this complexity.
> >
> > So, let me suggest two alternative options that avoid all this mess:
> >
> > 1- make systemd-boot available only for systemd-based init,
> >
> > 2- just do a systemd-boot package (in boot/) that is a whole package on
> > its own, and just happens to build just the systemd-boot part of
> > systemd.
> >
> > I would very much favour the first option, because it is very simple, as
> > it just requires a *few* tweaks in the existing sytemd.mk, i.e.
> > basically:
> >
> > ifeq ($()BR2_PACKAGES_SYSTEMD_BOOT,y)
> > SYSTEMD_CONF_OPTS += \
> > -Defi=true \
> > -Dgnu-efi=true \
> > -Dcc-efi=blabla \
> > [...]
> > else
> > SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> > endif
> it would also need the SYSTEMD_INSTALL_IMAGES_CMDS part.
Yes, obviously my code snippet was there just as a seed for a proper,
complete change...
> > Also, I wonder if it ever makes sense to provide systemd-boot to
> > non-systemd init systems to begin with.
> I think it does,
Yes, Peter provided a good use-case, indeed.
> systemd-boot is even designed to boot operating
> systems without systemd, including windows.
Aha, you almost got me there, I almost thought you were serious (in the
Buildroot context, I mean). ;-)
> > Baring that, option 2 is pretty simple as well. It's a separate package
> > that just happens to share its source code with another one, like we
> > have with mesa3d and mesa3d-headers (just as an example).
> I tried that approach first in my v1 patch, I abandoned it since
Yet, I think we should really go that route.
> systemd-boot needed to be built at the same time as the userspace
> tools for systems that have a systemd init system for the integration
> to work properly.
OK, so we need to think it a bit, then. Is it the boot part that needs
the userland part, of the userland that needs the boot part, of they
both need to know each other?
One option I can think of quickly, is that we could have a systemd-boot
package that is only available when systemd is not enabled, and an option
in systemd to install the boot part when systemd is enabled.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 11:00 ` Yann E. MORIN
@ 2018-12-15 11:09 ` James Hilliard
2018-12-15 13:47 ` Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: James Hilliard @ 2018-12-15 11:09 UTC (permalink / raw)
To: buildroot
On Sat, Dec 15, 2018 at 4:00 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> James, All,
>
> On 2018-12-15 03:43 -0700, James Hilliard spake thusly:
> > On Sat, Dec 15, 2018 at 3:27 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > > On 2018-12-15 02:12 -0700, James Hilliard spake thusly:
> [--SNIP--]
> > > > I did it this way so that it's clear that systemd-boot can be built
> > > > without a systemd init system.
> > >
> > > There, _that_ is the reason for all this complexity.
> > >
> > > So, let me suggest two alternative options that avoid all this mess:
> > >
> > > 1- make systemd-boot available only for systemd-based init,
> > >
> > > 2- just do a systemd-boot package (in boot/) that is a whole package on
> > > its own, and just happens to build just the systemd-boot part of
> > > systemd.
> > >
> > > I would very much favour the first option, because it is very simple, as
> > > it just requires a *few* tweaks in the existing sytemd.mk, i.e.
> > > basically:
> > >
> > > ifeq ($()BR2_PACKAGES_SYSTEMD_BOOT,y)
> > > SYSTEMD_CONF_OPTS += \
> > > -Defi=true \
> > > -Dgnu-efi=true \
> > > -Dcc-efi=blabla \
> > > [...]
> > > else
> > > SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false
> > > endif
> > it would also need the SYSTEMD_INSTALL_IMAGES_CMDS part.
>
> Yes, obviously my code snippet was there just as a seed for a proper,
> complete change...
>
> > > Also, I wonder if it ever makes sense to provide systemd-boot to
> > > non-systemd init systems to begin with.
> > I think it does,
>
> Yes, Peter provided a good use-case, indeed.
>
> > systemd-boot is even designed to boot operating
> > systems without systemd, including windows.
>
> Aha, you almost got me there, I almost thought you were serious (in the
> Buildroot context, I mean). ;-)
Heh, was just making a point that it wasn't dependent on a systemd userspace.
>
> > > Baring that, option 2 is pretty simple as well. It's a separate package
> > > that just happens to share its source code with another one, like we
> > > have with mesa3d and mesa3d-headers (just as an example).
> > I tried that approach first in my v1 patch, I abandoned it since
>
> Yet, I think we should really go that route.
>
> > systemd-boot needed to be built at the same time as the userspace
> > tools for systems that have a systemd init system for the integration
> > to work properly.
>
> OK, so we need to think it a bit, then. Is it the boot part that needs
> the userland part, of the userland that needs the boot part, of they
> both need to know each other?
Mostly userland that needs to know the boot part, the boot part itself
doesn't really care what OS it is booting.
>
> One option I can think of quickly, is that we could have a systemd-boot
> package that is only available when systemd is not enabled, and an option
> in systemd to install the boot part when systemd is enabled.
I was trying to avoid having fully separate packages since that would
create a lot of maintenance overhead keeping both up to date as well.
Is there something wrong with having a fake boot package that
configures the appropriate options in the primary systemd package?
>
> Regards,
> Yann E. MORIN.
>
> --
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> '------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package
2018-12-15 11:09 ` James Hilliard
@ 2018-12-15 13:47 ` Yann E. MORIN
0 siblings, 0 replies; 11+ messages in thread
From: Yann E. MORIN @ 2018-12-15 13:47 UTC (permalink / raw)
To: buildroot
James, All,
On 2018-12-15 04:09 -0700, James Hilliard spake thusly:
> On Sat, Dec 15, 2018 at 4:00 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > On 2018-12-15 03:43 -0700, James Hilliard spake thusly:
> > > systemd-boot needed to be built at the same time as the userspace
> > > tools for systems that have a systemd init system for the integration
> > > to work properly.
> > OK, so we need to think it a bit, then. Is it the boot part that needs
> > the userland part, of the userland that needs the boot part, of they
> > both need to know each other?
> Mostly userland that needs to know the boot part, the boot part itself
> doesn't really care what OS it is booting.
OK, so we should be able to build systemd-boot as its own package.
Then, we just configure systemd with boot support.
> > One option I can think of quickly, is that we could have a systemd-boot
> > package that is only available when systemd is not enabled, and an option
> > in systemd to install the boot part when systemd is enabled.
> I was trying to avoid having fully separate packages since that would
> create a lot of maintenance overhead keeping both up to date as well.
> Is there something wrong with having a fake boot package that
> configures the appropriate options in the primary systemd package?
What is wrong is that it makes the systemd package *and* the init
selectionmuch more copmplex, and this is not acceptable (IMHO).
I'd rather have a second package that is trivial, with mimimum, if at
all, changes in the main systemd package.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2018-12-15 13:47 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-14 11:42 [Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package james.hilliard1 at gmail.com
2018-12-15 8:58 ` Yann E. MORIN
2018-12-15 9:12 ` James Hilliard
2018-12-15 10:27 ` Yann E. MORIN
2018-12-15 10:43 ` Peter Korsgaard
2018-12-15 10:47 ` James Hilliard
2018-12-15 10:49 ` Yann E. MORIN
2018-12-15 10:43 ` James Hilliard
2018-12-15 11:00 ` Yann E. MORIN
2018-12-15 11:09 ` James Hilliard
2018-12-15 13:47 ` Yann E. MORIN
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox