[PATCH v11 0/1] Optionally allow ttynull to be selected as a default console

From: adamsimonelli
Date: Fri Mar 14 2025 - 08:52:59 EST


From: Adam Simonelli <adamsimonelli@xxxxxxxxx>

When switching to a CONFIG_VT=n world, at least on x86 systems,
/dev/console becomes /dev/ttyS0. This can cause some undesired effects.
/dev/console's behavior is now tied to the physical /dev/ttyS0, which when
disconnected can cause isatty() to fail when /dev/ttyS0 is disconnected,
and users who upgrade to a theoretical vt-less kernel from their
distribution who have a device such as a science instrument connected to
their /dev/ttyS0 port will suddenly see it receive kernel log messages.

When the new CONFIG_NULL_TTY_DEFAULT_CONSOLE option is turned on, this will
allow the ttynull device to be leveraged as the default console. Distributions
that had CONFIG_VT turned on before will be able to leverage this option
to where /dev/console is still backed by a pseudo device, avoiding these
issues, without needing to enable the entire VT subsystem.

v2:
rebase

v3:
Clarify commit messages.

Guard the all the register_console()s in ttynull to prevent it from being
registered twice.

Only change the link order if CONFIG_NULL_TTY_CONSOLE is enabled, otherwise
use the existing order for ttynull if only CONFIG_NULL_TTY is enabled.

Document why the link order changes in the drivers/tty/Makefile file.

Replace #ifdefs

v4:
Remember to actually include the changes to v3 in the cover letter.

v5:
Correct code formatting in Makefile comment.

v6:
Change to CONFIG_NULL_TTY_DEFAULT_CONSOLE

Set the index to -1, and don't set the flags

Use add_preferred_console() instead of register_console() in ttynull's
console_initcall when CONFIG_NULL_TTY_DEFAULT_CONSOLE is enabled

v7
Add a commit message to the first commit, and the Suggested-by

Correct Kconfig tabs/spaces formatting

Invert the console_set_on_cmdline check

v8
Update Documentation.

Remove the "CONFIG_" in the help text when mentioning other configuration
options.

Update commit message

v9
Spell pseudo correctly in the cover letter.

Use more clear, and suggested help text for NULL_TTY_DEFAULT_CONSOLE.

Do not set ttynull's index to -1 anymore.

Do not rely on link order, call add_preferred_console() in console_init().

Merge the Documentation/admin-guide/serial-console.rst change into one commit.

v10
Fix commit message to mention the option correctly. Don't mention the older
commit option from older revisions.

v11
Fix spacing

Fix spelling error in commit message, remove no longer true statement from
commit message, and add clarifying line.

Adam Simonelli (1):
printk: Add an option to allow ttynull to be a default console device

Documentation/admin-guide/serial-console.rst | 4 +++-
drivers/tty/Kconfig | 19 ++++++++++++++++++-
kernel/printk/printk.c | 5 +++++
3 files changed, 26 insertions(+), 2 deletions(-)

--
2.45.2