Non-layered MAKE_ISO=yes builds (e.g. kubuntu) had no equivalent of
the lb_binary_layered kernel placement added in the previous commit:
lb binary_linux-image put the kernel in binary/casper/ but nothing
copied it into the ISO tree (CASPER_DIR).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
For MAKE_ISO=yes builds, squashfs, kernel, initrd, manifests, and sizes
are now placed directly into config/iso-dir/iso-root/casper/ during the
build rather than creating livecd.* intermediates that get linked as
for-iso.* files and then copied into casper/ by isobuild.
This stops publishing the intermediate livecd.* artifacts so that only
livecd.*.iso and livecd.*.netboot.tar.gz are published for ISO builds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hooks that only source config/functions (not config/common) would fail
with "LIVECD_ROOTFS_ROOT: parameter not set" when calling setup_mountpoint
or any function that transitively calls it. This affected ubuntu, ubuntu-cpc,
and buildd hooks.
Rather than adding `. config/common` to every hook, prepend the
LIVECD_ROOTFS_ROOT assignment to config/functions at config time so it is
available to all callers automatically.
Builds a real Ubuntu ISO in ~2-3 minutes (vs 30-60 for production)
by keeping the package set minimal (casper + linux-generic only) and
using lz4 squashfs compression.
Design:
- Two-pass layered build (PASSES_TO_LAYERS=true):
- base: installs casper
- base.generic (LIVE_PASSES): installs linux-generic, triggers
update-initramfs with CASPER_GENERATE_UUID=1 to embed UUID
- No package pool (POOL_SEED_NAME=), no universe, amd64 only
- SQUASHFS_COMP=lz4 (~10x faster than xz); create_squashfs() now
respects ${SQUASHFS_COMP:-xz} so all other projects are unaffected
- Germinate is skipped (only add_package is used, no add_task/pool)
New files:
- live-build/ubuntu-test-iso/hooks/01-test-iso.chroot_early
- live-build/ubuntu-test-iso/hooks/02-test-iso-kernel.binary
Modified:
- live-build/functions: honour $SQUASHFS_COMP in create_squashfs()
- live-build/gen-iso-ids: add ubuntu-test-iso -> Ubuntu-Test-ISO
- live-build/auto/config: IMAGEFORMAT, fs, COMPONENTS, germinate
skip, SQUASHFS_COMP default + per-project override, project block,
write SQUASHFS_COMP to config/common, lxd exclusion, hook copying
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A change in 2024 [0] was made to debootstrap in which the keyring is now
switched from ubuntu-archive-keyring.gpg to
ubuntu-archive-removed-keys.gpg after a given release goes EOL. This
means that the Release signature cannot be verified after EOL since the
Release is signed with the ubuntu-archive-keyring.gpg. It is expected
that we can continue to build any release even after the suite is
closed.
This change adds a debootstrap configuration to override this behavior
and ensure all of our images are verified against the main archive key.
Refs: [0] https://git.launchpad.net/ubuntu/+source/debootstrap/commit/?id=4f8b3405097b9f655938528ae7105ec534eb7d1b
Set MAKE_ISO=yes so ubuntu-mini-iso uses the standard isobuilder
flow in auto/build. The binary hook is simplified to just creating
kernel/initrd artifacts; isobuilder handles .disk metadata, boot
configuration, and ISO creation.
The mini-iso's custom grub.cfg (single iso-chooser-menu entry) is
generated by a project-specific path in AMD64BootConfigurator.
Co-Authored-By: Claude Opus 4.6 <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.
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>
Since release 25.10 we require support for the rva23s64 profile.
Remove all code relating for boards that do not match this requirement.
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
* Fix daily-dangerous builds:
- Copy hooks.
- Mangle the channel of seeded snaps to use the edge risk of whichever
track they are taken from.
- Update the dangerous model to reference tracks that actually exist.
- Include providers of content plugs when seeding snaps and creating
TPMFDE system.
- Do not attempt to build an UEFI boot image or hyperv desktop image for
this project/subproject combination.
The previous Tegra kernel metapackage implementation (linux-nvidia-tegra-igx)
was initially planned to apply both for Jetson devices and IGX systems. It turned
out recently (LP: #2069179) that we now need to reserve the metapackage name
linux-nvidia-tegra-igx for IGX systems, and use the new linux-nvidia-tegra-jetson
metapackage for Jetson devices. For the sake of clarity, the image name, model,
sub-arch, variant should align with the kernel metapackage name.