Hi,
As part of the UC24 work, console-conf which was originally part of the boot base snap has been moved to a snap which users can optionally include when building Ubuntu Core images.
In short, console-conf provides an onboarding experience for Ubuntu Core systems, as such, it allows to set up the network (via netplan), add an initial user (by talking to snapd over /run/snapd.socket).
The original code lives under https://github.com/canonical/subiquity and the snap is packaged in this repository: https://github.com/snapcore/console-conf-snap
I have already opened a request to transfer the ownership of the snap to the ‘canonical’ account in Transfer `console-conf` to canonical and requested a 24
track in Request for '24' track for 'console-conf'
I have published a revision of a snap which does not use interfaces that have allow-installation: false
in the snapd base declaration, but we are otherwise blocked form using the snap in UC24.
I would like to request the following.
Auto connections
- hardware-observe
- network-observe
- network-control
- network-setup-control
These are all required for setting up a network configuration and then applying it using netplan.
Allow-installation and auto-connect
-
snapd-control - this is required to request snapd to create a user to claim the device
-
system-files defined as:
console-conf-runtime-support: interface: system-files write: - /run/console-conf - /var/log/console-conf
The
/var/log/console-conf
is where logs are stored by default./run/console-conf
is the runtime state and is used to pass data from unconfined service wrappers executing from the boot base -
custom-device defined as:
plugs:
terminal-control:
interface: custom-device
slots:
terminal-devices:
interface: custom-device
custom-device: terminal-control
# XXX this could use x11/wayland/mir interface, but we only need a subset of
# the permissions provided by each
devices:
- /dev/tty[0-9]
- /dev/ttyS[0-9]
udev-tagging:
- kernel: tty[0-9]
subsystem: tty
- kernel: ttyS[0-9]
subsystem: tty
The main console-conf proces inherits the file descriptor of a tty device from its shell wrapper executed by systemd as console-conf@<tty>
service. However, when executing as a recovery system chooser, console-conf is communicating with snap-recovery-chooser over stdin/stdout and needs to open appropriate /dev/tty* itself. I looked at x11/wayland/mir, but the slot side gives a lot of permissions that are not needed here.
Please see https://github.com/snapcore/console-conf-snap/blob/main/snap/snapcraft.yaml for further reference.