Skip to content

Releases: zbm-dev/zfsbootmenu

ZFSBootMenu v1.4rc1

11 Aug 15:22
Compare
Choose a tag to compare
ZFSBootMenu v1.4rc1 Pre-release
Pre-release

ZFSBootMenu 1.4 includes significant internal changes and some user-visible functional changes in the generate-zbm script.

Fixes

  • Internal improvements to generate-zbm to improve consistency and facilitate future development.
  • Management of versioned image retention should now be more consistent with expectation. Versioned ZBM images now increment a revision number when existing images with the same version already exist, and the retention policy preserves a configurable number of revisions for the current version alongside the latest revision of each of the same number of prior versions.
  • Improved error handling should make failures in generate-zbm easier to understand.

New features

  • Move from an INI configuration format to YAML, which should provide more flexibility for future enhancements.
  • Provide a --migrate command-line option to convert existing INI configurations to the new format.
  • Add configuration options to change default behavior for --kernel, --kver and --prefix to make generate-zbm easier to incorporate on non-Void systems.
  • Add a configuration option to change the default behavior for --version to allow customized output versioning of images.
  • Support string interpolation of %current or %{current} tags in --kver and --version values.
  • Add a --cmdline command-line option to override the configured CommandLine value without editing the configuration file.

Significant commits in this release:

3b2b2f0 - Add explicit --migrate option to generate-zbm (Andrew J. Hesford)
3cd3a8e - Improve error handling and automatic config conversion (Andrew J. Hesford)
80e0c30 - Switch syslinux entry to heredoc, fix syslinux.cfg file copy (Zach Dykstra)
6351226 - Move to YAML configuration, improve version handling (Andrew J. Hesford, Zach Dykstra)
5fdb872 - Add configuration options for kernel, version and prefix (Andrew J. Hesford)
79295ec - Add an optional parameter to safeCopy: (Zach Dykstra)
8aa133f - Clean up control flow in generate-zbm (Andrew J. Hesford)

ZFSBootMenu v1.3.1

14 Jul 03:49
Compare
Choose a tag to compare

This release fixes an issue found minutes after v1.3 was tagged and released - such is life. After timing out on the countdown menu, the screen is now cleared before displaying a prompt for the pool password.

ZFSBootMenu v1.3

14 Jul 02:28
Compare
Choose a tag to compare

This release features several fixes and new features.

Fixes

  • When creating a boot image, generate-zbm will fail if the EFI System Partition (BootMountPoint in the configuration) is not and cannot be mounted.
  • When generate-zbm creates backup kernels, initramfs images or UEFI bundles, timestamps of the original files will be preserved when possible, which may help boot loaders like rEFInd properly order the images.
  • Some display issues in the boot menu have been fixed.

New features

The following new features should allow ZFSBootMenu to work with distributions such as Arch or Ubuntu:

  • The Dracut module now searches for a much broader range of kernel/initramfs pairs in boot environments, including unversioned kernels with names like linux or vmlinuz.
  • generate-zbm now has a --kver argument that can specify a version number when one cannot be correctly determined from the name of a kernel file, allowing creation of ZFSBootMenu images on systems like Arch that do not encode version information in kernel names.
  • When starting a boot environment, the root= command-line argument is now set with a prefix (e.g., the zfs: part of root=zfs:pool/ROOT/void) that is chosen based on distribution ID in /etc/os-release or /usr/lib/os-release, if available; the default selection can be overridden by setting the org.zfsbootmenu:rootprefix property.

In addition:

  • In the ZFSBootMenu snapshot browser, an option to view a zfs diff between the live boot environment and a selected snapshot allow convenient review of the changes since the snapshot was taken.
  • ZFSBootMenu now attempts to detect an active suspend-to-disk image and prevent any operations on ZFS pools that could lead to corruption on resume.
  • The currently selected boot environment and kernel are displayed throughout submenus.
  • In addition to identifying boot environments by the property mountpoint=/, ZFSBootMenu will also identify boot environments with the properties mountpoint=legacy and org.zfsbootmenu:active=on.
  • Boot environments with mountpoint=/ can be hidden from ZFSBootMenu by setting the property org.zfsbootmenu:active=off.

Significant commits in this release:

7122be9 - Use mountpoint to check for ESP (Zach Dykstra)
315e326 - Check return of mount operation (Zach Dykstra)
8e434b1 - Allow root prefix to be customized for other distributions (Andrew J. Hesford)
fcaba86 - Support unversioned kernel naming in generate-zbm (Andrew J. Hesford)
294a84d - Broaden search for kernels and initramfs images (Andrew J. Hesford)
2263dbe - Handle kernels with multi-part versions (Zach Dykstra)
95f65a6 - Initial support for org.zfsbootmenu:active visibility (Andrew J. Hesford)
69c3d63 - Draw the preview header on kernel, snapshot and diff screens (Zach Dykstra)
83b2cbb - Initial support for resume guard (Andrew J. Hesford)
6828550 - Initial snapshot diff browser (Zach Dykstra)
4c0a968 - Report source size when cloning/duplicating a snapshot (Zach Dykstra)

ZFSBootMenu v1.3rc2

09 Jul 12:42
Compare
Choose a tag to compare
ZFSBootMenu v1.3rc2 Pre-release
Pre-release

This release contains all of the fixes and new features in v1.3rc1, as well as some fixes to command-line generation that should allow ZFSBootMenu to properly boot Arch Linux systems.

ZFSBootMenu v1.3rc1

07 Jul 18:57
Compare
Choose a tag to compare
ZFSBootMenu v1.3rc1 Pre-release
Pre-release

This release features several fixes and new features.

Fixes

  • When creating a boot image, generate-zbm will fail if the EFI System Partition (BootMountPoint in the configuration) is not and cannot be mounted.
  • When generate-zbm creates backup kernels, initramfs images or UEFI bundles, timestamps of the original files will be preserved when possible, which may help boot loaders like rEFInd properly order the images.
  • Some display issues in the boot menu have been fixed.

New features

The following new features should allow ZFSBootMenu to work with distributions such as Arch or Ubuntu:

  • The Dracut module now searches for a much broader range of kernel/initramfs pairs in boot environments, including unversioned kernels with names like linux or vmlinuz.
  • generate-zbm now has a --kver argument that can specify a version number when one cannot be correctly determined from the name of a kernel file, allowing creation of ZFSBootMenu images on systems like Arch that do not encode version information in kernel names.
  • When starting a boot environment, the root= command-line argument is now set with a prefix (e.g., the zfs: part of root=zfs:pool/ROOT/void) that is chosen based on distribution ID in /etc/os-release or /usr/lib/os-release, if available; the default selection can be overridden by setting the org.zfsbootmenu:rootprefix property.

In addition:

  • In the ZFSBootMenu snapshot browser, an option to view a zfs diff between the live boot environment and a selected snapshot allow convenient review of the changes since the snapshot was taken.
  • ZFSBootMenu now attempts to detect an active suspend-to-disk image and prevent any operations on ZFS pools that could lead to corruption on resume.
  • The currently selected boot environment and kernel are displayed throughout submenus.
  • In addition to identifying boot environments by the property mountpoint=/, ZFSBootMenu will also identify boot environments with the properties mountpoint=legacy and org.zfsbootmenu:active=on.
  • Boot environments with mountpoint=/ can be hidden from ZFSBootMenu by setting the property org.zfsbootmenu:active=off.

Significant commits in this release:

7122be9 - Use mountpoint to check for ESP (Zach Dykstra)
315e326 - Check return of mount operation (Zach Dykstra)
8e434b1 - Allow root prefix to be customized for other distributions (Andrew J. Hesford)
fcaba86 - Support unversioned kernel naming in generate-zbm (Andrew J. Hesford)
294a84d - Broaden search for kernels and initramfs images (Andrew J. Hesford)
2263dbe - Handle kernels with multi-part versions (Zach Dykstra)
95f65a6 - Initial support for org.zfsbootmenu:active visibility (Andrew J. Hesford)
69c3d63 - Draw the preview header on kernel, snapshot and diff screens (Zach Dykstra)
83b2cbb - Initial support for resume guard (Andrew J. Hesford)
6828550 - Initial snapshot diff browser (Zach Dykstra)
4c0a968 - Report source size when cloning/duplicating a snapshot (Zach Dykstra)

ZFSBootMenu v1.2

22 Jun 23:47
Compare
Choose a tag to compare

This release features substantial code and idea contributions from @ahesford . Thank you for all of your help writing features, debugging code and improving documentation.

Snapshot overhaul

Previously, snapshots could be cloned to a boot environment with a pre-generated, and often long, BE name. Substantial quality of life improvements were made here, including:

  • Add the ability to do a full zfs send | zfs recv clone from a local snapshot. This lets you establish a new boot environment that is not dependent on any other environments or snapshots.
  • Add the ability to clone and promote a snapshot, or simply clone it.
  • When cloning a snapshot, local ZFS properties of the parent filesystem are now transferred to the clone.
  • For all snapshot operations, you can now directly enter a boot environment name. This name is checked for character validity, and to confirm that it is not already taken.

Always up-to-date menu system

Any time you transition from one menu to another (Snapshots, Kernels, recovery shell), the list of boot environments and kernels is completely regenerated. This helps remove potential disconnects between the state of your pool and boot environments and the ZFSBootMenu interface.

UEFI bundle improvements

If you create unversioned UEFI bundles for static boot entries, generate-zbm will now create a -backup file for you on upgrade. This will allow you a recovery option if the active UEFI bundle has a problem.

Protect against missing kernel modules

When creating a new initramfs, the zfsbootmenu Dracut module needs to install a number of ZFS-related kernel modules. Previously, the modules were installed through a Dracut helper function that did not verify if the copy succeeded. This process has been reworked to ensure that all of the required kernel modules are installed in the initramfs, or the creation of the image is marked as a failure. If it is marked as a failure, existing/current images are not deleted or otherwise replaced.

Set default kernel

Much like setting a default boot environment, you can now set a default kernel for a specific boot environment. You no longer need to manually set a kernel version in your booted OS, you can simply do it from the menu!

Shellcheck

On commit, the shell scripts that power the boot menu and Dracut setup are run through a validator to check for common errors and pitfalls. This can help reduce some classes of bugs.

ZFSBootMenu v1.1

11 Jun 19:18
Compare
Choose a tag to compare

This release includes a number of small fixes and improvements.

Fixes

  • Correctly handle exiting the recovery shell, fixing an infinite loop. A reboot is no longer required to recover from the recovery shell. Thanks, @ahesford.
  • Check that the EFI stub file is present on disk at the specified location. If the file is missing and an EFI bundle is requested, exit with an error.
  • Minor documentation fixes.

Features

  • Handle console fonts defined on the kernel command line. This is useful for systems with a 4k display. You should now be able to read the screen without a magnifying glass. Thanks to @ahesford for the significant time spent on tracking this down.
  • Instead of calling objcopy directly, dracut is now used to generate a bundled EFI file. This means that the bundled EFI file can now be signed by Secure Boot keys! Thanks to @ericonr for this feature - and learning a bit of Perl to do it!

No configuration file changes are needed to use this release. Enjoy!

ZFSBootMenu v1.0

15 May 20:32
Compare
Choose a tag to compare

We're jumping straight up to v1.0!

Small changes

  • Set the kernel log level to 0 when in the menu system, then restore it to the original value on boot
  • Reverse sort the kernel list, so the most recent is always first
  • Add an initial chroot helper script, zfs-chroot for the recovery shell. It can be invoked as zfs-chroot pool/ROOT/BE.
  • Set the default config path in generate-zbm to /etc/zfsbootmenu/conf.d
  • Allow the EFI stub file to be defined in config.ini
  • Optionally read the kernel command line from /etc/default/zfsbootmenu

Large changes

  • Clean up or whitelist all issues in zfsbootmenu-lib.sh, zfsbootmenu-preview.sh and zfsbootmenu.sh noted by shellcheck.
  • Support entering a custom kernel command line via alt-c on the main menu. The input line is pre-filled with the command line that would have been used on the next boot, for that environment. This command line is NOT persisted between reboots, it's simply here to let you recover an unbootable system.
  • Add support for reading the kernel commandline from the ZFS property org.zfsbootmenu:commandline. This property is now considered the default/primary source of truth for the kernel command line - it takes precedence over /etc/default/zfsbootmenu and /etc/default/grub.

A big thank you to @ahesford for his code contributions and testing leading up to this release!

ZFSBootMenu v1.0rc2

12 May 01:43
Compare
Choose a tag to compare
ZFSBootMenu v1.0rc2 Pre-release
Pre-release

This release contains all of the fixes and features from 1.0rc1, as well as the following:

  • Add support for reading the kernel commandline from the ZFS property org.zfsbootmenu:commandline. This property takes precedence over /etc/default/grub and /etc/default/zfsbootmenu
  • Clean up or whitelist all issues in zfsbootmenu-lib.sh, zfsbootmenu-preview.sh and zfsbootmenu.sh noted by shellcheck.

A big thank you to @ahesford for his code contributions and testing leading up to this release candidate. It is very much appreciated!

ZFSBootMenu 1.0rc1

11 May 04:18
2ab907e
Compare
Choose a tag to compare
ZFSBootMenu 1.0rc1 Pre-release
Pre-release

This release has been a long time coming. In no particular order, it contains the following:

  • Set the kernel log level to 0 when in the menu system, then restore it to the original value on boot
  • Reverse sort the kernel list, so the most recent is always first
  • Add an initial chroot helper script for the recovery shell
  • Set the default config path in generate-zbm to /etc/zfsbootmenu/conf.d
  • Allow the EFI stub file to be defined in config.ini
  • Support entering a custom kernel command line via alt-c on the main menu. The input line is pre-filled with the command line that would have been used on the next boot, for that environment. This command line is NOT persisted between reboots, it's simply here to let you recover an unbootable system.