Public bug reported:

Setting the `--bootloader grub` argument, as per the 
[manpage](https://manpages.ubuntu.com/manpages/resolute/man1/lb_config.1.html#bootloader),
 makes the build process fail:
```
[2026-05-22 23:32:56] lb_binary_grub --verbose
P: Begin installing grub...
Reading package lists...
Building dependency tree...
Reading state information...
Package grub-legacy is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  grub-coreboot grub2-common grub-pc grub-ieee1275 grub-efi-ia32
  grub-efi-amd64
E: Package 'grub-legacy' has no installation candidate
P: Begin unmounting filesystems...
P: Saving caches...
Reading package lists...
Building dependency tree...
Reading state information...
Error: Process completed with exit code 100.
```

It seems that even on Ubuntu 26.04 'Resolute Raccoon' as a build environment, 
the `live-build` package still assumes packages such as `grub-legacy`. Here are 
my system details:
- Build Environment: Ubuntu 26.04 Docker container
- Target ISO: Ubuntu 26.04
- Architecture (host and target): amd64

Here is my `lb config` command:
```
lb config \
            --mode ubuntu \
            --bootstrap debootstrap \
            --bootstrap-keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg \
            --distribution resolute \
            --parent-distribution resolute \
            --architectures amd64 \
            --archive-areas "main restricted universe multiverse" \
            --parent-archive-areas "main restricted universe multiverse" \
            --mirror-bootstrap http://archive.ubuntu.com/ubuntu/ \
            --mirror-binary http://archive.ubuntu.com/ubuntu/ \
            --mirror-binary-security http://security.ubuntu.com/ubuntu/ \
            --mirror-chroot http://archive.ubuntu.com/ubuntu/ \
            --mirror-chroot-security http://security.ubuntu.com/ubuntu/ \
            --bootloader grub \
            --bootappend-live "boot=casper username=ubuntu quiet splash" \
            --initramfs casper \
            --binary-images iso-hybrid \
            --iso-application "Utile OS Live" \
            --iso-volume "Utile OS 26 amd64" \
            --iso-publisher 'Utile; 
https://utile-os-web.mailworker.workers.dev; [email protected]' \
            --memtest none
```

For context, I disabled memtest because `live-build` was *also* looking
for an outdated `.bin` suffix for the memtest image, which is no longer
accurate. But that's a bug for another day.

Considering this is a Docker container, I upgrade all packages and
install the latest version of `live-build` on every run, so I'm sure of
that.

Note that upstream's
[lb_config](https://manpages.debian.org/testing/live-
build/lb_config.1.en.html) contains different arguments, with different
pluralisations, and supports multiple bootloaders with the
`--bootloaders` argument. I assume that Ubuntu's version already deals
with multiple aspects like `--initramfs casper`, but it seems that
downstream is outdated.

Also note that there is no real solution, either: Leaving the default 
`syslinux` value also causes an error:
```
[2026-05-22 21:00:00] lb_binary_syslinux --verbose
P: Begin installing syslinux...
Reading package lists...
Building dependency tree...
Reading state information...
Package gfxboot-theme-ubuntu is not available, but is referred to by another 
package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Unable to locate package syslinux-themes-ubuntu-oneiric
E: Package 'gfxboot-theme-ubuntu' has no installation candidate
P: Begin unmounting filesystems...
P: Saving caches...
Reading package lists...
Building dependency tree...
Reading state information...
Error: Process completed with exit code 100.
```
Oneiric was Ubuntu **11.10**, released in 2011!

I am surprised by the scarce documentation and availability on how
Ubuntu is actually made. I've read a ton of pages at
https://documentation.ubuntu.com/ and https://help.ubuntu.com/ and have
barely reached an understanding of how Ubuntu produces its ISOs
(`germinate`, `live-build`, `livecd-rootfs`, and `debootstrap` are all
mentioned in totally isolated contexts). Although I am doing this
research to create a derivative, I'm still interested in Ubuntu as it's
still my go-to distribution. The 'derivative' is just an educational
project, so the benefit of Ubuntu itself is way more important to me.

I've spent most of today experimenting with `live-build` to see if I can
produce a basic Ubuntu ISO (no layered squashed filesystems, which was
also a pain point to understand, but at least something functional). My
code is available at https://github.com/Proman4713/Utile-OS (I
previously used to extract and modify a base Ubuntu ISO; I am migrating
to live-build).

** Affects: live-build (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: fixed-upstream resolute

** Description changed:

  Setting the `--bootloader grub` argument, as per the 
[manpage](https://manpages.ubuntu.com/manpages/resolute/man1/lb_config.1.html#bootloader),
 makes the build process fail:
  ```
  [2026-05-22 23:32:56] lb_binary_grub --verbose
  P: Begin installing grub...
  Reading package lists...
  Building dependency tree...
  Reading state information...
  Package grub-legacy is not available, but is referred to by another package.
  This may mean that the package is missing, has been obsoleted, or
  is only available from another source
  However the following packages replace it:
-   grub-coreboot grub2-common grub-pc grub-ieee1275 grub-efi-ia32
-   grub-efi-amd64
+   grub-coreboot grub2-common grub-pc grub-ieee1275 grub-efi-ia32
+   grub-efi-amd64
  E: Package 'grub-legacy' has no installation candidate
  P: Begin unmounting filesystems...
  P: Saving caches...
  Reading package lists...
  Building dependency tree...
  Reading state information...
  Error: Process completed with exit code 100.
  ```
  
  It seems that even on Ubuntu 26.04 'Resolute Raccoon' as a build environment, 
the `live-build` package still assumes packages such as `grub-legacy`. Here are 
my system details:
  - Build Environment: Ubuntu 26.04 Docker container
  - Target ISO: Ubuntu 26.04
  - Architecture (host and target): amd64
  
  Here is my `lb config` command:
  ```
  lb config \
-             --mode ubuntu \
-             --bootstrap debootstrap \
-             --bootstrap-keyring 
/usr/share/keyrings/ubuntu-archive-keyring.gpg \
-             --distribution resolute \
-             --parent-distribution resolute \
-             --architectures amd64 \
-             --archive-areas "main restricted universe multiverse" \
-             --parent-archive-areas "main restricted universe multiverse" \
-             --mirror-bootstrap http://archive.ubuntu.com/ubuntu/ \
-             --mirror-binary http://archive.ubuntu.com/ubuntu/ \
-             --mirror-binary-security http://security.ubuntu.com/ubuntu/ \
-             --mirror-chroot http://archive.ubuntu.com/ubuntu/ \
-             --mirror-chroot-security http://security.ubuntu.com/ubuntu/ \
-             --bootloader grub \
-             --bootappend-live "boot=casper username=ubuntu quiet splash" \
-             --initramfs casper \
-             --binary-images iso-hybrid \
-             --iso-application "Utile OS Live" \
-             --iso-volume "Utile OS 26 amd64" \
-             --iso-publisher 'Utile; 
https://utile-os-web.mailworker.workers.dev; [email protected]' \
-             --memtest none
+             --mode ubuntu \
+             --bootstrap debootstrap \
+             --bootstrap-keyring 
/usr/share/keyrings/ubuntu-archive-keyring.gpg \
+             --distribution resolute \
+             --parent-distribution resolute \
+             --architectures amd64 \
+             --archive-areas "main restricted universe multiverse" \
+             --parent-archive-areas "main restricted universe multiverse" \
+             --mirror-bootstrap http://archive.ubuntu.com/ubuntu/ \
+             --mirror-binary http://archive.ubuntu.com/ubuntu/ \
+             --mirror-binary-security http://security.ubuntu.com/ubuntu/ \
+             --mirror-chroot http://archive.ubuntu.com/ubuntu/ \
+             --mirror-chroot-security http://security.ubuntu.com/ubuntu/ \
+             --bootloader grub \
+             --bootappend-live "boot=casper username=ubuntu quiet splash" \
+             --initramfs casper \
+             --binary-images iso-hybrid \
+             --iso-application "Utile OS Live" \
+             --iso-volume "Utile OS 26 amd64" \
+             --iso-publisher 'Utile; 
https://utile-os-web.mailworker.workers.dev; [email protected]' \
+             --memtest none
  ```
  
  For context, I disabled memtest because `live-build` was *also* looking
  for an outdated `.bin` suffix for the memtest image, which is no longer
  accurate. But that's a bug for another day.
  
  Considering this is a Docker container, I upgrade all packages and
  install the latest version of `live-build` on every run, so I'm sure of
  that.
  
  Note that upstream's
  [lb_config](https://manpages.debian.org/testing/live-
  build/lb_config.1.en.html) contains different arguments, with different
  pluralisations, and supports multiple bootloaders with the
  `--bootloaders` argument. I assume that Ubuntu's version already deals
  with multiple aspects like `--initramfs casper`, but it seems that
  downstream is outdated.
  
  I am surprised by the scarce documentation and availability on how
  Ubuntu is actually made. I've read a ton of pages at
  https://documentation.ubuntu.com/ and https://help.ubuntu.com/ and have
  barely reached an understanding of how Ubuntu produces its ISOs
  (`germinate`, `live-build`, `livecd-rootfs`, and `debootstrap` are all
  mentioned in totally isolated contexts). Although I am doing this
  research to create a derivative, I'm still interested in Ubuntu as it's
- still my go-to distribution.
+ still my go-to distribution. The 'derivative' is just an educational
+ project, so the benefit of Ubuntu itself is way more important to me.
  
  I've spent most of today experimenting with `live-build` to see if I can
  produce a basic Ubuntu ISO (no layered squashed filesystems, which was
  also a pain point to understand, but at least something functional). My
  code is available at https://github.com/Proman4713/Utile-OS (I
  previously used to extract and modify a base Ubuntu ISO; I am migrating
  to live-build).

** Description changed:

  Setting the `--bootloader grub` argument, as per the 
[manpage](https://manpages.ubuntu.com/manpages/resolute/man1/lb_config.1.html#bootloader),
 makes the build process fail:
  ```
  [2026-05-22 23:32:56] lb_binary_grub --verbose
  P: Begin installing grub...
  Reading package lists...
  Building dependency tree...
  Reading state information...
  Package grub-legacy is not available, but is referred to by another package.
  This may mean that the package is missing, has been obsoleted, or
  is only available from another source
  However the following packages replace it:
    grub-coreboot grub2-common grub-pc grub-ieee1275 grub-efi-ia32
    grub-efi-amd64
  E: Package 'grub-legacy' has no installation candidate
  P: Begin unmounting filesystems...
  P: Saving caches...
  Reading package lists...
  Building dependency tree...
  Reading state information...
  Error: Process completed with exit code 100.
  ```
  
  It seems that even on Ubuntu 26.04 'Resolute Raccoon' as a build environment, 
the `live-build` package still assumes packages such as `grub-legacy`. Here are 
my system details:
  - Build Environment: Ubuntu 26.04 Docker container
  - Target ISO: Ubuntu 26.04
  - Architecture (host and target): amd64
  
  Here is my `lb config` command:
  ```
  lb config \
              --mode ubuntu \
              --bootstrap debootstrap \
              --bootstrap-keyring 
/usr/share/keyrings/ubuntu-archive-keyring.gpg \
              --distribution resolute \
              --parent-distribution resolute \
              --architectures amd64 \
              --archive-areas "main restricted universe multiverse" \
              --parent-archive-areas "main restricted universe multiverse" \
              --mirror-bootstrap http://archive.ubuntu.com/ubuntu/ \
              --mirror-binary http://archive.ubuntu.com/ubuntu/ \
              --mirror-binary-security http://security.ubuntu.com/ubuntu/ \
              --mirror-chroot http://archive.ubuntu.com/ubuntu/ \
              --mirror-chroot-security http://security.ubuntu.com/ubuntu/ \
              --bootloader grub \
              --bootappend-live "boot=casper username=ubuntu quiet splash" \
              --initramfs casper \
              --binary-images iso-hybrid \
              --iso-application "Utile OS Live" \
              --iso-volume "Utile OS 26 amd64" \
              --iso-publisher 'Utile; 
https://utile-os-web.mailworker.workers.dev; [email protected]' \
              --memtest none
  ```
  
  For context, I disabled memtest because `live-build` was *also* looking
  for an outdated `.bin` suffix for the memtest image, which is no longer
  accurate. But that's a bug for another day.
  
  Considering this is a Docker container, I upgrade all packages and
  install the latest version of `live-build` on every run, so I'm sure of
  that.
  
  Note that upstream's
  [lb_config](https://manpages.debian.org/testing/live-
  build/lb_config.1.en.html) contains different arguments, with different
  pluralisations, and supports multiple bootloaders with the
  `--bootloaders` argument. I assume that Ubuntu's version already deals
  with multiple aspects like `--initramfs casper`, but it seems that
  downstream is outdated.
  
+ Also note that there is no real solution, either: Leaving the default 
`syslinux` value also causes an error:
+ ```
+ [2026-05-22 21:00:00] lb_binary_syslinux --verbose
+ P: Begin installing syslinux...
+ Reading package lists...
+ Building dependency tree...
+ Reading state information...
+ Package gfxboot-theme-ubuntu is not available, but is referred to by another 
package.
+ This may mean that the package is missing, has been obsoleted, or
+ is only available from another source
+ E: Unable to locate package syslinux-themes-ubuntu-oneiric
+ E: Package 'gfxboot-theme-ubuntu' has no installation candidate
+ P: Begin unmounting filesystems...
+ P: Saving caches...
+ Reading package lists...
+ Building dependency tree...
+ Reading state information...
+ Error: Process completed with exit code 100.
+ ```
+ Oneiric was Ubuntu **11.10**, released in 2011!
+ 
  I am surprised by the scarce documentation and availability on how
  Ubuntu is actually made. I've read a ton of pages at
  https://documentation.ubuntu.com/ and https://help.ubuntu.com/ and have
  barely reached an understanding of how Ubuntu produces its ISOs
  (`germinate`, `live-build`, `livecd-rootfs`, and `debootstrap` are all
  mentioned in totally isolated contexts). Although I am doing this
  research to create a derivative, I'm still interested in Ubuntu as it's
  still my go-to distribution. The 'derivative' is just an educational
  project, so the benefit of Ubuntu itself is way more important to me.
  
  I've spent most of today experimenting with `live-build` to see if I can
  produce a basic Ubuntu ISO (no layered squashed filesystems, which was
  also a pain point to understand, but at least something functional). My
  code is available at https://github.com/Proman4713/Utile-OS (I
  previously used to extract and modify a base Ubuntu ISO; I am migrating
  to live-build).

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2154055

Title:
  --bootloader grub still looks for grub-legacy

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/live-build/+bug/2154055/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to