[OE-core] [PATCH 1/1] linux-yocto 4.4: enable overlayfs by default

Bruce Ashfield bruce.ashfield at gmail.com
Tue Apr 5 14:59:58 UTC 2016


On Tue, Apr 5, 2016 at 5:06 AM, Robert Yang <liezhi.yang at windriver.com>
wrote:

>
>
> On 04/05/2016 04:33 PM, Bruce Ashfield wrote:
>
>>
>>
>> On Tue, Apr 5, 2016 at 2:42 AM, Robert Yang <liezhi.yang at windriver.com
>> <mailto:liezhi.yang at windriver.com>> wrote:
>>
>>
>>
>>     On 04/05/2016 02:33 PM, Bruce Ashfield wrote:
>>
>>
>>
>>         On Mon, Apr 4, 2016 at 10:48 PM, Robert Yang <
>> liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>
>>         <mailto:liezhi.yang at windriver.com <mailto:
>> liezhi.yang at windriver.com>>>
>>         wrote:
>>
>>
>>
>>              On 04/05/2016 10:31 AM, Bruce Ashfield wrote:
>>
>>
>>
>>                  On Mon, Apr 4, 2016 at 9:53 PM, Robert Yang
>>         <liezhi.yang at windriver.com <mailto:liezhi.yang at windriver.com>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com> <mailto:
>> liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>>>>
>>                  wrote:
>>
>>
>>                       Hi Bruce,
>>
>>                       How many union fs on Linux, please? AFAIK:
>>                       * unionfs: not supported by kernel any more.
>>                       * aufs
>>                       * overlayfs
>>
>>                       If aufs and overlayfs are conflicted, how about:
>>
>>                       KERNEL_UNION_FS ?=
>> "features/overlayfs/overlayfs.scc"
>>
>>                       KERNEL_EXTRA_FEATURES ?= "[snip] ${KERNEL_UNION_FS}"
>>
>>                       I think that we really need a way to make
>> iso/hddimg work
>>         by default
>>                       to enhance the OOBE.
>>
>>
>>                  That sort of mechanism can work, but not if it is
>> enabled by
>>         default.
>>                  out of box
>>                  experience
>>                  is one thing, but there are plenty of boot and image
>> types that
>>         don't need a
>>                  unionfs, and
>>                  we can't force these as =y for those image types.
>>
>>                  If we make a modular config, and a built-in config, we
>> could
>>         pick the
>>                  modular
>>                  config by
>>                  default, and then have the package list for the images
>> that
>>         need them,
>>                  rdepend
>>                  on the
>>                  appropriate modules.
>>
>>
>>              Sounds good, so how about:
>>
>>              1) Update kernel to make overlayfs as module rather than
>> builtin
>>
>>
>>         Having two fragments make sense. one for built in, and one that
>> is modules.
>>         Since these are
>>         distinct use case both sets of configuration are reasonable.
>>
>>
>>     How about this:
>>
>>     diff --git a/ktypes/preempt-rt/preempt-rt.cfg
>> b/ktypes/preempt-rt/preempt-rt.cfg
>>     index 4c62804..28ad8cf 100644
>>     --- a/ktypes/preempt-rt/preempt-rt.cfg
>>     +++ b/ktypes/preempt-rt/preempt-rt.cfg
>>     @@ -1116,3 +1116,5 @@ CONFIG_CRYPTO_TEST=m
>>       #
>>       CONFIG_LIBCRC32C=m
>>       CONFIG_ZLIB_DEFLATE=m
>>     +
>>     +CONFIG_OVERLAY_FS=m
>>     diff --git a/ktypes/standard/standard.cfg
>> b/ktypes/standard/standard.cfg
>>     index b3dbde5..3dabf49 100644
>>     --- a/ktypes/standard/standard.cfg
>>     +++ b/ktypes/standard/standard.cfg
>>     @@ -1108,3 +1108,5 @@ CONFIG_LIBCRC32C=m
>>       CONFIG_ZLIB_DEFLATE=m
>>
>>       CONFIG_SHMEM=y
>>     +
>>     +CONFIG_OVERLAY_FS=m
>>
>>
>> Nope. See my follow up to the linux-yocto patch .. I was more detailed in
>> my
>> follow up
>> there.
>>
>
> I read that just now, if we don't enable the module in oe-core layer or
> builtin it, I'm fine to leave the live image (iso, hddimg) broken by
> default and document that if you need a read write live image and fix
> the errors, you can enable it from KERNEL_FEATURES ?
>

It would still be nice to do that enablement without needing to rebuild the
kernel completely.
Which is what we'll have if we only have a built-in fragment for overlayfs.

I was saying in my reviews, that having a module config fragment, and
enabling it via a
KERNEL_FEATURES in the main recipes would be ok, as long as that kernel
feature
variable is easy to override and disable it. That gets them built, and
available as packages
for image that want them.

I probably wasn't clear enough on that front, sorry about that!


>
>
>>
>>
>>              2) let core-image-minimal-initramfs RDEPENEDS on the module.
>>
>>
>>         I'd still prefer that this be set in a distro or optional layer.
>> Since why
>>
>>
>>     The live/iso/hddimg is supported by oe-core, all of them are in
>> oe-core layer,
>>     I'm afraid that we can't add it in an extra layer or bbappend.
>>
>>
>> Why not ? There are just as many image types that don't need this
>> support. Why
>> should
>> it be universally build and enabled for a feature that is only used by
>> some boot
>> types.
>>
>> You are missing the point, and there's no justification to globally
>> enable it.
>>
>> What about flash boot, what about boot from specific MTD devices, etc,
>> etc, should
>> they all be enabled by default in the base configs .. just in case
>> someone boots
>> that
>> way ? We'll end up with a giant kernel with everything enabled or as
>> modules if we
>> cover all the cases. These need to be specifically requested and
>> triggered.
>>
>> Just because you are concerned with live iso boot, doesn't mean that
>> others are,
>> and that we should have the overhead everywhere.
>>
>>
>>         should core image
>>         minimal be the target for this ? There are any number of targets
>> that
>>         might be
>>         used for
>>         live boot.
>>
>>
>>     All of them are in oe-core layer, core-image-minimal-initramfs.bb
>>     <http://core-image-minimal-initramfs.bb> is the
>>     default live image in oe-core, I think that add kerne-module-overlay
>> to
>>     its INSTALL is reasonable.
>>
>>
>> But that shouldn't need overlayfs for all configs. I boot initramfs
>> kernels all
>> the time, I have no need
>> for overlay filesystems on those boards.
>>
>> But yes, if you enable a module based overlayfs fragment, and then
>> install the
>> module via an install, it should be ok, since it can be overridden.
>>
>
> Did you mean it in oe-core or out of oe-core such as an external layer or
> bbappend, please ?
>

In a perfect world .. an external layer would be ideal, but we don't have
great
selection of standard options for that (to use as a reference for the core
image
type(s)).  The yocto-bsps layer is one option .. but I don't think we want
to
have this span multiple layers.

What I was saying above means that:

- you'd have a fragment that enabled the overlayfs modules
- you'd have then injected into the kernel config via a variable, that is
then added to KERNEL_FEATURES.
  That variable should be ?= so someone can override it if they see fit.
- your image types that need live boot, could generate the right RDEPENDS
on the kernel package. That
  could be in their image package lists, via a bbclass that generates the
dependency when included, or
  something else that I'm not thinking about.

Am I missing something, or are you not using image-live.bbclass for this ?
or is there some other
way that this is being enabled .. and that I'm missing ?


>
>
>> I hope you are seeing the point of not enabling kernel options "just in
>> case",
>> and why
>> this sort of thing needs to be only built and installed when it is truly
>> needed.
>>
>
> I'm sorry, but I don't think that this is a "just in case" issue, live
> image
> is officially supported by oe-core, I think that we should release a
> workable
> image to the user rather than a half-finished one, currently, for example,
> the obvious errors when boot:
>


There are plenty of boot methods that are supported by the core layers,
different
bootloaders, different devices, different fileystems (think btrfs, LVM,
etc, etc). While
a simpler variant, this is in the same theme.


>
> Populating dev cache
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/rcS.d/S36udev-cache: line 73: can't create /etc/udev-cache.tar.gz:
> Read-only file system
> udev-cache: update failed!
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> rm: can't remove '/etc/udev/cache.data': Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> rm: can't remove '/tmp': Read-only file system
> ln: /tmp/tmp: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> ln: /etc/resolv.conf: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
> /etc/init.d/rc: /etc/rcS.d/S37populate-volatile.sh: line 1: can't create
> /etc/volatile.cache.build: Read-only file system
>
> And it's readonly, the user can change nothing on the system when debug.
>

Yes, we use union filesystems to do read-only boots, but there other ways
to do it (and we have
in the past supported live, read only boots .. without a unionfs at all).

Through this whole exercise, I'm just trying to prevent focus on a single,
current, solution and make
sure that it is flexible for when it inevitably changes in the future, and
to not have a trend of needing
to build in configs like this to support a set of different boot methods.
Since we can no more control
those methods, than we can control the use of a specific kernel, or kernel
config.

If you want, we can work this out via some IRC discussions, etc, to save
everyone getting spammed :)

Cheers,

Bruce


>
> // Robert
>
>
>
>> Bruce
>>
>>
>>     If there are other layers which have their own live image, then they
>> can add
>>     it to their INSTALL.
>>
>>
>>     // Robert
>>
>>
>>         Bruce
>>
>>              // Robert
>>
>>
>>                  Bruce
>>
>>
>>                       // Robert
>>
>>                       On 04/04/2016 07:56 AM, Bruce Ashfield wrote:
>>
>>
>>
>>                           On Sun, Apr 3, 2016 at 5:46 PM, Richard Purdie
>>                           <richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>
>>                  <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>>
>>                           <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>
>>                  <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>>>
>>                           <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>
>>                  <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>>
>>                           <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>
>>                  <mailto:richard.purdie at linuxfoundation.org
>>         <mailto:richard.purdie at linuxfoundation.org>>>>>
>>                           wrote:
>>
>>                                On Sun, 2016-04-03 at 06:11 -0400, Bruce
>> Ashfield
>>         wrote:
>>                                >
>>                                >
>>                                > On Sun, Apr 3, 2016 at 5:58 AM, Robert
>> Yang <
>>                                >liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>> <mailto:
>> liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>>>
>>                           <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>> <mailto:
>> liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>
>>                  <mailto:liezhi.yang at windriver.com
>>         <mailto:liezhi.yang at windriver.com>>>>>
>>
>>                           wrote:
>>                                > > So that iso can work well, otherwise
>> the iso is
>>                  readonly and there
>>                                > > would
>>                                > > be errors. The other way is aufs, but
>>         overlayfs is
>>                  more pupolar and
>>                                > > had
>>                                > > been merged by kernel mainline, we
>> need make
>>         iso work
>>                  well by
>>                                > > default.
>>                                > Nope. As I mentioned before, this can't
>> be a
>>         always on
>>                  default. It
>>                                > will conflict
>>                                > with other unionFS use cases.
>>                                >
>>                                > If you want overlayfs enabled, it needs
>> to be
>>         triggered
>>                  from a
>>                                > specific image
>>                                > or distro feature.
>>
>>                                We can't change the kernel config from an
>> image so it
>>                  would have to be
>>                                a distro setting. Is there a problem with
>>         enabling both as
>>                  modules btw?
>>                                I assume they can coexist?
>>
>>
>>                           I've always found it limiting that we can't
>> trigger kernel
>>                  features based on
>>                           what an image'
>>                           type actually needs, but I understand why/how
>> it works
>>         like this.
>>
>>                           If it can't be triggered by an image setting,
>> then
>>         just keeping
>>                  a layer
>>                           that is
>>                           added
>>                           to the build, that has a bbappend with the
>> appropriate
>>                  KERNEL_FEATURES would
>>                           also work, and is the approach that I've also
>> taken.
>>
>>                           Not that the existing configs are great in this
>>         respect (they
>>                  need a lot of
>>                           streamlining),
>>                           but building modules 'just in case' eventually
>> leads to
>>                  allmodconfig :)
>>
>>                           I'd imagine they could co-exist, but it isn't
>>         something I've tried.
>>
>>                           Bruce
>>
>>
>>                                Cheers,
>>
>>                                Richard
>>
>>
>>
>>
>>                           --
>>                           "Thou shalt not follow the NULL pointer, for
>> chaos and
>>         madness
>>                  await
>>                           thee at its
>>                           end"
>>
>>
>>
>>
>>                  --
>>                  "Thou shalt not follow the NULL pointer, for chaos and
>> madness
>>         await
>>                  thee at its
>>                  end"
>>
>>
>>
>>
>>         --
>>         "Thou shalt not follow the NULL pointer, for chaos and madness
>> await
>>         thee at its
>>         end"
>>
>>
>>
>>
>> --
>> "Thou shalt not follow the NULL pointer, for chaos and madness await thee
>> at its
>> end"
>>
>


-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160405/aebcbf91/attachment-0002.html>


More information about the Openembedded-core mailing list