Ответ 1
Я думаю, что /sys/devices/virtual/tty/console/active
- это то, что вы ищете.
Имеется файл устройства с именем /dev/console
, (major,minor)
которого (5,1)
.
Когда я загружаюсь с последовательной консолью, он подключается к моему порту UART как /dev/ttyS0
.
Но когда я загружаюсь с отключенной последовательной консолью, /dev/console
, похоже, подключается в другом месте, где /dev/ttyS0
всегда подключается к одному физическому устройству, а именно UART0
.
Есть ли какое-либо указание (например, что-то в /proc
или /sys
), показывающее такую информацию? Я пробовал там, но ничего не нашел.
Я начинаю отслеживать источник ядра Linux, чтобы прояснить их отношения.
Может ли кто-нибудь дать мне несколько советов? Когда, где, как и что определять физическое устройство, к которому подключается /dev/console
?
EDIT: последнее открытие:
/dev/console
настраивается параметрами ядра console=
, который, в свою очередь, используется getty
для открытия stdin/stdout/stderr
. Если не указано console=
, /dev/null
открывается как stdin/stdout/stderr
. Но я не уверен, что они точно совпадают с /dev/console
, что подразумевает, что /dev/console
может подключаться к различным физическим устройствам./dev/console
можно прочитать, если USB HID-клавиатура подключена, а console=
не настроен как UART. Поэтому /dev/console
== /dev/null
кажется мало смысла.
Необходимо больше исследований.Я думаю, что /sys/devices/virtual/tty/console/active
- это то, что вы ищете.
От http://man7.org/linux/man-pages/man4/console.4.html: "Текущая консоль также рассматривается /dev/console или /dev/tty 0, символьное устройство с большим номером 4 и младшее число 0.
Надеюсь, это было то, что вы искали.