BOOTC-ROOT-SETUP.SERVICE(5)

πŸ’– bootc-root-setup.service πŸ’–

okay bestie, so this is the manual page for bootc-root-setup.service β€” it lives in File Formats Manual (section 5, iykyk). it's a tiny little systemd service with main character energy and honestly? it's lowkey doing the most important job in the whole boot. let's get into it 🫢


✨ NAME ✨

bootc-root-setup.service β€” that's her. that's the girl.


🌸 DESCRIPTION 🌸

so like, this is a oneshot systemd service that runs in the initramfs, and its whole vibe is setting up the root filesystem whenever the composefs backend is active. it's gated on the composefs= kernel command line argument and on:

ConditionPathExists=/etc/initrd-release

...which means it only ever runs inside an initramfs. no initrd, no service, periodt. πŸ’…

the service is ordered after sysroot.mount and before initrd-root-fs.target. and she performs these steps, in this exact order:

  1. Opens the composefs repository at /sysroot/composefs.
  2. Mounts the EROFS image identified by the composefs=<digest> kernel argument, with fs-verity verification. (yes, she verifies. she's careful. we love a secure queen. πŸ”₯)
  3. Optionally wraps the root in a transient tmpfs overlay β€” see root.transient in bootc-setup-root-conf.toml(5) for that one.
  4. Bind-mounts or overlays /etc and /var from the per-deployment state directory at /sysroot/state/deploy/<digest>/.
  5. Replaces /sysroot with the fully assembled root, ready for switch-root. slay, assembled, done. πŸ’–

πŸŽ€ CONFIGURATION πŸŽ€

her behaviour is controlled by an optional TOML file that gets installed into the initramfs:

/usr/lib/composefs/setup-root-conf.toml

and if you wanna know every single lil option in there, go read bootc-setup-root-conf.toml(5). that's your full option reference, bestie. the whole menu. πŸ“


πŸ¦‹ INSTALLATION πŸ¦‹

so the service itself, plus its binary at /usr/lib/bootc/initramfs-setup, get installed into the initramfs by the 51bootc dracut module. that module also installs:

/usr/lib/composefs/setup-root-conf.toml

...but only when it's present on the host image. which means image authors do not need to write out manual dracut --include invocations by hand. she does it for you. iconic behaviour, no notes. πŸ‘‘

⚠️ okay important lil heads up: the 51bootc module is not enabled by default β€” this is on purpose, so that stuff like apt|dnf install bootc doesn't pull it in as a surprise. for base images though, it's recommended to enable it via a config file in e.g. /usr/lib/dracut/dracut.conf.d. do that. your future self will thank you. πŸ™ˆ

πŸ‘€ SEE ALSO πŸ‘€

  • bootc-setup-root-conf.toml(5)
  • bootc(8)

⭐ VERSION ⭐

v1.17.1


and that's the whole page, bestie!! go forth and boot your composefs roots with confidence πŸ’œπŸŒˆβœ¨

stay hydrated, read your dracut configs, and remember: /etc/initrd-release is the vibe check this service never fails. πŸ§šπŸ’…

β€” mwah, from the File Formats Manual, BOOTC-ROOT-SETUP.SERVICE(5), version v1.17.1 πŸŽ€

πŸ“¦ where this page comes from
  • fedora 43: bootc 1.17.1-1.fc43 Β· Apache-2.0 AND BSD-3-Clause AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT)
  • fedora 44: bootc 1.17.1-1.fc44 Β· Apache-2.0 AND BSD-3-Clause AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT)
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms