From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Sat, 16 Mar 2019 17:48:14 +0100 Subject: [Buildroot] [PATCH v4 2/2] package/systemd: enable building of systemd-boot In-Reply-To: <20190315222637.2937-2-james.hilliard1@gmail.com> References: <20190315222637.2937-1-james.hilliard1@gmail.com> <20190315222637.2937-2-james.hilliard1@gmail.com> Message-ID: <20190316164814.GA7890@scaer> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net James, All, On 2019-03-16 06:26 +0800, james.hilliard1 at gmail.com spake thusly: > From: James Hilliard > > systemd-boot is the integration of gummiboot into systemd, when > gummiboot is no longer maintained [0]. > > Add an option to build systemd-boot as part of the systemd build. > > Install the boot files, that can serve as a template for the user > to tweak for their system. > > [0] https://cgit.freedesktop.org/gummiboot/commit/?id=55df1539c9d330732e88bd196afee386db6e4a1d > > Signed-off-by: James Hilliard > [yann.morin.1998 at free.fr: > - add missing depends on i386 || x86_64 > - add missing dependency to gnu-efi > - add missing boot files (they will be shared with standalone > systemd-boot later) Since we do not really have a well-defined plan toward actually having a standalone systemd-boot anytime soon, this part (that I wrote) should now be dropped. No need to resend; this can be fixed by whoever applies that patch. Regards, Yann E. MORIN. > ] > Signed-off-by: "Yann E. MORIN" > --- > package/systemd/Config.in | 28 +++++++++++++++++++ > package/systemd/boot-files/buildroot.conf | 3 +++ > package/systemd/boot-files/loader.conf | 2 ++ > package/systemd/systemd.mk | 33 +++++++++++++++++++++++ > 4 files changed, 66 insertions(+) > create mode 100644 package/systemd/boot-files/buildroot.conf > create mode 100644 package/systemd/boot-files/loader.conf > > diff --git a/package/systemd/Config.in b/package/systemd/Config.in > index 490222f376..63d9ea52e3 100644 > --- a/package/systemd/Config.in > +++ b/package/systemd/Config.in > @@ -78,6 +78,34 @@ if BR2_PACKAGE_SYSTEMD > config BR2_PACKAGE_PROVIDES_UDEV > default "systemd" > > +config BR2_PACKAGE_SYSTEMD_BOOT > + bool "systemd-boot" > + depends on BR2_i386 || BR2_x86_64 > + 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/ > + > +config BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH > + string > + default "ia32" if BR2_i386 > + default "x64" if BR2_x86_64 > + depends on BR2_PACKAGE_SYSTEMD_BOOT > + > config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY > bool "HTTP server for journal events" > select BR2_PACKAGE_LIBMICROHTTPD > diff --git a/package/systemd/boot-files/buildroot.conf b/package/systemd/boot-files/buildroot.conf > new file mode 100644 > index 0000000000..16d4d85f4a > --- /dev/null > +++ b/package/systemd/boot-files/buildroot.conf > @@ -0,0 +1,3 @@ > +title Buildroot > +linux /bzImage > +options root=/dev/sda2 rootwait console=tty1 > diff --git a/package/systemd/boot-files/loader.conf b/package/systemd/boot-files/loader.conf > new file mode 100644 > index 0000000000..93b77b8f93 > --- /dev/null > +++ b/package/systemd/boot-files/loader.conf > @@ -0,0 +1,2 @@ > +timeout 3 > +default buildroot > diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk > index 928e2dc1b6..5389b7ae3a 100644 > --- a/package/systemd/systemd.mk > +++ b/package/systemd/systemd.mk > @@ -26,6 +26,7 @@ SYSTEMD_CONF_OPTS += \ > -Dima=false \ > -Defi=false \ > -Dgnu-efi=false \ > + -Dlibcryptsetup=false \ > -Dldconfig=false \ > -Ddefault-dnssec=no \ > -Dtests=false \ > @@ -352,6 +353,34 @@ else > SYSTEMD_CONF_OPTS += -Dhibernate=false > endif > > +ifeq ($(BR2_PACKAGE_SYSTEMD_BOOT),y) > +SYSTEMD_INSTALL_IMAGES = YES > +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 > + > +SYSTEMD_BOOT_EFI_ARCH = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH)) > +define SYSTEMD_INSTALL_BOOT_FILES > + $(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_BOOT_EFI_ARCH).efi \ > + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_BOOT_EFI_ARCH).efi > + echo "boot$(SYSTEMD_BOOT_EFI_ARCH).efi" > \ > + $(BINARIES_DIR)/efi-part/startup.nsh > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/loader.conf \ > + $(BINARIES_DIR)/efi-part/loader/loader.conf > + $(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/buildroot.conf \ > + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf > +endef > + > +else > +SYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false > +endif # BR2_PACKAGE_SYSTEMD_BOOT == y > + > SYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) > ifneq ($(SYSTEMD_FALLBACK_HOSTNAME),) > SYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME) > @@ -376,6 +405,10 @@ SYSTEMD_POST_INSTALL_TARGET_HOOKS += \ > SYSTEMD_INSTALL_MACHINEID_HOOK \ > SYSTEMD_INSTALL_RESOLVCONF_HOOK > > +define SYSTEMD_INSTALL_IMAGES_CMDS > + $(SYSTEMD_INSTALL_BOOT_FILES) > +endef > + > define SYSTEMD_USERS > - - input -1 * - - - Input device group > - - systemd-journal -1 * - - - Journal > -- > 2.17.1 > -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'