Go to file
Yann E. MORIN 3f79611b30 system: add options for /var factory and tmpfiles pre-seed
Currently, when one does not enable remounting the rootfs read-write,
i.e. keep it read-only, for example because the filesystem is actually
read-only by design, like squashfs, then two things happen:

  - we create a factory from the content of /var at build time, register
    tmpfiles entries for it, and mount a tmpfs on /var at runtime, so
    that systemd-tmpfiles does populate /var from the factory; this is
    only done when the rootfs is not remounted r/w;

  - we trigger systemd-tmpfiles at build time, which uses the tmpfiles
    db, of which our /var entries, to pre-populate the filesystem; this
    is always done, whether the rootfs is remounted r/w or not.

Note that Buildroot mounts a tmpfs on /var, and leaves to the integrator
to care for providing an actual filesystem, as there are too many
variants and is very specific to each use-case.

These two mechanisms are conflicting, semantically, but also
technically: the files from the factory will be duplicated, but that
may help in some situations when the actual /var filesystem is not
mountable.

In some cases, it might be preferable to have none, either, or both
mechanisms enabled; it highly depends on the ultimate integration scheme
chosen for a device.

For example, some people will be very happy with a /var that is actually
on a tmpfs and that it gets reseeded form scratch at every boot, while
others may want to ensure that their system continue to work even when
they can't mount something that makes /var writable.

YMMV, as they used to say back in the day...

So, we introduce two new options, in the system sub-menu, each to drive
each mechanism. We default those options to y, to keep the previous
behaviour by default, except the var factory is only available when the
rootfs is not remounted r/w, as it were so far.

We still hint in the help text that there might be some conflict between
the two mechanisms, but since it has been that way for some time, it
does not look too broken for most people.

Since that introduces more options related to systemd being chosen as an
init system, we gather those two options and the existing one inside a
if-endif block, rather than adding more 'depends on' on each options.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Norbert Lange <nolange79@gmail.com>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Romain Naour <romain.naour@smile.fr>
Cc: Jérémy Rosen <jeremy.rosen@smile.fr>
Cc: Yann E. MORIN <yann.morin@orange.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2022-12-22 11:07:59 +01:00
arch
board configs/visionfive2_defconfig: new defconfig 2022-12-19 10:05:23 +01:00
boot boot/sun20i-d1-spl: drop package 2022-12-13 21:20:53 +01:00
configs configs/sipeed_licheee_rv_defconfig: use 6.1 kernel headers 2022-12-19 22:25:09 +01:00
docs
fs fs/ext2: generate Y2K38-resilient filesystems 2022-12-14 20:29:11 +01:00
linux {linux, linux-headers}: 5.{4, 10, 15}.x / 6.{0, 1}.x series 2022-12-22 08:39:31 +01:00
package system: add options for /var factory and tmpfiles pre-seed 2022-12-22 11:07:59 +01:00
support
system system: add options for /var factory and tmpfiles pre-seed 2022-12-22 11:07:59 +01:00
toolchain {toolchain, linux-headers}: add support for 6.1 headers 2022-12-18 14:56:37 +01:00
utils utils/scancpan: bump required perl version 2022-12-20 17:22:27 +01:00
.clang-format
.defconfig
.flake8
.gitignore
.gitlab-ci.yml
.shellcheckrc
CHANGES
Config.in Config.in: update default CPAN mirror to https, update mirrors URL 2022-12-21 14:03:25 +01:00
Config.in.legacy package/x11r7/xdriver_xf86-input-keyboard: remove package 2022-12-20 08:21:14 +01:00
COPYING
DEVELOPERS configs/visionfive2_defconfig: new defconfig 2022-12-19 10:05:23 +01:00
Makefile
Makefile.legacy
README

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on OFTC IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches