https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
В Linux консоль ядра можно настроить с помощьюconsole=
параметра загрузки . Код ядра, который вызывает printk()
, может писать ему сообщения, например. когда устройство загружается или возникает ошибка. Эти сообщения также буферизуются ядром. (См. такжеdmesg
). Когда консольное устройство найдено и запущено, оно получает все ранее буферизованные сообщения.
Вы можете передать console=
несколько раз, чтобы настроить несколько консолей, и сообщения будут записываться на все из них. По-видимому, вы можете выбрать только одну консоль каждого «типа» :, вы не можете использовать одновременно console=ttyS0
и console=ttyS1
.
В документации ядра /dev/console
указано как символьное устройство с номером (5,1)
. Открытие этого символьного устройства открывает «основную» консоль, которая является последней в списке консолей. Первый не -процесс ядра, называемый init
или «PID 1», запускается с /dev/console
, подключенным к стандартному выводу, стандартной ошибке и стандартному вводу.
Если ни одна из консолей не является tty, то открытие /dev/console
возвращает ошибкуENODEV
(«Нет такого устройства» ). Ядро напечатает сообщение журнала и запустит init
в любом случае. Для примера консоли ядра, которая не является устройством tty, см.netconsole
или мою любимую консоль построчный принтер .
Вы также можете увидеть список tty-консолей, прочитав /sys/class/tty/console/active
. В документации systemd указано, что первое показанное устройство — это главная консоль. Список на самом деле находится в порядке, обратном порядку командной строки ядра. Текущая документация ядра неверно указывает, что последнее отображаемое устройство является основной или «активной» консолью.По какой причине можно опросить этот файл на наличие изменений (в случае удаления консольных устройств? ).
Внутри контейнераsystemd-nspawn
стандартный файл /dev/console
заменяется псевдо--терминальным устройством (PTY ). Их лучше всего описать как виртуальные терминальные устройства. Они создаются динамически и также используются для реализации графических эмуляторов терминала, таких как терминал GNOME, и для удаленного доступа, например ssh
.
Узлы устройств Linux TTY сtty1
по tty63
являются виртуальными терминалами. Их также называют VT или виртуальными консолями. Они имитируют несколько консолей поверх драйвера устройства физической консоли. Одновременно отображается и управляется только одна виртуальная консоль. Активный терминал можно переключить, например. используя chvt
или Ctrl+Alt+F1, сколько бы у вас ни было функциональных клавиш.
Вы также можете считывать и записывать текущий VT, используя /dev/tty0
. tty0
— обычная консоль ядра, т.е. если вы не выбрали его явно. «Система сначала ищет карту VGA [на которой работают VT], а затем последовательный порт». Вы также можете настроить консоль на определенный VT, например. console=tty1
.
«Если в вашей системе нет карты VGA, первый последовательный порт автоматически станет консолью». «Последовательная консоль», такая как ttyS0
, вероятно, является наиболее распространенной альтернативой tty0
. Невозможно использовать систему VT поверх последовательной консоли.
/dev/tty
— один из трех стандартных файлов устройств, указанных в POSIX.(/dev/
— одно из трех имен каталогов, указанных в POSIX. ). Его открытие эквивалентно открытию управляющего терминала текущего процесса. Управляющий терминал устанавливается, когда процесс впервые открывает терминал, по крайней мере, в Linux . Например, в init
это будет ссылка на /dev/console
.
Отключение от управляющего терминала — это один из шагов, который традиционно требуется для запуска фонового процесса, например демона системного ведения журнала . Шаги, необходимые для превращения в фоновый процесс, ужасно сложны, но если быть точным, шаг, который отсоединяется от управляющего терминала, — это системный вызов setsid . В более современных системах система инициализации, например. systemd запускает службу без какого-либо управляющего терминала.
Эта ошибка затрагивает и меня. Я использую Fedora 33.
Эта ошибка также затрагивает Ubuntu. В Launchpad уже есть отчет об ошибке:Wi-Fi падает, особенно под нагрузкой