Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Roman Khimov <roman@khimov.ru>
To: openembedded-devel@lists.openembedded.org
Cc: yocto@yoctoproject.org,
	OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [oe] RFC: Reference updater filesystem
Date: Tue, 24 Nov 2015 13:39:32 +0300	[thread overview]
Message-ID: <14934048.INuFbpGn5J@bancha.hex> (raw)
In-Reply-To: <56538808.5050606@linux.intel.com>

В письме от 23 ноября 2015 15:41:28 пользователь Mariano Lopez написал:
> 1. Use a separate partition for the configuration.
>    a. The pro of this method is the partition is not touched during the
> update.
>    b. The con of this method is the configuration is not directly in
> rootfs (example: /etc).

That's the right solution, although to do it really right (at least IMO) you 
need to implement the /usr merge [1] (and that's orthogonal to using or not 
using systemd), which can also help you make your /usr read-only (because 
that's just code and static data) with read-write / for user data of various 
sorts.

> 3. Have an OverlayFS for the rootfs or the partition that have the
> configuration.
>    a. The pro is the configuration is  "directly" in rootfs.
>    b. The con is there is need to provide a custom init to guarantee the
> Overlay is mounted before the boot process.

And this is the approach I would recommend not doing. I've used UnionFS for 
thing like that (overlaying whole root file system) some 6 years ago, it 
sounded nice and it kinda worked, but it wasn't difficult to make it fail 
(just a little playing with power), we've even seen failures on production 
devices, like when you have whiteout file for directory already written, but 
don't have new files in it yet and that can completely ruin the system.

Also, it usually works better when you don't have any changes in the lower 
layer, but we're talking about updating it here, you can easily end up in a 
situation where you have updated something in the rootfs but that was 
overriden by upper layer and thus your user doesn't see any change.

> With the above information I'm proposing to use a separate partition for
> the configuration; this is because is more reliable and doesn't require
> big changes in the current architecture.
> 
> So, the idea is to have 4 partitions in the media:
> 1. boot. This is the usual boot partition
> 2. data. This will hold the configuration files. Not modified by updates.
> 3. maintenance. This partition will be used to update rootfs.
> 4. rootfs. Partition used for normal operation.

You probably don't need to separate 1 and 3, all the code for system update 
should easily fit into initramfs and just making /boot a bit larger would 
allow you to store some backup rootfs.

Also, you can swap 4 and 2 which will be useful if you're installing on 
different sized storage devices, usually you know good enough the size of your 
rootfs, but you probably want to leave more space for user data if there is an 
opportunity to do so, that's just easier to do with data partition at the end.


[1] http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/


  parent reply	other threads:[~2015-11-24 10:39 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-23 21:41 RFC: Reference updater filesystem Mariano Lopez
2015-11-24  6:06 ` Anders Darander
2015-11-24 18:39   ` [yocto] " Lopez, Mariano
2015-11-24  7:32 ` Randy Witt
2015-11-24 17:19   ` Lopez, Mariano
2015-11-24 10:39 ` Roman Khimov [this message]
2015-11-24 13:47   ` [oe] " Mark Hatle
2015-11-24 17:02     ` [yocto] " Lopez, Mariano
2015-11-24 17:13       ` Mark Hatle
2015-11-24 18:05     ` Roman Khimov
2015-11-24 18:27       ` Mark Hatle
2015-11-24 18:47         ` Roman Khimov
2015-12-03 16:45           ` Mariano Lopez
2015-12-06 11:34             ` Jens Rehsack
     [not found] ` <60350861.Ng52JMGuMb@bancha.hex>
2015-11-24 16:30   ` Lopez, Mariano
2015-11-24 18:10     ` Roman Khimov

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=14934048.INuFbpGn5J@bancha.hex \
    --to=roman@khimov.ru \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=openembedded-devel@lists.openembedded.org \
    --cc=yocto@yoctoproject.org \
    /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