Files
Johnathan Corgan ddaf4ff5f5 fix(testing): boot the systemd install containers without --privileged
The deb-install and dns-resolver harnesses boot systemd inside
containers started with --privileged. A privileged container sees the
host's real VT and serial devices and a writable /proc/sys and /sys, so
the image's systemd acts on the host: it starts a getty on the host's
tty1, where each side's hangup kills the other's getty until the host
unit hits its start limit and the machine has no console login; logind
holds tty6; and systemd-sysctl applies the image's sysctl.d to the
host's kernel parameters. The Fedora image also sets up the host's
virtual consoles and runs a udev coldplug against the host's /sys.

Start the containers with SYS_ADMIN and NET_ADMIN and an unconfined
AppArmor profile instead. That is what the suites use privilege for:
mount namespaces for the units' sandboxing, TUN and dummy links, and
nftables in the container's own network namespace. The default AppArmor
profile denies the mounts systemd makes, so the profile override is
needed on AppArmor hosts. The containers then have no host console
devices, and docker's /proc/sys and /sys mounts are read-only, so the
getty, logind VT, sysctl, vconsole and udev units above skip on their
own conditions and nothing has to be listed per image. The cgroup tree
the harnesses bind in for systemd stays writable, as before.

IPv6 forwarding for the gateway checks is now set with --sysctl at
start, since /proc/sys is no longer writable from inside. Forwarding is
therefore on for the whole scenario, including the install and resolver
checks that run before the gateway, where it used to be off until the
gateway step.

A check after each container start fails the suite if the container
can see a host console device or write /proc/sys or /sys, so restoring
--privileged turns the run red rather than quietly reaching the host.

Measured: all 13 dns-resolver and 5 deb-install scenarios pass, with the
check passing once per container. The four host kernel parameters the
Fedora image's sysctl.d sets to other values were unchanged across the
dns-resolver run. In the e2e-debian12 container, no tty device
nodes exist, no process holds a tty and /proc/sys and /sys are
read-only; before the change the same container had agetty on the
host's tty1 and logind on tty6. With --privileged restored on one start
function the check fails and the suite exits non-zero.
2026-09-11 02:51:45 +00:00
..