Building with mkinitcpio#
ZFSBootMenu also supports the mkinitcpio initramfs generator used by Arch Linux and available for Void Linux, but it must be configured first.
Since version 2.0.0, ZFSBootMenu will install a standard
mkinitcpio.conf in the /etc/zfsbootmenu
configuration directory. This file
is generally the same as a standard mkinitcpio.conf
, except some additional declarations may be added to control
aspects of the zfsbootmenu
mkinitcpio module. The configuration file includes extensive inline documentation in the
form of comments; configuration options specific to ZFSBootMenu are also described in the
zfsbootmenu(7) manual page.
ZFSBootMenu still expects to use Dracut by default. To override this behavior and instead use mkinitcpio, edit
/etc/zfsbootmenu/config.yaml
and add the following options:
Global:
InitCPIO: true
## NOTE: The following three lines are OPTIONAL
InitCPIOHookDirs:
- /etc/zfsbootmenu/initcpio
- /usr/lib/initcpio
Note
In some ZFSBootMenu guides, like Remote Access to ZFSBootMenu, some mkinitcpio modules will be installed to
/etc/zfsbootmenu/initcpio
to keep them isolated from system-installed modules. To accommodate this non-standard
installation, InitCPIOHookDirs
must be defined in /etc/zfsbootmenu/config.yaml
. Furthermore, because
overriding the hook directory causes mkinitcpio to ignore its default module path, the default /usr/lib/initcpio
must be manually specified. If all hooks are installed in /usr/lib/initcpio
or /etc/initcpio
, the ZFSBootMenu
configuration does not need to specify InitCPIOHookDirs
.
Without further changes, running generate-zbm
should now produce a ZBM image based on mkinitcpio rather than Dracut.
Whenever generate-zbm
is run to generate images based on mkinitcpio, it forcefully adds the the required
zfsbootmenu
hook after any hooks defined in the HOOKS
array of /etc/zfsbootmenu/mkinitcpio.conf
. The default
configuration file explicitly includes the zfsbootmenu
hook in the array as a visual reminder that it will be
included (strictly speaking, this will cause mkinitcpio to add the hook twice, but because the zfsbootmenu
hook
completely takes over execution of its initramfs image, it will only ever run once). If any custom configuration requires
additional hooks be added to the ZFSBootMenu initramfs image, make sure that these hooks are included before any
occurrence of zfsbootmenu
in HOOKS
. Better still, just remove the zfsbootmenu
hook from
/etc/zfsbootmenu/mkinitcpio.conf
when making any edits to HOOKS
to minimize the chance of configuration errors.