All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.