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 23/24 v2] system: make systemd work on a read-only rootfs
Date: Tue, 5 Jul 2016 10:12:44 +0200	[thread overview]
Message-ID: <20160705081244.GF6533@free.fr> (raw)
In-Reply-To: <355fae6a-5a17-f4f0-43c7-05298a71430f@gmail.com>

Romain, All,

On 2016-07-03 14:54 +0200, Romain Naour spake thusly:
> Le 22/06/2016 ? 21:07, Yann E. MORIN a ?crit :
> > When the rootfs is readonly, systemd will expect /var to be writable.
> > Because we do not really have a R/W filesystem to mount on /var, we make
> > it a tmpfs, and use the systemd-tmpfiles feautre to populate it with
> s/feautre/feature/
[--SNIP--]
> Other than small typos highlighted by my mail client ;-)

Typoes fixed, thanks!

Regards,
Yann E. MORIN.

> Reviewed-by: Romain Naour <romain.naour@gmail.com>
> 
> Best regards,
> Romain
> 
> 
> > ---
> > Note: I haven't seen any symlinks installed in the factory so far, but I
> > haven't build a lot of packages yet... So, I'm not sure what to do with
> > the symlinks, especially when a package install relative symlinks...
> > ---
> >  package/skeleton-systemd/skeleton-systemd.mk | 51 ++++++++++++++++++++++++++--
> >  system/Config.in                             |  1 -
> >  2 files changed, 49 insertions(+), 3 deletions(-)
> > 
> > diff --git a/package/skeleton-systemd/skeleton-systemd.mk b/package/skeleton-systemd/skeleton-systemd.mk
> > index b45bbde..c7c2e26 100644
> > --- a/package/skeleton-systemd/skeleton-systemd.mk
> > +++ b/package/skeleton-systemd/skeleton-systemd.mk
> > @@ -36,12 +36,59 @@ ifeq ($(SKELETON_SYSTEM_LOCALTIME),)
> >  SKELETON_SYSTEM_LOCALTIME = Etc/UTC
> >  endif
> >  
> > +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y)
> > +
> > +define SKELETON_SYSTEMD_ROOT_RW
> > +	echo "/dev/root / auto rw 0 1" >$(TARGET_DIR)/etc/fstab
> > +	mkdir -p $(TARGET_DIR)/var
> > +endef
> > +
> > +else
> > +
> > +# On a R/O rootfs, /var is a tmpfs filesystem. So, at build time, we
> > +# redirect /var to the "factory settings" location. Just before the
> > +# filesystem gets created, the /var symlink will be replaced with
> > +# a real (but empty) directory, and the "factory files" will be copied
> > +# back there by the tmpfiles.d mechanism.
> > +define SKELETON_SYSTEMD_ROOT_RO
> > +	mkdir -p $(TARGET_DIR)/etc/systemd/tmpfiles.d
> > +	mkdir -p $(TARGET_DIR)/usr/share/factory
> > +	ln -s usr/share/factory $(TARGET_DIR)/var
> > +	echo "/dev/root / auto ro 0 1" >$(TARGET_DIR)/etc/fstab
> > +	echo "tmpfs /var tmpfs mode=1777 0 0" >>$(TARGET_DIR)/etc/fstab
> > +endef
> > +
> > +define SKELETON_SYSTEMD_VAR_PRE_FS
> > +	rm -f $(TARGET_DIR)/var
> > +	mkdir $(TARGET_DIR)/var
> > +	for i in $(TARGET_DIR)/usr/share/factory/*; do \
> > +		j="$${i##*/}"; \
> > +		if [ -L "$${i}" ]; then \
> > +			printf "L+! /var/%s - - - - %s\n" \
> > +				"$${j}" "../usr/share/factory/$${j}" \
> > +			|| exit 1; \
> > +		else \
> > +			printf "C! /var/%s - - - -\n" "$${j}" \
> > +			|| exit 1; \
> > +		fi; \
> > +	done >$(TARGET_DIR)/etc/systemd/tmpfiles.d/var-factory.conf
> > +endef
> > +SKELETON_SYSTEMD_FS_PRE_CMD_HOOKS += SKELETON_SYSTEMD_VAR_PRE_FS
> > +
> > +define SKELETON_SYSTEMD_VAR_POST_FS
> > +	rm -rf $(TARGET_DIR)/var
> > +	ln -s usr/share/factory $(TARGET_DIR)/var
> > +endef
> > +SKELETON_SYSTEMD_FS_POST_CMD_HOOKS += SKELETON_SYSTEMD_VAR_POST_FS
> > +
> > +endif
> > +
> >  define SKELETON_SYSTEMD_INSTALL_TARGET_CMDS
> >  	mkdir -p $(TARGET_DIR)/etc
> >  	mkdir -p $(TARGET_DIR)/home
> >  	mkdir -p $(TARGET_DIR)/srv
> > -	mkdir -p $(TARGET_DIR)/var
> > -	echo "/dev/root / auto rw 0 1" >$(TARGET_DIR)/etc/fstab
> > +	$(SKELETON_SYSTEMD_ROOT_RO)
> > +	$(SKELETON_SYSTEMD_ROOT_RW)
> >  	ln -sf ../usr/share/zoneinfo/$(SKELETON_SYSTEMD_LOCALTIME) \
> >  		$(TARGET_DIR)/etc/localtime
> >  	$(SKELETON_SYSTEMD_RSYNC_NETWORK)
> > diff --git a/system/Config.in b/system/Config.in
> > index 07af2e0..32d6542 100644
> > --- a/system/Config.in
> > +++ b/system/Config.in
> > @@ -129,7 +129,6 @@ config BR2_INIT_SYSTEMD
> >  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> >  	select BR2_ROOTFS_MERGED_USR
> >  	select BR2_PACKAGE_SYSTEMD
> > -	select BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW
> >  	select BR2_TARGET_TZ_INFO
> >  
> >  comment "systemd needs (e)glibc toolchain, headers >= 3.10"
> > 
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2016-07-05  8:12 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-22 19:07 [Buildroot] [PATCH 00/24 v2] system: properly handle systemd as init system (branch yem/systemd-skeleton) Yann E. MORIN
2016-06-22 19:07 ` [Buildroot] [PATCH 01/24 v2] package/skeleton: remove useless .empty file Yann E. MORIN
2016-07-04  7:28   ` Arnout Vandecappelle
2016-07-05 13:57   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 02/24 v2] system: sysvinit only selects busybox-show-others if busybox is enabled Yann E. MORIN
2016-07-03  7:53   ` Romain Naour
2016-07-04 16:49     ` Yann E. MORIN
2016-07-05 13:59       ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 03/24 v2] package/skeleton: respect variables namespace Yann E. MORIN
2016-07-03  8:15   ` Romain Naour
2016-07-05 13:28   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 04/24 v2] system/skeleton: update etc/mtab with a more sensible link Yann E. MORIN
2016-07-03  8:28   ` Romain Naour
2016-07-04  7:27   ` Arnout Vandecappelle
2016-07-05 13:28   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 05/24 v2] system: systemd only really supports a R/W rootfs Yann E. MORIN
2016-07-03  8:31   ` Romain Naour
2016-07-05 13:29   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 06/24 v2] package/systemd: disabling tty1 getty is a post-install hook Yann E. MORIN
2016-07-03  8:37   ` Romain Naour
2016-07-04 17:13     ` Yann E. MORIN
2016-07-05 13:41   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 07/24 v2] system: provide no default for custom skeleton path Yann E. MORIN
2016-07-03  8:42   ` Romain Naour
2016-07-04  7:30     ` Arnout Vandecappelle
2016-07-04 17:21     ` Yann E. MORIN
2016-07-05 13:59   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 08/24 v2] system: move the rootfs skeleton choice Yann E. MORIN
2016-07-03  8:50   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 09/24 v2] system: do not handle network settings for custom skeleton Yann E. MORIN
2016-07-03  9:00   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 10/24 v2] package/perl: use dummy hostname Yann E. MORIN
2016-07-03  9:05   ` Romain Naour
2016-07-05 13:59   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 11/24 v2] system: do not set hostname and issue for custom skeleton Yann E. MORIN
2016-07-03  9:11   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 12/24 v2] core/pkg-generic: add variable to skip skeleton dependency Yann E. MORIN
2016-07-03  9:30   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 13/24 v2] package/skeleton: add macro to rsync skeleton directory Yann E. MORIN
2016-07-03  9:39   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 14/24 v2] core/pkg-generic: allow packages to declare target-finalize hooks Yann E. MORIN
2016-07-03  9:53   ` Romain Naour
2016-07-05 14:00   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 15/24 v2] packages: use the <PKG>_TARGET_FINALIZE_HOOKS Yann E. MORIN
2016-07-03 10:02   ` Romain Naour
2016-07-04 18:05     ` Yann E. MORIN
2016-07-05 14:01   ` Thomas Petazzoni
2016-06-22 19:07 ` [Buildroot] [PATCH 16/24 v2] package/skeleton: split into sysv and custom skeleton Yann E. MORIN
2016-07-03 10:27   ` Romain Naour
2016-07-05  7:26     ` Yann E. MORIN
2016-06-22 19:07 ` [Buildroot] [PATCH 17/24 v2] package/skeleton: make it a virtual package Yann E. MORIN
2016-07-03 10:47   ` Romain Naour
2016-07-05  7:45     ` Yann E. MORIN
2016-06-22 19:07 ` [Buildroot] [PATCH 18/24 v2] package/skeleton-sysv: split into skeleton-common Yann E. MORIN
2016-07-03 11:05   ` Romain Naour
2016-07-05  7:49     ` Yann E. MORIN
2016-06-22 19:07 ` [Buildroot] [PATCH 19/24 v2] system: split skeleton Yann E. MORIN
2016-07-03 11:22   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 20/24 v2] package/skeleton-systemd: new package Yann E. MORIN
2016-07-03 11:34   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 21/24 v2] system/systemd: needs timezone Yann E. MORIN
2016-07-03 11:41   ` Romain Naour
2016-07-05  8:03     ` Yann E. MORIN
2016-06-22 19:07 ` [Buildroot] [PATCH 22/24 v2] fs: add pre- and post-command hooks Yann E. MORIN
2016-07-03 11:49   ` Romain Naour
2016-06-22 19:07 ` [Buildroot] [PATCH 23/24 v2] system: make systemd work on a read-only rootfs Yann E. MORIN
2016-07-03 12:54   ` Romain Naour
2016-07-05  8:12     ` Yann E. MORIN [this message]
2016-06-22 19:07 ` [Buildroot] [PATCH 24/24 v2] system: allow DHCP interface with systemd-networkd Yann E. MORIN
2016-07-03 12:59   ` Romain Naour
2016-07-06 21:49 ` [Buildroot] [PATCH 00/24 v2] system: properly handle systemd as init system (branch yem/systemd-skeleton) Thomas Petazzoni
2016-07-06 22:34   ` Yann E. MORIN
2016-07-17  8:49     ` Yann E. MORIN

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=20160705081244.GF6533@free.fr \
    --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