From 166e83f5d8d4703a0b7dc85d251933a71984f813 Mon Sep 17 00:00:00 2001 From: "michael.hudson@canonical.com" Date: Thu, 12 Feb 2026 10:48:10 +1300 Subject: [PATCH] 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 --- live-build/auto/config | 1 + live-build/isobuilder/boot/amd64.py | 19 ++++- .../ubuntu-mini-iso/hooks/01-mini-iso.binary | 71 ++----------------- 3 files changed, 24 insertions(+), 67 deletions(-) diff --git a/live-build/auto/config b/live-build/auto/config index 638e4c87..e969bb63 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -1166,6 +1166,7 @@ case $PROJECT in OPTS="${OPTS:+$OPTS }--linux-packages=none --initramfs=none" KERNEL_FLAVOURS=none BINARY_REMOVE_LINUX=false + MAKE_ISO=yes add_package install mini-iso-tools linux-generic case $ARCH in diff --git a/live-build/isobuilder/boot/amd64.py b/live-build/isobuilder/boot/amd64.py index 0736c114..31260662 100644 --- a/live-build/isobuilder/boot/amd64.py +++ b/live-build/isobuilder/boot/amd64.py @@ -86,14 +86,27 @@ class AMD64BootConfigurator(UEFIBootConfigurator): def generate_grub_config(self) -> None: """Generate grub.cfg and loopback.cfg for the boot tree.""" - # Generate grub.cfg - kernel_params = default_kernel_params(self.project) - boot_grub_dir = self.boot_tree.joinpath("boot", "grub") boot_grub_dir.mkdir(parents=True, exist_ok=True) grub_cfg = boot_grub_dir.joinpath("grub.cfg") + if self.project == "ubuntu-mini-iso": + self.write_grub_header(grub_cfg) + with grub_cfg.open("a") as f: + f.write( + """menuentry "Choose an Ubuntu version to install" { + set gfxpayload=keep + linux /casper/vmlinuz iso-chooser-menu ip=dhcp --- + initrd /casper/initrd +} +""" + ) + return + + # Generate grub.cfg + kernel_params = default_kernel_params(self.project) + # Write common GRUB header self.write_grub_header(grub_cfg) diff --git a/live-build/ubuntu-mini-iso/hooks/01-mini-iso.binary b/live-build/ubuntu-mini-iso/hooks/01-mini-iso.binary index 2db1be10..5e6081ea 100755 --- a/live-build/ubuntu-mini-iso/hooks/01-mini-iso.binary +++ b/live-build/ubuntu-mini-iso/hooks/01-mini-iso.binary @@ -1,5 +1,9 @@ #!/bin/sh +# Create kernel/initrd artifacts for isobuilder to consume. +# The standard MAKE_ISO flow in auto/build expects files named +# ${PREFIX}.kernel-${flavour} and ${PREFIX}.initrd-${flavour}. + set -eu case $ARCH in @@ -10,68 +14,7 @@ case $ARCH in ;; esac -. config/binary +PREFIX="livecd.${PROJECT}" -KERNEL=chroot/boot/vmlinuz -INITRD=chroot/boot/initrd.img - -git clone https://git.launchpad.net/~ubuntu-cdimage/debian-cd/+git/ubuntu debian-cd -export BASEDIR=$(readlink -f debian-cd) DIST=$LB_DISTRIBUTION - -cat > apt.conf < ubuntu-mini-iso/amd64/tree/boot/grub/grub.cfg < ubuntu-mini-iso/$ARCH/tree/.disk/cd_type < ubuntu-mini-iso/$ARCH/tree/.disk/info <