[Buildroot] Buildroot way to populate additional partition
Andrey Nechypurenko
andreynech at gmail.com
Fri Jul 2 13:04:20 UTC 2021
Hi Buildrooters,
I am building a system where rootfs should be read-only. However, it
should be possible to store user data (application specific data, wifi
configurations, etc.). For these purposes, I decided to use overlayfs.
In particular, Buildroot is configured not to remount rootfs with
read/write permission and /etc /var and /home should be mounted using
overlayfs with the upper filesystem located on the separate writable
partition. Here is how my fstab looks like:
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext4 ro,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts
defaults,gid=5,mode=620,ptmxmode=0666 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
/dev/mmcblk0p6 /overlay ext4 rw 0 1
overlay /etc overlay
lowerdir=/etc,upperdir=/overlay/etc,workdir=/overlay/work_etc 0
2
overlay /var overlay
lowerdir=/var,upperdir=/overlay/var,workdir=/overlay/work_var 0
2
overlay /home overlay
lowerdir=/home,upperdir=/overlay/home,workdir=/overlay/work_home 0
And this is my genimage.cfg.template:
image sdcard.img {
hdimage {
gpt = "true" }
partition fsbl1 {
image = "%ATFBIN%" }
partition fsbl2 {
image = "%ATFBIN%" }
partition ssbl {
image = "u-boot.stm32" }
partition env {
size = 16K }
partition rootfs {
image = "rootfs.ext4"
bootable = "yes" }
partition data {
image = "data.img" }
}
image data.img {
name = "data"
ext4 {
label = "data"
features = "extents,uninit_bg,dir_index,has_journal,filetype"
}
size = 32M
}
Here is a data partition created with ext4 data.img and is a target
for user data via overlayfs.
As you can see from fstab, there should be a set of directories
pre-created on the data partition:
/etc, /work_etc, /var, /work_var, /home and /work_home. And this is my
problem currently - I do not know how to pre-create them during the
build in a Buildroot-way.
I understand that the primary way to customize the rootfs is using
Buildroot's overlays. However, since I am not specifying the mount
point for data partition (because it should be mounted with
overlayfs), I have no idea how to pre-create directories mentioned
above. Even though I can probably find some hack-ish way to do it (for
example by mounting data.img and modify it before the final image will
be created) I am wondering what is the right way [tm] to do it with
Buildroot.
Thank you,
Andrey.
More information about the buildroot
mailing list