From d5bfbc6715e8bc199a33bfb94c143261c4c53364 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 20 Feb 2020 00:33:01 +0000 Subject: [PATCH] prepare-root: Add a comment about the role of this service Came up on an IRC question, docs for this are scattered around. --- src/switchroot/ostree-prepare-root.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c index 33c46ff45c..c25d3fe9ab 100644 --- a/src/switchroot/ostree-prepare-root.c +++ b/src/switchroot/ostree-prepare-root.c @@ -29,6 +29,28 @@ * Boston, MA 02111-1307, USA. */ +/* The high level goal of ostree-prepare-root.service is to run inside + * the initial ram disk (if one is in use) and set up the `/` mountpoint + * to be the deployment root, using the ostree= kernel commandline + * argument to find the target deployment root. + * + * It's really the heart of how ostree works - basically multiple + * hardlinked chroot() targets are maintained, this one does the equivalent + * of chroot(). + * + * If using systemd, an excellent reference is `man bootup`. This + * service runs Before=initrd-root-fs.target. At this point it's + * assumed that the block storage and root filesystem are mounted at + * /sysroot - i.e. /sysroot points to the *physical* root before + * this service runs. After, `/` is the deployment root. + * + * There is also a secondary mode for this service when an initrd isn't + * used - instead the binary must be statically linked (and the kernel + * must have mounted the rootfs itself) - then we set things up and + * exec the real init directly. This can be popular in embedded + * systems to increase bootup speed. + */ + #include "config.h" #include