mirror of https://github.com/torvalds/linux.git
printk: Add an option to allow ttynull to be a default console device
The new option is CONFIG_NULL_TTY_DEFAULT_CONSOLE. if enabled, and CONFIG_VT is disabled, ttynull will become the default primary console device. ttynull will be the only console device usually with this option enabled. Some architectures do call add_preferred_console() which may add another console though. Motivation: Many distributions ship with CONFIG_VT enabled. On tested desktop hardware if CONFIG_VT is disabled, the default console device falls back to /dev/ttyS0 instead of /dev/tty. This could cause issues in user space, and hardware problems: 1. The user space issues include the case where /dev/ttyS0 is disconnected, and the TCGETS ioctl, which some user space libraries use as a probe to determine if a file is a tty, is called on /dev/console and fails. Programs that call isatty() on /dev/console and get an incorrect false value may skip expected logging to /dev/console. 2. The hardware issues include the case if a user has a science instrument or other device connected to the /dev/ttyS0 port, and they were to upgrade to a kernel that is disabling the CONFIG_VT option, kernel logs will then be sent to the device connected to /dev/ttyS0 unless they edit their kernel command line manually. The new CONFIG_NULL_TTY_DEFAULT_CONSOLE option will give users and distribution maintainers an option to avoid this. Disabling CONFIG_VT and enabling CONFIG_NULL_TTY_DEFAULT_CONSOLE will ensure the default kernel console behavior is not dependent on hardware configuration by default, and avoid unexpected new behavior on devices connected to the /dev/ttyS0 serial port. Reviewed-by: Petr Mladek <pmladek@suse.com> Tested-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> Link: https://lore.kernel.org/r/20250314160749.3286153-2-adamsimonelli@gmail.com [pmladek@suse.com: Fixed indentation of the commit message.] Signed-off-by: Petr Mladek <pmladek@suse.com>
This commit is contained in:
parent
4ca6c02227
commit
2f1f7787b6
|
|
@ -78,7 +78,9 @@ If no console device is specified, the first device found capable of
|
||||||
acting as a system console will be used. At this time, the system
|
acting as a system console will be used. At this time, the system
|
||||||
first looks for a VGA card and then for a serial port. So if you don't
|
first looks for a VGA card and then for a serial port. So if you don't
|
||||||
have a VGA card in your system the first serial port will automatically
|
have a VGA card in your system the first serial port will automatically
|
||||||
become the console.
|
become the console, unless the kernel is configured with the
|
||||||
|
CONFIG_NULL_TTY_DEFAULT_CONSOLE option, then it will default to using the
|
||||||
|
ttynull device.
|
||||||
|
|
||||||
You will need to create a new device to use ``/dev/console``. The official
|
You will need to create a new device to use ``/dev/console``. The official
|
||||||
``/dev/console`` is now character device 5,1.
|
``/dev/console`` is now character device 5,1.
|
||||||
|
|
|
||||||
|
|
@ -383,7 +383,24 @@ config NULL_TTY
|
||||||
available or desired.
|
available or desired.
|
||||||
|
|
||||||
In order to use this driver, you should redirect the console to this
|
In order to use this driver, you should redirect the console to this
|
||||||
TTY, or boot the kernel with console=ttynull.
|
TTY, boot the kernel with console=ttynull, or enable
|
||||||
|
NULL_TTY_DEFAULT_CONSOLE.
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
|
config NULL_TTY_DEFAULT_CONSOLE
|
||||||
|
bool "Support for console on ttynull"
|
||||||
|
depends on NULL_TTY=y && !VT_CONSOLE
|
||||||
|
help
|
||||||
|
Say Y here if you want the NULL TTY to be used as a /dev/console
|
||||||
|
device by default.
|
||||||
|
|
||||||
|
For example, it might be useful to prevent a VT-less kernel from
|
||||||
|
writing the system log to a random device connected to the serial
|
||||||
|
port.
|
||||||
|
|
||||||
|
Another console driver still might get preferred via the command
|
||||||
|
line, SPCR, or the device tree.
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4277,6 +4277,11 @@ void __init console_init(void)
|
||||||
initcall_t call;
|
initcall_t call;
|
||||||
initcall_entry_t *ce;
|
initcall_entry_t *ce;
|
||||||
|
|
||||||
|
#ifdef CONFIG_NULL_TTY_DEFAULT_CONSOLE
|
||||||
|
if (!console_set_on_cmdline)
|
||||||
|
add_preferred_console("ttynull", 0, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Setup the default TTY line discipline. */
|
/* Setup the default TTY line discipline. */
|
||||||
n_tty_init();
|
n_tty_init();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue