prepare-root: Gather kernel cmdline early

Prep for parsing the composefs config from the kernel cmdline.
No functional changes intended.
This commit is contained in:
Colin Walters 2024-07-10 17:27:11 -04:00
parent 26abca7126
commit 65ff404195

View File

@ -113,14 +113,11 @@ sysroot_is_configured_ro (const char *sysroot)
}
static char *
resolve_deploy_path (const char *root_mountpoint)
resolve_deploy_path (const char *kernel_cmdline, const char *root_mountpoint)
{
char destpath[PATH_MAX];
struct stat stbuf;
char *deploy_path;
g_autofree char *kernel_cmdline = read_proc_cmdline ();
if (!kernel_cmdline)
errx (EXIT_FAILURE, "Failed to read kernel cmdline");
g_autoptr (GError) error = NULL;
g_autofree char *ostree_target = NULL;
@ -268,6 +265,10 @@ main (int argc, char *argv[])
err (EXIT_FAILURE, "usage: ostree-prepare-root SYSROOT");
const char *root_arg = argv[1];
g_autofree char *kernel_cmdline = read_proc_cmdline ();
if (!kernel_cmdline)
errx (EXIT_FAILURE, "Failed to read kernel cmdline");
// Since several APIs want to operate in terms of file descriptors, let's
// open the initramfs now. Currently this is just used for the config parser.
glnx_autofd int initramfs_rootfs_fd = -1;
@ -308,7 +309,7 @@ main (int argc, char *argv[])
const char *root_mountpoint = realpath (root_arg, NULL);
if (root_mountpoint == NULL)
err (EXIT_FAILURE, "realpath(\"%s\")", root_arg);
g_autofree char *deploy_path = resolve_deploy_path (root_mountpoint);
g_autofree char *deploy_path = resolve_deploy_path (kernel_cmdline, root_mountpoint);
const char *deploy_directory_name = glnx_basename (deploy_path);
// Note that realpath() should have stripped any trailing `/` which shouldn't
// be in the karg to start with, but we assert here to be sure we have a non-empty