To avoid issues where UEFI firmware ignores command-line arguments (common on some Dell systems), you can create a bundled UEFI executable. This bundle encapsulates the Linux kernel, the ZFSBootMenu initramfs, and all required command-line arguments into a single .EFI file.
Configuration
Edit /etc/zfsbootmenu/config.yaml to control bundle creation:
EFI.Enabled: Set to true to enable bundling.EFI.ImageDir: The destination directory on the ESP (e.g., /boot/efi/EFI/zbm).EFI.Versions: Set to false or 0 to disable versioned filenames. This is recommended because firmware does not automatically update to point to new versions. When disabled, generate-zbm still creates a -backup.EFI of the previous version.EFI.Stub: Path to the UEFI stub loader if the default systemd-boot location is not used.Kernel.Prefix: The base name for the output file (e.g., vmlinuz.EFI). If omitted, it is derived from the kernel name.Kernel.CommandLine: Arguments encoded into the bundle. If dracut's kernel_cmdline is also set, the two are concatenated.
Booting the Bundle
Use efibootmgr to register the .EFI file. Use backslashes for paths and remember that paths are case-insensitive on FAT volumes.
It is highly recommended to create a backup entry pointing to the -backup.EFI file.
# Register the primary bundle
efibootmgr -c -d /dev/sda -p 1 -L "ZFSBootMenu" -l '\EFI\VOID\VMLINUZ.EFI'
# Register the backup bundle
efibootmgr -c -d /dev/sda -p 1 -L "ZFSBootMenu (Backup)" -l '\EFI\VOID\VMLINUZ-BACKUP.EFI'