Subiquity 24.04.1 has been released to the stable channel

We are proud to announce version 24.04.1 of Subiquity, supported on Ubuntu 24.04 LTS, Ubuntu 23.10, Ubuntu 22.04.4 LTS, and Ubuntu 20.04.6 LTS. Subiquity 24.04.1 is included in the Ubuntu 24.04 LTS live-server ISO, and is now live on the stable channel as a snap refresh for the other supported ISOs. Also, Ubuntu Desktop Bootstrap on Ubuntu 24.04 LTS includes this same version of Subiquity.

What’s new in Subiquity 24.04.1

Autoinstall support for Desktop and Seven Ubuntu Flavors

Ubuntu 24.04 LTS marks the first LTS release of the Subiquity-based installer Ubuntu Desktop Bootstrap, for not just Ubuntu Desktop, but also many Ubuntu flavors - Edubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Mate, Ubuntu Studio, and Xubuntu. This also means that autoinstall is now available for all these environments with Long-Term Support.

ZFS With Encryption support

ZFS Guided storage has been extended to support full-disk encryption. This uses the same method of handling the encryption employed by Ubiquity, where a combination of a LUKS keystore + ZFS Native encryption is employed.

While ZFS with or without encryption is not yet offered in the server installer UI, it is available via autoinstall for all Subiquity-based install ISOs including Ubuntu Server:

            name: zfs
            password: passw0rd

To change the passphrase, consider using gnome-disks or cryptsetup luksChangeKey.

Additionally for ZFS support, a dataset for /home is now created.

Improved Presentation of Autoinstall Errors

Subiquity’s error reporting and Autoinstall validation mechanisms have been significantly reworked to provide clearer and more actionable feedback when encountering errors. Automatic crash report generation has been disabled for cases of preventable errors which are caused by user-provided data (e.g., failure to validate the Autoinstall configuration) and instead helpful error messaging is shown to facilitate resolving the situation.

New Error Overlay

During interactive server installs, a new error overlay has been introduced to provide details on these preventable errors which inhibit the install from proceeding as expected. Some examples below:

Improved Event Reporting

Similar to the new error overlay, the event reporter provides details on the error which caused the install to halt. This provides a similar experience for non-interactive installs:

  • The provided Autoinstall config fails to validate:

    start: subiquity/Keyboard/load_autoinstall_data:
    finish: subiquity/Keyboard/load_autoinstall_config: Malformed autoinstall in ‘keyboard’ section
    finish: subiquity/load_autoinstall_config: Malformed autoinstall in ‘keyboard’ section
    An error occurred. Press enter to start a shell

Additionally, the event reporter now includes log-like event types to provide improved visibility on progress of the installation. One such event - the warning event - may be used to report errors which are not critical, but may cause the installation to proceed differently than desired or expected.

For example: misspelling interactive-sections may cause the install to proceed in a fully automated fashion, where a partially interactive install was likely desired:

warning: subiquity/core_validation/top_level_keys: Unrecognized top-level key ‘interactive-section’

Smarter Delivery Methods

Subiquity has improved the way it consumes Autoinstall. Now when Autoinstall is delivered via cloud-config, Subiquity will halt the install with an error if it detects autoinstall keywords outside of a top-level autoinstall keyword, instead of silently ignoring them. Subiquity will also halt with an error if the Autoinstall config on the installation media is attempted to be used as a cloud-init datasource.

Consistent Autoinstall Formatting

The Autoinstall configuration file format has been expanded to now support the top-level autoinstall keyword in all delivery methods. Previously, this keyword was only used when providing Autoinstall via cloud-config. It is now advised Autoinstall configurations follow the following format:

    version: 1

The existing format for autoinstall on the install media (version and other keywords at the top level) remains supported and there are no plans for deprecation. See the new Autoinstall delivery tutorial to read more.

Experimental support for NVMe over TCP installations

Subiquity grew partial, experimental, support for installations targeting remote storage devices using NVMe over TCP. Remote storage devices can be used to store filesystems that are not essential for booting (e.g., /home, /srv). They can be used to store the root filesystem with the following limitations:

  • only basic network configurations are supported (ethernet with static addressing or DHCP)
  • the /boot filesystem and the ESP must be stored on local storage

There is no screen or specific autoinstall support for discovering NVMe/TCP storage. One can install the nvme-cli package in the live environment and then run nvme connect (or nvme connect-all) commands to perform the discovery. NOTE that it is possible to run these commands as part of early-commands to automate the process.

Reworked SSH screen

The SSH screen was reworked so that multiple SSH identities can be imported (from Launchpad and/or from Github). The keys are displayed in a list and can be selectively previewed or removed. This also prevents keys imported using autoinstall directives to be discarded when ssh is marked as an interactive section.

Changed behavior after failed mirror connectivity check

After a failed mirror connectivity check, automated installations will now revert to semi-offline by default. In a semi-offline installation, packages are only fetched from the installation media and never from the archive. The behavior from previous versions can be obtained using the apt: fallback: abort directive.

For interactive installations, the option to continue despite the connectivity failure is now gone. Instead, the user must decide between doing a semi-offline installation (see above) or going back and adjust network and/or mirror settings.

Status of migration of documentation to Read the Docs

Read the docs is now the preferred location of Subiquity install documentation, and the existing Server install guide copy is being deprecated. The source for this documentation, in reStructuredText format, can be found in the doc directory of Subiquity on Github.


  • LP: #2039966 (PR: 1846) - Update instructions on how to test local Subiquity or related changes in kvm
  • (PR: 1857) - Fix dependency list for python3-debian in apt-deps.txt
  • (PR: 1880) - Accept a fixed partition size for reset partition in autoinstall
  • (PR: 1882) - The sample autoinstall-user-data found at /var/log/installer/autoinstall-user-data now includes a link to the documentation
  • (PR: 1885) - Apt: Only backup/restore sources.list if it exists
  • (PR: 1888) - Improve text of reported bugs during a failure in curtin by showing which stage failed
  • (PR: 1894) - Factory-reset: remove EFI boot entry, fix GRUB entry
  • LP: #2051586 (PR: 1914) - Fix crash when attempting to edit a bond with a valid transmit hash policy.
  • (PR: 1915) - Fix detection of Netplan on recent Ubuntu releases.
  • LP: #2055077 (PR: 1923) - Fix an issue where a call by subiquity to cloud-init could cause reprobing of datasources
  • LP: #2037038 (PR: 1931) - Ensure the Distribution Channel Descriptor is copied to target.
  • LP: #2051338 (PR: 1934) - Fix issues with match directives and install to RAIDs. Note that there must be a known path to making that RAID bootable for this to work, and not all RAIDs are known to be bootable today.
  • LP: #2056783 (PR: 1938) - Fix documentation of match specs for model and vendor
  • LP: #2059134 (PR: 1950) - Fix creation of unformatted partitions from ubuntu-desktop-bootstrap
  • LP: #2053002 (PR: 1952) - Cleanup zzzz-temp-installer-unattended-upgrade to ensure it is not present on the target system.
  • LP: #2059389 (PR: 1957) - Do not suggest resize of a partition that is already mounted.
  • LP: #2045280 (PR: 1961) - Fix UI crash when size of partition gets capped.
  • LP: #2060695 (PR: 1970) - Workaround an issue with the cloud-init cc_dpkg_grub module by disabling it for subiquity-installed systems. In this case, the system is already bootable, so the cc_dpkg_grub module should be redundant. If cc_dpkg_grub is still required, see this bug comment for suggestions.
  • (PR: 1974) - For desktop installs, retain the quiet splash grub GRUB_CMDLINE_LINUX_DEFAULT values
  • curtin: LP: #2037682 (MP: 460960) - Fix chroot detection for curtin in-target
  • curtin: LP: #2016860 (MP: 462753) - Fix wipefs failure

Known Issues

  • Netbooting the Subiquity-based Desktop installer images causes the installer to crash on startup. The issue will be resolved for the 24.08.1 release, or sooner, of Subiquity and at that time will be available via a manual snap refresh in the live environment on older images (LP: #2062988).
  • In presence of NVMe storage devices, if the initial block probing operation fails (e.g., because of a timeout), the restricted probe will also fail with: ValueError: Invalid dep_id (nvme-controller-nvme0) not in storage config (LP: #2063162).

New Contributors

Full Changelog: Comparing 24.02.1...24.04.1 · canonical/subiquity · GitHub


Support for AutoInstall on desktop, and being encouraged to use it since it’s so prominently featured, is probably my favorite feature (and surprise) for 24.04.

I have a few questions:

  • Even if I close the desktop installer, it “remembers” the autoinstall answer file. How can I tell the installer to forget it and read another one or let me start over with a manual install?
  • Will it be possible to select a local file? file:///... does not seem to work. (Error message: Invalid URL: No host specified in URL file:///...) Using python3 -m http.server is a workaround, but not intuitive for most users.
  • Reboot does not seem to work on desktop:
      shutdown: reboot
  • I wanted to have a notification when the installation is complete. Nothing fancy or complicated, but both my attempts have failed:
        - >
          notify-send "Installation complete, reboot in 1 minute."
        - >
          gst-play-1.0 "/usr/share/sounds/Yaru/stereo/system-ready.oga"
        - >
          sudo shutdown -r +1

Where should I file bug reports or feature requests for these? Bugs : subiquity ? Issues · canonical/ubuntu-desktop-provision · GitHub ?


Hi there @livewirebt

Even if I close the desktop installer, it “remembers” the autoinstall answer file. How can I tell the installer to forget it and read another one or let me start over with a manual install?

Subiquity would just re-discover your autoinstall again in most cases. You can try to remove the copy from /autoinstall.yaml at install time, which I believe would address the case of providing autoinstall through the UI on Desktop, but other cases are just going to find autoinstall again. I think you need to reboot and not provide the autoinstall next time.

Will it be possible to select a local file? file:///... does not seem to work. (Error message: Invalid URL: No host specified in URL file:///...) Using python3 -m http.server is a workaround, but not intuitive for most users.

The supported methods of providing the autoinstall are documented here along with the Desktop UI method. I’m not sure where browsing to a local file fits in there. Would having the autoinstall in the root of the install medium handle your case? If not, I’m not clear on where you are specifying a file:/// URL.

Reboot does not seem to work on desktop:

Reboot does for me, so maybe this is configuration or environment specific. Would you file against Bugs : subiquity if you haven’t already?

I wanted to have a notification when the installation is complete. Nothing fancy or complicated, but both my attempts have failed:

I suspect this is the same problem. If reboot was working in your case you achieve this with:

    - >
      notify-send "Installation complete, reboot in 1 minute."
    - >
      gst-play-1.0 "/usr/share/sounds/Yaru/stereo/system-ready.oga"
    - >
      sleep 60