4391 Commits

Author SHA1 Message Date
michael.hudson@canonical.com
92c29ecbf2
Merge branch 'fix-boot-paths' into ubuntu/master 2026-02-20 12:44:49 +13:00
michael.hudson@canonical.com
7fdf181234
fix changelog merge 2026-02-20 12:44:02 +13:00
michael.hudson@canonical.com
49a0415299
Merge branch 'no-tpm-arm64' into ubuntu/master 2026-02-20 12:43:14 +13:00
michael.hudson@canonical.com
96f41a4cf5
add changelog entry for optional sbom change 2026-02-20 12:43:06 +13:00
michael.hudson@canonical.com
2579dc30cb
Merge branch 'CPC-8952-make-sbom-optional' into ubuntu/master 2026-02-20 12:42:04 +13:00
michael.hudson@canonical.com
77db814700
fix version number 2026-02-20 12:40:03 +13:00
Michael Raymond
a1c8d7f3bd add changelog entry 2026-02-19 16:34:04 -05:00
Allen Abraham
f734d8cb8c feat(ubuntu-cpc): make SBOM generation optional in create_manifest function
There are case in CPC built images where we don't want to create an SBOM.
Add an argument in create_manifest which defaults to creating an SBOM, but can also skip generating an SBOM
2026-02-19 15:30:28 -05:00
Michael Raymond
7e3c74afac feat: Use same keyring for all releases
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
2026-02-19 14:48:18 -05:00
michael.hudson@canonical.com
7c4588191c
e030-ubuntu-live-system-seed.binary: do not run if there is no layer to install the system, in particular on arm64. 2026-02-19 19:57:16 +13:00
michael.hudson@canonical.com
42df11d4cc
add changelog entry 2026-02-19 15:06:08 +13:00
michael.hudson@canonical.com
6db44c1ea6
make a small change to copy_unsigned_monolithic_grub 2026-02-19 15:06:04 +13:00
michael.hudson@canonical.com
081981e650
simplify scratch directory handling a bit 2026-02-19 15:06:02 +13:00
michael.hudson@canonical.com
a2a166d93d
Standardize whitespace in GRUB menu entry stanzas
Use consistent formatting across all architectures: 4-space indent,
two spaces after "linux", one space after "initrd". Also fix an extra
blank line before "fi" in amd64's UEFI section caused by f-string
interpolation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:06:00 +13:00
michael.hudson@canonical.com
a6466ab0a3
Make generate_grub_config return strings instead of writing files
Separate config generation from file I/O by having generate_grub_config()
and its helpers return strings. The base class make_bootable() now handles
writing grub.cfg.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:05:53 +13:00
michael.hudson@canonical.com
a5cffa8414
place boot-related files directly into the ISO root
The debian-cd scripts did this game of placing boot-related files in a
separate directory that was then passed to xorriso to include on the
ISO. Stop doing that and just put the files directly into the ISO root
that is already passed to xorriso.
2026-02-19 15:05:47 +13:00
michael.hudson@canonical.com
ff3addb2f8
Extract packages to scratch dirs instead of boot tree subdirs
Package contents were being extracted into subdirectories of the boot
tree (grub_dir, shim_dir), which meant the boot tree contained both
the final boot files and the raw package extractions. Extract packages
into scratch directories instead, copying only the needed files into
the boot tree. This also removes the grub_dir/shim_dir instance
variables and the create_dirs overrides, and moves copy_grub_modules
to a standalone function in grub.py.
2026-02-19 13:17:35 +13:00
michael.hudson@canonical.com
460037fb4d
releasing package livecd-rootfs version 26.04.19 26.04.19 2026-02-17 11:17:10 +13:00
michael.hudson@canonical.com
b70abe0d1f
add changelog entry 2026-02-17 10:52:43 +13:00
michael.hudson@canonical.com
166e83f5d8
Move ubuntu-mini-iso to use isobuilder instead of debian-cd
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>
2026-02-17 10:47:18 +13:00
michael.hudson@canonical.com
5c6a3fba53
move the calamares-using projects into a global with a meaningful name 2026-02-17 10:47:17 +13:00
michael.hudson@canonical.com
edc2fa0fc5
Use match statement with local imports in boot configurator factory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:15 +13:00
michael.hudson@canonical.com
516d8b8913
Use Python boot package instead of debian-cd shell scripts
Replace the debian-cd git clone and shell script invocation in
ISOBuilder with the new Python boot configurators.

Key changes to builder.py:
- make_bootable() creates a boot configurator and calls its
  make_bootable() method instead of cloning debian-cd
- make_iso() gets mkisofs_opts directly from the configurator
  instead of reading a serialized file
- add_live_filesystem() links kernel/initrd with names expected
  by the boot configurators (vmlinuz/initrd, hwe-vmlinuz/hwe-initrd)
- _extract_casper_uuids() updated for the new initrd naming scheme
- Refactor config storage to use a single _config dict
- Add limit_length parameter to Logger for long xorriso commands

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:14 +13:00
michael.hudson@canonical.com
edf0acbeac
Add Python boot configuration package
Add architecture-specific boot configurators that translate the
debian-cd boot shell scripts (boot-amd64, boot-arm64, boot-ppc64el,
boot-riscv64, boot-s390x) into Python.

The package uses a class hierarchy:
- BaseBootConfigurator: abstract base with common functionality
- GrubBootConfigurator: shared GRUB config generation
- UEFIBootConfigurator: UEFI-specific shim/ESP handling
- Architecture classes: AMD64, ARM64, PPC64EL, RISCV64, S390X

A factory function make_boot_configurator_for_arch() creates the
appropriate configurator for each architecture.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:13 +13:00
michael.hudson@canonical.com
6a6b00d68b
Add download_direct method to AptStateManager
Extract a download_direct() method from download() to enable downloading
packages to an arbitrary directory with an arbitrary specification string.

This will be used by the boot configuration code to download bootloader
packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:08 +13:00
Utkarsh Gupta
e4b17221a0 Update d/ch for 26.04.18 release 26.04.18 2026-02-16 16:14:56 +05:30
Utkarsh Gupta
435c4e1895 Merge remote-tracking branch 'mwhudson/fix-kylin' into ubuntu/master
* mwhudson/fix-kylin:
  isobuilder: pass ignore_dangling_symlinks=True when copying apt config
2026-02-16 16:13:53 +05:30
michael.hudson@canonical.com
0733a7626a
Merge branch 'update-README.parameters' into ubuntu/master 2026-02-16 21:50:54 +13:00
michael.hudson@canonical.com
f0c7c28618
isobuilder: pass ignore_dangling_symlinks=True when copying apt config
ubuntukylin's /etc/apt/trusted.gpg.d/ubuntukylin-archive-keyring.gpg
contains a symlink to
"/usr/share/keyrings/ubuntukylin-archive-keyring.gpg" as an absolute
path. This obviously doesn't work when not chrooted into the chroot but
we don't need to copy it over to the apt config used to build the pool
as no package from any archive signed by this key is going to be
included in the pool...
2026-02-16 21:24:46 +13:00
Olivier Gayot
3645bdf230 Release livecd-rootfs 26.04.17
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
2026-02-12 10:25:26 +01:00
Olivier Gayot
c3671c739d ubuntu: update model to latest stable model
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
2026-02-12 10:25:02 +01:00
Olivier Gayot
733ad14e33 ubuntu: for the stable image, use the stable model
Let's stop leaning on overrides for now.

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
2026-02-12 10:24:30 +01:00
michael.hudson@canonical.com
01d94b279c
document ARCH_VARIANT and BUILD_TYPE in README.parameters 2026-02-12 10:27:54 +13:00
Utkarsh Gupta
e26de340e2 Merge build-status into ubuntu/master [a=utkarsh] [r=]
Rename ISO_STATUS to BUILD_TYPE for image builds

MP: https://code.launchpad.net/~utkarsh/livecd-rootfs/+git/livecd-rootfs/+merge/500253

* build-status:
  Update d/ch for 26.04.16 release
  Rename ISO_STATUS to BUILD_TYPE for image builds
26.04.16
2026-02-12 01:53:18 +05:30
Utkarsh Gupta
7f1c505f20 Update d/ch for 26.04.16 release 2026-02-12 01:41:28 +05:30
Utkarsh Gupta
6d954c975d Rename ISO_STATUS to BUILD_TYPE for image builds 2026-02-12 01:41:06 +05:30
michael.hudson@canonical.com
73035c0b19
releasing package livecd-rootfs version 26.04.15 26.04.15 2026-02-11 10:07:53 +13:00
michael.hudson@canonical.com
84760de4da
rename the Daily|Release in .disk/info from "official" to "iso_status" 2026-02-11 09:42:44 +13:00
michael.hudson@canonical.com
2c2f7d5e5c
fix xorriso -map to include target path for riscv64
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>
2026-02-11 09:42:43 +13:00
michael.hudson@canonical.com
45aa1e4550
run add_riscv_gpt on riscv64 2026-02-11 09:42:42 +13:00
michael.hudson@canonical.com
c1edc22c24
xorriso is not run with -as mkisofs for whatever reason 2026-02-11 09:42:40 +13:00
michael.hudson@canonical.com
9add6d4ab8
do not truncate xorriso invocation in output 2026-02-11 09:42:39 +13:00
michael.hudson@canonical.com
acd63ee3e4
Make sure the unlayered ISO has a cdrom.sources in as well. 2026-02-11 09:42:38 +13:00
michael.hudson@canonical.com
ab2b82e3c2
a more generic way to make sure all artefacts get a for-iso path 2026-02-11 09:42:37 +13:00
michael.hudson@canonical.com
9a9ca07a76
Copy-edit Claude's comments a bit. 2026-02-11 09:42:36 +13:00
michael.hudson@canonical.com
4d8cfd89b8
Update changelog for ISO build support 2026-02-11 09:42:20 +13:00
michael.hudson@canonical.com
ce809612c4
Add CI lint checks for Python code
Add a lint job to the Launchpad CI pipeline that runs mypy, black, and
flake8 on the new Python code (gen-iso-ids, isobuild, isobuilder).
2026-02-11 09:41:08 +13:00
michael.hudson@canonical.com
b3fdc4e615
Add isobuild tool to build installer ISOs
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.
2026-02-11 09:41:06 +13:00
michael.hudson@canonical.com
3112c5f175
Add gen-iso-ids tool to compute ISO metadata
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.
2026-02-11 09:41:01 +13:00
Matthew Hagemann
8e26b08f59
changelog 2026-02-05 13:27:01 +02:00