From f6e6be245d0cda14d90a0442b688c8dca1410a2e Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 27 Sep 2021 13:25:55 +0200 Subject: [PATCH] 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