The -map option requires two arguments: the source filesystem path and
the target path in the ISO. Without the "/" target, xorriso fails.
This only affects riscv64, which uses native xorriso mode rather than
mkisofs compatibility mode.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This adds a new tool, isobuild, which replaces the ISO-building
functionality previously provided by live-build and cdimage. It is
invoked from auto/build when MAKE_ISO=yes.
The tool supports:
- Layered desktop images (Ubuntu Desktop, flavors)
- Non-layered images (Kubuntu, Ubuntu Unity)
- Images with package pools (most installers)
- Images without pools (Ubuntu Core Installer)
The isobuild command has several subcommands:
- init: Initialize the ISO build directory structure
- setup-apt: Configure APT for package pool generation
- generate-pool: Create the package pool from a seed
- generate-sources: Generate cdrom.sources for the installed system
- add-live-filesystem: Add squashfs and kernel/initrd to the ISO
- make-bootable: Add GRUB and other boot infrastructure
- make-iso: Generate the final ISO image
auto/config is updated to:
- Set MAKE_ISO=yes for relevant image types
- Set POOL_SEED_NAME for images that need a package pool
- Invoke gen-iso-ids to compute ISO metadata
auto/build is updated to:
- Remove old live-build ISO handling code
- Invoke isobuild at appropriate points in the build
lb_binary_layered is updated to create squashfs files with
cdrom.sources included for use in the ISO.
Add a script to compute the values for .disk/info, the ISO volume ID,
and the "capproject" (capitalized project name) used in various places
in the ISO boot configuration.
This replaces the logic that was previously scattered across live-build
and cdimage.
Add systemd drop-in to wait for snapd seeding completion before starting the
display manager. This improves the user experience as users now wait in
Plymouth for the installer to finish being seeded, instead of in GDM with only
the wallpaper visible. When GDM starts, the installer launches with minimal
delay.
When developping and using snapd from edge on cross-team efforts like
TPM/FDE, allow snapd to reexec to the snap version unconditionnaly,
on live system.
.
This is commented so that the future revert to stable include it and
we don’t forget to readd that next time this kind of effort is needed.
We now filter snaps using jq rather than grep. The change has a slight impact
because snapd-desktop-integration was filtered out by "grep snapd" but isn't
filtered out anymore with jq.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
We have a mechanism in place to override a snap when building an image.
Unfortunately, we didn't factor this in when forcing optional components to be
included in the image.
This was okay before because the stable model and the dangerous model had the
same components declared.
But now that pc-kernel has different components in the stable and the dangerous
model, things are broken.
Indeed, when building the stable image, we tried to include the pc-kernel from
the stable model with the pc-kernel components from the dangerous model. But
they are not compatible.
Fixed by including components from the right model. If we're overriding a snap
with a definition from a different model, then pull the components from that
same model.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The pc-kernel version in 26.04/beta is kernel 6.17, which uses different
components from what is currently declared in the model.
This used to be necessary when there was no kernel in 26.04/stable, but now
there is a 6.8 version in 26.04/stable. The available components match what's
in the model.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This allows netboot tarballs to be PXE booted on QEMU; previously, the tarball was missing bootloader.
Signed-off-by: Valentin Haudiquet <valentin.haudiquet@canonical.com>