Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v4 2/2] package/systemd: enable building of systemd-boot
Date: Sat, 16 Mar 2019 17:48:14 +0100	[thread overview]
Message-ID: <20190316164814.GA7890@scaer> (raw)
In-Reply-To: <20190315222637.2937-2-james.hilliard1@gmail.com>

James, All,

On 2019-03-16 06:26 +0800, james.hilliard1 at gmail.com spake thusly:
> From: James Hilliard <james.hilliard1@gmail.com>
> 
> 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 <james.hilliard1@gmail.com>
> [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" <yann.morin.1998@free.fr>
> ---
>  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.  |
'------------------------------^-------^------------------^--------------------'

      reply	other threads:[~2019-03-16 16:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-15 22:26 [Buildroot] [PATCH v4 1/2] package/gnu-efi: fix gnu-efi in projects using -nostdinc james.hilliard1 at gmail.com
2019-03-15 22:26 ` [Buildroot] [PATCH v4 2/2] package/systemd: enable building of systemd-boot james.hilliard1 at gmail.com
2019-03-16 16:48   ` Yann E. MORIN [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190316164814.GA7890@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox