Skip to content

Commit

Permalink
coreos-printk-quiet.service: Lower kernel log level to 4
Browse files Browse the repository at this point in the history
Closes: coreos/fedora-coreos-tracker#1244

A lot going on for this simple service.  See the tracker issue above
for more info, but briefly:

Anaconda has historically injected `quiet` into the kernel command
line in many cases, and this suppresses *both* kernel and systemd
output.  On computers in general, but particularly many bare metal
servers, the serial console can be slow.  This can cause reliability
issues.

However for servers, we usually *do* want to see informational
output when they boot.  For example, today the kernel "mitigations"
information for hardware vulnerabilities is output.

This change is a compromise; we boot up at the kernel's default
verbosity level (which for Fedora and derivatives is the upstream 7),
but switch to 4 very early on in the real root.  At that point, we've
gotten most of the boot time output, and our initramfs is not
extremely performance sensitive right now.

Also, we explicitly only *lower* the output log level, and only if
there isn't explicitly `debug` on the kernel command line.
  • Loading branch information
cgwalters committed Jul 13, 2022
1 parent 55c8d7c commit 21543e0
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ enable console-login-helper-messages-gensnippet-os-release.service
enable console-login-helper-messages-gensnippet-ssh-keys.service
# CA certs (probably to add to base fedora eventually)
enable coreos-update-ca-trust.service
# Our printk bits
enable coreos-printk-quiet.service
# https://github.com/coreos/ignition/issues/1125
enable coreos-ignition-firstboot-complete.service
# Delete Ignition config from provider on platforms where it's possible
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[Unit]
Description=CoreOS: Set printk to level 4 (warn)
Documentation=https://github.com/coreos/fedora-coreos-tracker/issues/1244
# We can run right after `/proc` being mounted at least
DefaultDependencies=no
After=sysinit.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -euo pipefail -c 'target=4; current=$(cat /proc/sys/kernel/printk | cut -f 1); if test $current -gt $target; then echo "Updating printk to $target"; echo $target > /proc/sys/kernel/printk; fi'

[Install]
WantedBy=basic.target
1 change: 1 addition & 0 deletions tests/kola/logging/data/commonlib.sh
16 changes: 16 additions & 0 deletions tests/kola/logging/printk.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash
# kola: { "exclusive": false }

# Verify fix for https://github.com/coreos/fedora-coreos-tracker/issues/1244

set -xeuo pipefail

. $KOLA_EXT_DATA/commonlib.sh

printk=$(cat /proc/sys/kernel/printk)

if ! [[ "$printk" =~ ^4 ]]; then
fatal "printk: expected console log level 4, found ${printk}"
fi

ok "Found expected printk value "

0 comments on commit 21543e0

Please sign in to comment.