[Buildroot] [PATCH v2 1/1] boot/systemd-boot: new package

James Hilliard james.hilliard1 at gmail.com
Sat Dec 15 09:12:15 UTC 2018


On Sat, Dec 15, 2018 at 1:59 AM Yann E. MORIN <yann.morin.1998 at free.fr> wrote:
>
> James, All,
>
> On 2018-12-14 19:42 +0800, james.hilliard1 at gmail.com spake thusly:
> > From: James Hilliard <james.hilliard1 at 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 at 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 at 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.  |
> '------------------------------^-------^------------------^--------------------'


More information about the buildroot mailing list