Ubuntu Server Seed Changes for 25.10

What follows is a public spec related to the Ubuntu Server seeds. It does not contain specific definitions about seeds, how they relate to the ISOs, nor a long history. It is an implementation spec to show changes planned for 25.10. This is separated into sections: changes for 25.10 and Future. there are also tags with => showing expected change times. Anything in the future is very loose, while those marked for 25.10 will have an MP up in short time. Now on to the spec.

Server Seed

Abstract

Ubuntu Server seeds contain duplication between them (minimal and “full-fat”), repetitive tooling (duplication of functionality), and nothing in the supported-server seed, which defines packages in main, but not seeded into an ISO. The goal of this document is to define a set of seeds that properly define opinionated minimal and “full-fat” server ISO installations and the set of supported by server team software.

Rationale

The Ubuntu server seed has not been evaluated in quite some time. The goal is to trim down installs to what is required and useful. There is also an evaluation of “is this still supported?” This spec aims to document a way forward that creates a default Ubuntu Server installation that serves a broad audience while trimming the total installed packages.

Specification

The Seeds

There is server, server-minimal, server-live, and supported-server. Below there is also discussion “of the pool”

  • Server-minimal must define the smallest amount of packages to have an Ubuntu up and running
    • No editors, no human niceties, etc
  • Server must define a fully-functional, opinionated, performant, easy to manage Ubuntu server
  • Server-live must define packages available for users in an install environment. These are tools the installer requires
  • Supported-server are packages not a part of the install media or the meta-packages
  • “The pool” are packages made available in the Ubuntu installer for setup and installation, based not only on what the installer may need, but also the choices a user may make. They are needed on disk to support offline-installations

25.10 Changes

Terminal multiplexer

Both screen and tmux are available. Tmux is the newer of the two. Move screen to supported and leave tmux the opinionated install.

=> 25.10

Byobu

Remove byobu entirely, letting it fall into universe. Server team will stay subscribed and help triage bugs. Upstream support has stalled in the recent year(s), and while it’s a “nice to have” set of additions, it’s not a required piece of functionality on a server, and does not fit into Ubuntu’s current plans.

=> 25.10

cloud-guest-utils

Stated as being pulled in for growpart for resizing partitions. Why? What is the context here? Is it part of the subiquity experience again? We (Dan Bungert and I) do not believe this is true. Is it part of MAAS and used for resizing on deployment? The use case isn’t discussed. Maybe vmware thin disk provisioning?

Cloud-init depends on it from cloud-init-base as it might use it.

Cloud-init will keep it in main and on images where it is present.

=> 25.10

dirmngr

As a standalone, I’m a little confused. I thought perhaps apt required it, but it doesn’t (only needed gpgv for verification). gnupg relies upon dirmngr and gunpg is seeded. We can drop dirmngr from the direct seed since gnupg will bring it in appropriately.

Drop from seeds, will be kept via GPG until it is no more needed.

=> 25.10

The Future

Curl and wget

Questions questions. wget is listed as “fetch data from the command line.” curl is the same. wget is “easier to use” out of the box. Gut says remove wget from server, put it in supported. This change will cause a large amount of issues – I question the wisdom in doing it, maybe waiting for 26.10 (first post LTS release, 1.5 years to bake)

=> 26.10 possibly

MAAS Requirements

This is an interesting case.

  1. MAAS is, at this time, technically a “cloud-image”

  2. There are 6 packages listed as “required for MAAS”

    1. lvm2
    2. open-iscsi
    3. bcache-tools
    4. cloud-initramfs-copymods
    5. cloud-initramfs-dyn-netconf
    6. overlayroot
  3. open-iscsi is used as a default for Oracle Cloud images as well, but that’s a CPC issue

    1. Currently installed in the build hook, not as part of a seed (it’s only one image)
    2. open-iscsi is in the server-minimal seed
  4. server-minimal includes a portion of the MAAS requirements as well

    1. bcache-tools
    2. lvm2
    3. Open-iscsi

Maas team already does customization on the images CPC sends them, if needed they can add more there.

Reaction

  • Keep lvm2, open-iscsi
  • To pool: Bcache-tools
  • cloud-initramfs-copymods, cloud-initramfs-dyn-netconf, overlayroot, find out info from MAAS
    • If strictly needed, figure out a new MAAS seed?
    • If not, remove

=> 26.10

Filesystem tools (btrfs-progs, xfsprogs)

Need to evaluate their need – is it about “need in the pool, and available based on subiquity options?” or “required default functionality.” Having more things be available but not a part of the meta-package or installed everywhere makes a ton of sense. zfs is in server-ship-live.

recommendation is to move filesystem tools to the pool, available for use by curtin and the installer when detecting a specific filesystem existing or setting a specific filesystem during installation.

  • Needs installer change to tolerate it. It may be a no-op as curtin is already equipped to do this work. We (Dan Bungert and I) believe it “should just work” but lots of testing will need to be done.
  • Zfs is an example of what could be.

=> 26.10

open-vm-tools

I wish there was a way to put this in the pool, and know if the installer is being run in an VMWare setup. I’d also love for it to be in a specific vmware guest image rather than seeded everywhere. This has caused major problems in the past (having an extra agent running in a cloud-image, which can still happen because cloud-image seed installs ubuntu-server). Personally, moving to supported and having it in the pool, with a dynamic installation if in a VMWare guest setup makes the most sense, but I don’t see that happening until 26.10 at the earliest (don’t break an LTS and there will need to be roadmapped work in the installer and other things).

VMware can use any image (OVA by CPC) or ISO (with installer experience). That’s where some complexity rolls in as we need to ensure that that open-vm-tools is available for launching an instance. There’s also questions about portability. However, the same is true when thinking across clouds – by default, an Ubuntu instance running in Azure does not have the google-guest-agent installed. To move a cloud instance from Azure to Google one would need to 1) install google-guest-agent; 2) remove walinuxagent.

  • Needs installer effort to tolerate
  • Needs coordination with VMware and other interested parties to ensure we are always doing the right thing (for installation, portability, etc).

=> 26.10

1 Like

Some notes from my phone:

tmux vs Screen: ubuntu-release-upgrader uses screen

dirmngr I thought I patched out, or rather I changed seeds to gpg from gnupg, hence added that back in.

curl Vs wget: Id add curl in 25.10/26.04, remove wget in 26.10. having the transition for the default by temporarily having both in an lts is useful, that said apt also has a downloader so it’s not like people are entirely lost without a separate program.

1 Like

In the spirit of ‘Linux for human beings’, I’d love to see byobu kept, maintained, and pushed forward :smiling_face_with_three_hearts:

1 Like