zfsbootmenu/docs/man/zbm-kcl.8.rst

121 lines
4.8 KiB
ReStructuredText

=======
zbm-kcl
=======
SYNOPSIS
========
**zbm-kcl** [OPTION]... [FILESYSTEM|EFI_EXECUTABLE]
DESCRIPTION
===========
The **zbm-kcl** utility allows review and manipulation of the *org.zfsbootmenu:commandline* property on ZFS filesystems
or the *.cmdline* section encoded within ZFSBootMenu EFI executables. ZFSBootMenu reads the property
*org.zfsbootmenu:commandline*, as set or inherited on each environment that it recognizes, to set the command line for
the kernel that it boots. The ZFSBootMenu EFI executable reads its own *.cmdline* section to parse options that control
the behavior of ZFSBootMenu itself.
The final argument is treated as a ZFS filesystem as long as one exists with the specified name. If a matching
filesystem cannot be found, the argument is treated as an EFI executable. To force **zbm-kcl** to treat the final
argument as a relative path to an EFI executable even when a ZFS filesystem exists with the same name, prefix the path
with *./*.
When neither a filesystem nor an EFI executable is specified, **zbm-kcl** will attempt to determine the root filesystem
and operate on that.
If an EFI executable of *-* is specified, *stdin* will be read as an EFI executable.
With no options specified, **zbm-kcl** will print the current value of *org.zfsbootmenu:commandline* of the selected
filesystem or the *.cmdline* section of the named EFI executable and exit.
OPTIONS
=======
**-a** *argument*
Append the value of *argument* to the kernel command line. The value of *argument* can be a simple variable name for
Boolean arguments or may take the form *var=value* to provide a non-Boolean value. Multiple command-line arguments may
be accumulated into a single *argument*. If the value of any variable value contains spaces, it should be surrounded
by double quotes. In that case, surround the entire argument in single quotes to ensure that the double quotes are
recorded in the property::
zbm-kcl -a 'variable="some argument with spaces"'
This argument may be repeated any number of times.
**-r** *argument*
Remove *argument* from the kernel command line. The value of *argument* can be a simple variable name, in which case
all arguments of the form *argument* or *argument=<arbitrary-value>* will be stripped. Alternatively, a specific
argument may be selected by specifying *argument=<specific-value>*.
This argument may be repeated any number of times.
.. note::
All removal options are processed *before* any append options are processed, making it possible to replace an
existing argument by combining removal and append options into a single invocation of **zbm-kcl**.
**-e**
Open the contents of the command-line in an interactive editor. If the environment defines *$EDITOR*, that will be
used; otherwise, **vi** will be used by default. After making changes as desired, overwrite the (temporary) file that
was opened and quit the editor. The contents of the saved file will be written by **zbm-kcl** as the new command line.
**-d**
Delete the command-line property.
For a ZFS filesystem, this is accomplished by calling
.. code-block::
zfs inherit org.zfsbootmenu:commandline <filesystem>
to allow the boot environment to inherit any command-line property that may be defined by some parent.
For a ZFSBootMenu EFI executable, the *.cmdline* section will be stripped.
**-o** *destination*
Save the modified command line to *destination* rather than back to the original source. When the source is a ZFS
filesystem, the destination must also be a valid ZFS filesystem. When the source is an EFI executable, the destination
will be treated as a file; a special EFI *destination* of *-* will cause the file to be written to *stdout*.
EXAMPLES
========
Change the *loglevel* value on the currently booted environment by removing any existing value from the command line and
appending the desired argument::
zbm-kcl -a loglevel=7 -r loglevel
Delete the entire command line from the *zroot/ROOT/void* boot environment, allowing it to inherit a command line set at
*zroot* or *zroot/ROOT* if either of these defines a value::
zbm-kcl -d zroot/ROOT/void
Allow interactive editing of the command line on the *zroot/ROOT* filesystem, but save the resulting changes to
*zroot/ROOT/void* rather than back to *zroot/ROOT*::
zbm-kcl -e -o zroot/ROOT/void zroot/ROOT
Review the current command line embedded in the EFI file */boot/efi/EFI/zfsbootmenu/zfsbootmenu.EFI*::
zbm-kcl /boot/efi/EFI/zfsbootmenu/zfsbootmenu.EFI
Fetch the official ZFSBootMenu release EFI executable, customizing the menu timeout and saving the result to
*zfsbootmenu-custom.EFI*::
curl -L https://get.zfsbootmenu.org/efi | \
zbm-kcl -a zbm.timeout=15 -r zbm.timeout -o zfsbootmenu-slow.EFI -
SEE ALSO
========
:doc:`zfsbootmenu(7) </man/zfsbootmenu.7>`
..
vim: softtabstop=2 shiftwidth=2 textwidth=120