treecompose: Add initramfs-args to treefile
We're building generic initramfs images on the server side, but dracut has logic to pick up some things from the host, like filesystems. In the absence of host-specific initramfs images, it needs to be up to the generating system what kernel modules end up in the initramfs. Provide a generic option to passthrough dracut arguments.
This commit is contained in:
parent
99f9bc3fc7
commit
3a41c65c8a
@ -42,6 +42,11 @@ Treefile
|
|||||||
|
|
||||||
* `default_target`: String, optional: Set the default systemd target
|
* `default_target`: String, optional: Set the default systemd target
|
||||||
|
|
||||||
|
* `initramfs-args`: Array of strings, optional. Passed to the
|
||||||
|
initramfs generation program (presently `dracut`). An example use
|
||||||
|
case for this with Dracut is `--filesystems xfs,ext4` to ensure
|
||||||
|
specific filesystem drivers are included.
|
||||||
|
|
||||||
* `remove-files`: Delete these files from the generated tree
|
* `remove-files`: Delete these files from the generated tree
|
||||||
|
|
||||||
* `remove-from-packages`: Array, optional: Delete from specified packages
|
* `remove-from-packages`: Array, optional: Delete from specified packages
|
||||||
|
@ -208,6 +208,7 @@ find_kernel_and_initramfs_in_bootdir (GFile *bootdir,
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
do_kernel_prep (GFile *yumroot,
|
do_kernel_prep (GFile *yumroot,
|
||||||
|
JsonObject *treefile,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
@ -271,8 +272,35 @@ do_kernel_prep (GFile *yumroot,
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char *child_argv[] = { "dracut", "-v", "--tmpdir=/tmp", "-f", "/var/tmp/initramfs.img", (char*)kver, NULL };
|
gs_unref_ptrarray GPtrArray *dracut_argv = g_ptr_array_new ();
|
||||||
if (!run_sync_in_root (yumroot, "/usr/sbin/dracut", (char**)child_argv, error))
|
|
||||||
|
g_ptr_array_add (dracut_argv, "dracut");
|
||||||
|
g_ptr_array_add (dracut_argv, "-v");
|
||||||
|
g_ptr_array_add (dracut_argv, "--tmpdir=/tmp");
|
||||||
|
g_ptr_array_add (dracut_argv, "-f");
|
||||||
|
g_ptr_array_add (dracut_argv, "/var/tmp/initramfs.img");
|
||||||
|
g_ptr_array_add (dracut_argv, (char*)kver);
|
||||||
|
|
||||||
|
if (json_object_has_member (treefile, "initramfs-args"))
|
||||||
|
{
|
||||||
|
guint i, len;
|
||||||
|
JsonArray *initramfs_args;
|
||||||
|
|
||||||
|
initramfs_args = json_object_get_array_member (treefile, "initramfs-args");
|
||||||
|
len = json_array_get_length (initramfs_args);
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
const char *arg = _rpmostree_jsonutil_array_require_string_element (initramfs_args, i, error);
|
||||||
|
if (!arg)
|
||||||
|
goto out;
|
||||||
|
g_ptr_array_add (dracut_argv, (char*)arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_ptr_array_add (dracut_argv, NULL);
|
||||||
|
|
||||||
|
if (!run_sync_in_root (yumroot, "/usr/sbin/dracut", (char**)dracut_argv->pdata, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -854,7 +882,7 @@ create_rootfs_from_yumroot_content (GFile *targetroot,
|
|||||||
gs_unref_hashtable GHashTable *preserve_groups_set = NULL;
|
gs_unref_hashtable GHashTable *preserve_groups_set = NULL;
|
||||||
|
|
||||||
g_print ("Preparing kernel\n");
|
g_print ("Preparing kernel\n");
|
||||||
if (!do_kernel_prep (yumroot, cancellable, error))
|
if (!do_kernel_prep (yumroot, treefile, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
g_print ("Initializing rootfs\n");
|
g_print ("Initializing rootfs\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user