Ubuntu 18.04 LTS (Bionic Beaver) Server Installer differences

Ubuntu 18.04 LTS Server comes now in two flavors with different installers:

  • Ubuntu Server (new Ubuntu-specific Subiquity installer, ubuntu-18.04-live-server-amd64.iso)
  • Alternative Ubuntu Server installer (Debian installer, ubuntu-18.04-server-amd64.iso)

Canonical itself refers to the traditional installer for advanced networking and storage features. However, there are also other differences, this blog post looks into them.

Ubuntu 18.04 LTS Server Live (Subiquity)
Ubuntu 18.04 LTS Server (Debian Installer)

Installed Packages

After installing the two Ubuntu Server flavors on a KVM virtualized machine, selecting English language and clicking through the installer with default selection (and not using LVM in the Debian installer case) there is a slight difference in installed packages.

The new Subiquity installer installs some packages which the Debian installer did not install (ubuntu-18.04-live-server-packages):

  • cloud-init
  • eatmydata/libeatmydata1
  • gdisk
  • ncurses-term
  • openssh-server/openssh-sftp-server/ssh-import-id
  • thermald
  • some libraries and Python 3 libraries

On the other hand, the Debian installer installs some packages which the Subiquity installer did not install (ubuntu-18.04-server-packages):

  • installation-report
  • language-pack-en/language-pack-en-base
  • laptop-detect
  • tasksel/tasksel-data

The probably most notable difference is that Subiquity installs OpenSSH by default and cloud-init. It seems that Subiquity uses cloud-init as a backend, although it is not listed as a direct dependency.

The Subiquity installation consumed about 1.5GiB of space and the Debian installer installation consumed about 1.7GiB of space. The difference is mainly due to differences in /var, specifically, the Debian installer had packages in the apt cache.

Both installers use a swap file on the root filesystem by default. The default size was different though: For my 1GiB Memory/20 GiB Harddrive virtual machine the Subiquity installer allocated 2GiB whereas the Debian installer used 948MiB.

Network configuration

As noted by the official release notes netplan replaces ifupdown now. netplan uses YAML description files which get translated in various backends. Ubuntu Server uses systemd-networkd as its default backend. However, with the Subiquity it seems that with cloud-init there is another layer above netplan.

With the Debian installer the default network configuration file is called 01-netcfg.yam and has the following content when using a DHCP configuration:

# This file describes the network interfaces available on your system 
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: yes

With Subiquity the default network configuration file is called 50-cloud-init.yaml and looks like this:

# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens3:
            addresses: []
            dhcp4: true
            optional: true
    version: 2

In /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg there is a similar cloud-init configuration file. While the netplan file warns that it might get overwritten, I was not able to use the cloud-init file to change the netplan network configuration… I am not 100% sure if it is safe to edit the netplan directly in the default configuration. Disabling network functionality of cloud-init as suggested or removing cloud-init is the safer option.

Final words

Another less relevant difference is the default console font. Debian installer seems to use “VGA” by default whereas Subiquity uses “Fixed” as FONTFACE in /etc/default/console-setup. The apt configuration seems to be different too, the Debian installer version has a lot less package repositories enabled by default (only bionic-security/bionic/bionic-updates/bionic-backports).

There are certainly other differences between the two installation, especially related to the cloud-init usage of Subiquity.

Note that this is only about new installations from scratch. Updating from 16.04 LTS installation is a different story altogether. E.g. in that case, Ubuntu does not migrate from ifupdown to netplan…

2 Replies to “Ubuntu 18.04 LTS (Bionic Beaver) Server Installer differences”

  1. “In /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg there is a similar cloud-init configuration file. While the netplan file warns that it might get overwritten, I was not able to use the cloud-init file to change the netplan network configuration…”

    I think the “cloud-init” version is oriented towards LXD containers. An LXD container is originally created from an “Image” which serves as a template. (An image cannot be “run”, it only serves as a template). When a new LXD container is run/booted/started for the first time (only), cloud-init is invoked and the *.cfg files for that container are used to set up the network and other system configurations.

    The window of modification for modifying container cloud-init configuration is therefore before the first run/boot/start.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.