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