From 59c2556942866d505616bcf2906e94d9ffc23279 Mon Sep 17 00:00:00 2001 From: Olivier Lemasle Date: Oct 26 2021 19:06:17 +0000 Subject: Backport PR #1611 to fix network manager when console is not usable --- diff --git a/0001-fix-network-manager-disable-tty-if-no-console.patch b/0001-fix-network-manager-disable-tty-if-no-console.patch new file mode 100644 index 0000000..6cd85e0 --- /dev/null +++ b/0001-fix-network-manager-disable-tty-if-no-console.patch @@ -0,0 +1,106 @@ +From 5ddcd63cc23dc8cf5afe00655bf05319a851a60f Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Mon, 27 Sep 2021 13:08:34 +0200 +Subject: [PATCH 1/2] fix(network-manager): show output on console only with + rd.debug enabled + +The module should show the output on console only when initrd debugging is +enabled. +--- + modules.d/35network-manager/nm-config.sh | 9 +++++++++ + modules.d/35network-manager/nm-initrd.service | 4 +++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/modules.d/35network-manager/nm-config.sh b/modules.d/35network-manager/nm-config.sh +index 74b6db54a4..85f89cb03d 100755 +--- a/modules.d/35network-manager/nm-config.sh ++++ b/modules.d/35network-manager/nm-config.sh +@@ -16,6 +16,15 @@ if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then + echo '[logging]' + echo 'level=TRACE' + ) > /run/NetworkManager/conf.d/initrd-logging.conf ++ ++ if [ -n "$DRACUT_SYSTEMD" ]; then ++ mkdir -p /run/systemd/system/nm-initrd.service.d ++ cat << EOF > /run/systemd/system/nm-initrd.service.d/tty-output.conf ++[Service] ++StandardOutput=tty ++EOF ++ systemctl --no-block daemon-reload ++ fi + fi + + nm_generate_connections +diff --git a/modules.d/35network-manager/nm-initrd.service b/modules.d/35network-manager/nm-initrd.service +index b9806de084..ad14e91ad1 100644 +--- a/modules.d/35network-manager/nm-initrd.service ++++ b/modules.d/35network-manager/nm-initrd.service +@@ -17,7 +17,9 @@ BusName=org.freedesktop.NetworkManager + ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0 + ExecStart=/usr/sbin/NetworkManager --debug + KillMode=process +-StandardOutput=tty ++# The following gets changed to StandardOutput=tty by nm-config.sh ++# when debug is enabled. ++StandardOutput=null + Environment=NM_CONFIG_ENABLE_TAG=initrd + Restart=on-failure + ProtectSystem=true + +From aa55f515b51a67f5ac9298b7bcb11158cdf885ff Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Mon, 27 Sep 2021 13:25:55 +0200 +Subject: [PATCH 2/2] fix(network-manager): disable tty output if the console + is not usable + +The network-manager module also writes logs to the console, so that it's easier +to debug network-related boot issues. If systemd can't open the console, the +service fails and network doesn't get configured. + +Add a check to disable tty output when the console is not present or not +usable. + +https://github.com/coreos/fedora-coreos-tracker/issues/943 +--- + modules.d/35network-manager/nm-config.sh | 11 ++++++++--- + modules.d/35network-manager/nm-initrd.service | 2 +- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/modules.d/35network-manager/nm-config.sh b/modules.d/35network-manager/nm-config.sh +index 85f89cb03d..2b13d0a792 100755 +--- a/modules.d/35network-manager/nm-config.sh ++++ b/modules.d/35network-manager/nm-config.sh +@@ -18,12 +18,17 @@ if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then + ) > /run/NetworkManager/conf.d/initrd-logging.conf + + if [ -n "$DRACUT_SYSTEMD" ]; then +- mkdir -p /run/systemd/system/nm-initrd.service.d +- cat << EOF > /run/systemd/system/nm-initrd.service.d/tty-output.conf ++ # Enable tty output if a usable console is found ++ # See https://github.com/coreos/fedora-coreos-tracker/issues/943 ++ # shellcheck disable=SC2217 ++ if [ -w /dev/console ] && (echo < /dev/console) > /dev/null 2> /dev/null; then ++ mkdir -p /run/systemd/system/nm-initrd.service.d ++ cat << EOF > /run/systemd/system/nm-initrd.service.d/tty-output.conf + [Service] + StandardOutput=tty + EOF +- systemctl --no-block daemon-reload ++ systemctl --no-block daemon-reload ++ fi + fi + fi + +diff --git a/modules.d/35network-manager/nm-initrd.service b/modules.d/35network-manager/nm-initrd.service +index ad14e91ad1..3e24f52a0a 100644 +--- a/modules.d/35network-manager/nm-initrd.service ++++ b/modules.d/35network-manager/nm-initrd.service +@@ -18,7 +18,7 @@ ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/ + ExecStart=/usr/sbin/NetworkManager --debug + KillMode=process + # The following gets changed to StandardOutput=tty by nm-config.sh +-# when debug is enabled. ++# when debug is enabled and a usable console is found. + StandardOutput=null + Environment=NM_CONFIG_ENABLE_TAG=initrd + Restart=on-failure diff --git a/dracut.spec b/dracut.spec index 453839a..4454e95 100644 --- a/dracut.spec +++ b/dracut.spec @@ -5,7 +5,7 @@ # strip the automatically generated dep here and instead co-own the # directory. %global __requires_exclude pkg-config -%define dist_free_release 5 +%define dist_free_release 6 Name: dracut Version: 055 @@ -50,6 +50,8 @@ Patch4: 0001-fix-90kernel-modules-add-Type-C-USB-drivers-for-gene.patch # https://bugzilla.redhat.com/show_bug.cgi?id=2010058 # https://github.com/dracutdevs/dracut/pull/1584 Patch5: 0001-fix-kernel-modules-add-blk_mq_alloc_disk-and-blk_cle.patch +# Network manager: disable tty output if the console is not usable +Patch6: https://github.com/dracutdevs/dracut/pull/1611.patch#/0001-fix-network-manager-disable-tty-if-no-console.patch BuildRequires: bash BuildRequires: git-core @@ -503,6 +505,9 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/ %{_prefix}/lib/kernel/install.d/51-dracut-rescue.install %changelog +* Tue Oct 26 2021 Olivier Lemasle - 055-6 +- Backport PR #1611 to fix network manager when console is not usable + * Mon Oct 18 2021 Adam Williamson - 055-5 - Backport PR #1584 to fix missing block drivers, boot in EC2 (#2010058)