From e652eaf862f6759314156502f30e3e822af1e9f7 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Fri, 18 Nov 2022 10:36:42 +0100 Subject: [PATCH] enable systemd-networkd per preset in fedora 37+ While the template has systemd-networkd enabled, the lack of /etc/machine-id causes systemd to revert to its "preset", where now in /usr/lib/systemd/system-preset/90-default.preset fedora disables systemd-networkd in favor of NetworkManager. Without this patch, the first boot of a fresh fedora 37 container would disable networking requiring a `systemctl enable systemd-networkd` from within the container once, after which it sticks around (until /etc/machine-id is deleted). This patch provides an `/etc/systemd/system-preset/00-pve.preset` file to keep systemd-networkd enabled via the `template_fixup` hook. Signed-off-by: Wolfgang Bumiller --- src/PVE/LXC/Setup/Fedora.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/PVE/LXC/Setup/Fedora.pm b/src/PVE/LXC/Setup/Fedora.pm index aad1eb4..021a44a 100644 --- a/src/PVE/LXC/Setup/Fedora.pm +++ b/src/PVE/LXC/Setup/Fedora.pm @@ -29,6 +29,18 @@ sub template_fixup { sub setup_init { my ($self, $conf) = @_; $self->setup_container_getty_service($conf); + + my $version = $self->{version}; + + if ($version >= 37) { + # systemd-networkd is disabled by the preset in >=37, reenable it + # this only affects the first-boot (if no /etc/machien-id exists). + $self->ct_mkdir('/etc/systemd/system-preset', 0755); + $self->ct_file_set_contents( + '/etc/systemd/system-preset/00-pve.preset', + "enable systemd-networkd.service\n", + ); + } } sub setup_network { -- 2.39.2