[PATCH] dracut: quote DRACUT_EXTRA_MODULES/DRIVERS for --add

33 views
Skip to first unread message

Rakesh Kumar

unread,
Jun 30, 2026, 7:44:03 AM (6 days ago) Jun 30
to isar-...@googlegroups.com, Rakesh Kumar
extend_dracut_cmdline() joined multiple modules/drivers into the
--add / --add-drivers arguments without quoting. With more than one
entry the shell split the list, so dracut consumed only the first
module and treated the rest as positional arguments (the output image
path), breaking initramfs generation. Quote the lists so they are
passed as a single argument.

Signed-off-by: Rakesh Kumar <kumar....@siemens.com>
---
meta/classes-recipe/initrd-dracut.bbclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/classes-recipe/initrd-dracut.bbclass b/meta/classes-recipe/initrd-dracut.bbclass
index bb4b50b7..542b1fbe 100644
--- a/meta/classes-recipe/initrd-dracut.bbclass
+++ b/meta/classes-recipe/initrd-dracut.bbclass
@@ -48,9 +48,9 @@ def extend_dracut_cmdline(d):
if config_path:
cmdline.append(f"--conf {config_path}")
if extra_drivers:
- cmdline.append(f"--add-drivers {extra_drivers}")
+ cmdline.append(f'--add-drivers "{extra_drivers}"')
if extra_modules:
- cmdline.append(f"--add {extra_modules}")
+ cmdline.append(f'--add "{extra_modules}"')
return ' '.join(cmdline)

ROOTFS_INITRAMFS_GENERATOR_CMDLINE:append = " ${@ extend_dracut_cmdline(d)}"
--
2.39.5

MOESSBAUER, Felix

unread,
Jun 30, 2026, 7:50:06 AM (6 days ago) Jun 30
to Kumar, Rakesh, isar-...@googlegroups.com, Gylstorff, Quirin
On Tue, 2026-06-30 at 07:43 -0400, 'Rakesh Kumar' via isar-users wrote:
> extend_dracut_cmdline() joined multiple modules/drivers into the
> --add / --add-drivers arguments without quoting. With more than one
> entry the shell split the list, so dracut consumed only the first
> module and treated the rest as positional arguments (the output image
> path), breaking initramfs generation. Quote the lists so they are
> passed as a single argument.

+ CC Quirin

Hi, good catch, but please also add a fixes tag.

>
> Signed-off-by: Rakesh Kumar <kumar....@siemens.com>
> ---
> meta/classes-recipe/initrd-dracut.bbclass | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes-recipe/initrd-dracut.bbclass b/meta/classes-recipe/initrd-dracut.bbclass
> index bb4b50b7..542b1fbe 100644
> --- a/meta/classes-recipe/initrd-dracut.bbclass
> +++ b/meta/classes-recipe/initrd-dracut.bbclass
> @@ -48,9 +48,9 @@ def extend_dracut_cmdline(d):
> if config_path:
> cmdline.append(f"--conf {config_path}")
> if extra_drivers:
> - cmdline.append(f"--add-drivers {extra_drivers}")
> + cmdline.append(f'--add-drivers "{extra_drivers}"')

Nit: Wouldn't it be better to use single quotes around {extra_drivers}
to ensure shell variables are not expanded within the quote?

Felix

> if extra_modules:
> - cmdline.append(f"--add {extra_modules}")
> + cmdline.append(f'--add "{extra_modules}"')
> return ' '.join(cmdline)
>
> ROOTFS_INITRAMFS_GENERATOR_CMDLINE:append = " ${@ extend_dracut_cmdline(d)}"
> --
> 2.39.5
>

> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260630114346.14229-1-kumar.rakesh%40siemens.com.

Quirin Gylstorff

unread,
Jun 30, 2026, 9:48:08 AM (6 days ago) Jun 30
to Moessbauer, Felix (FT RPD CED OES-DE), Kumar, Rakesh (FT FDS CES LX PBU 1), isar-...@googlegroups.com


On 6/30/26 1:50 PM, Moessbauer, Felix (FT RPD CED OES-DE) wrote:
> On Tue, 2026-06-30 at 07:43 -0400, 'Rakesh Kumar' via isar-users wrote:
>> extend_dracut_cmdline() joined multiple modules/drivers into the
>> --add / --add-drivers arguments without quoting. With more than one
>> entry the shell split the list, so dracut consumed only the first
>> module and treated the rest as positional arguments (the output image
>> path), breaking initramfs generation. Quote the lists so they are
>> passed as a single argument.
>
> + CC Quirin
>
> Hi, good catch, but please also add a fixes tag.
>

Thanks for the fix.

I never tested the cmdline with multiple modules/drivers as my intention
was to use the variables only for development. In production all
modules/drivers should be added via a dracut config.

Quirin

Kumar, Rakesh

unread,
Jun 30, 2026, 10:36:06 AM (6 days ago) Jun 30
to Gylstorff, Quirin, MOESSBAUER, Felix, isar-...@googlegroups.com
Hi Felix,

I actually tried single quotes and it broke the build with `getopt: option '--add' requires an argument` . The reason probably is in
https://github.com/ilbers/isar/blob/b90b722fc2666b806a64f0bf5ca0feeb9b6f203b/meta/classes-recipe/rootfs.bbclass#L660

BitBake substitutes our --add "..." into a string that's already wrapped in single quotes. If we use single quotes for the module list, those inner ' characters close the outer single-quoted block early, the quoting collapses, and the multi-module list is no longer passed as one argument to --add - hence the failure.

Double quotes seems correct choice here: they pass literally through the outer single-quoted context and are then interpreted by the inner `sh -ec`, which groups mod1 mod2 into a single --add argument as intended.


Regards,
Rakesh

MOESSBAUER, Felix

unread,
Jun 30, 2026, 11:10:58 AM (6 days ago) Jun 30
to Kumar, Rakesh, Gylstorff, Quirin, isar-...@googlegroups.com
On Tue, 2026-06-30 at 14:36 +0000, Kumar, Rakesh (FT FDS CES LX PBU 1)
wrote:

> Hi Felix,
>
> I actually tried single quotes and it broke the build with `getopt: option '--add' requires an argument` . The reason probably is in
> https://github.com/ilbers/isar/blob/b90b722fc2666b806a64f0bf5ca0feeb9b6f203b/meta/classes-recipe/rootfs.bbclass#L660

Indeed. We should better use a here document to avoid these surprises.
But this is better cleaned up after the rootless switch, as we then
have wrappers.

>
> BitBake substitutes our --add "..." into a string that's already wrapped in single quotes. If we use single quotes for the module list, those inner ' characters close the outer single-quoted block early, the quoting collapses, and the multi-module list is no longer passed as one argument to --add - hence the failure.

Yep.

>
> Double quotes seems correct choice here: they pass literally through the outer single-quoted context and are then interpreted by the inner `sh -ec`, which groups mod1 mod2 into a single --add argument as intended.

Hidden interface, but we have to clean this up after rootless.
For now the current patch is ok.

Reviewed-by: Felix Moessbauer <felix.mo...@siemens.com>

Felix

Rakesh Kumar

unread,
Jul 1, 2026, 2:35:19 AM (5 days ago) Jul 1
to isar-...@googlegroups.com, Rakesh Kumar
extend_dracut_cmdline() joined multiple modules/drivers into the
--add / --add-drivers arguments without quoting. With more than one
entry the shell split the list, so dracut consumed only the first
module and treated the rest as positional arguments (the output image
path), breaking initramfs generation. Quote the lists so they are
passed as a single argument.

Fixes: f785cd0 (Add class to generate custom dracut initramfs)

Signed-off-by: Rakesh Kumar <kumar....@siemens.com>
---
meta/classes-recipe/initrd-dracut.bbclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/classes-recipe/initrd-dracut.bbclass b/meta/classes-recipe/initrd-dracut.bbclass
index bb4b50b7..542b1fbe 100644
--- a/meta/classes-recipe/initrd-dracut.bbclass
+++ b/meta/classes-recipe/initrd-dracut.bbclass
@@ -48,9 +48,9 @@ def extend_dracut_cmdline(d):
if config_path:
cmdline.append(f"--conf {config_path}")
if extra_drivers:
- cmdline.append(f"--add-drivers {extra_drivers}")
+ cmdline.append(f'--add-drivers "{extra_drivers}"')

Rakesh Kumar

unread,
Jul 1, 2026, 2:43:00 AM (5 days ago) Jul 1
to isar-...@googlegroups.com, Rakesh Kumar
extend_dracut_cmdline() joined multiple modules/drivers into the
--add / --add-drivers arguments without quoting. With more than one
entry the shell split the list, so dracut consumed only the first
module and treated the rest as positional arguments (the output image
path), breaking initramfs generation. Quote the lists so they are
passed as a single argument.

Fixes: f785cd0 (Add class to generate custom dracut initramfs)

Reply all
Reply to author
Forward
0 new messages