Это вообще не связано ни с каким загрузчиком.
Когда драйвер использует общую инфраструктуру загрузки микропрограммы ядра для загрузки файла микропрограммы, ядро может либо загрузить файл непосредственно из стандартного /lib/firmware
дерева каталогов, либо может дополнительно запустить процесс пространства пользователя -для обработки загрузка прошивки.
Этот процесс пространства пользователя -раньше был частью подсистемы hotplug
, затем частью udev
, но я думаю, что в настоящее время он устарел, а версия ядра -является основным средством загрузки встроенного ПО. для любых водителей.
Если вся операция загрузки прошивки занимает больше времени, чем указано в /sys/class/firmware/timeout
, операция будет считаться неудачной. В результате драйвер, запросивший прошивку, скорее всего, тоже выйдет из строя.
Дополнительные сведения можно найти в каталоге Documentation/firmware _class пакета исходного кода ядра Linux.
Обратное видео — это весело.
Модель terminfo упрощена и неверна. Это не соответствует тому, как на самом деле работают эмуляторы терминалов и настоящие терминалы. С терминовой информацией здесь далеко не уедешь.
Модель реальных терминалов на первый взгляд довольно проста:
Для монохромного видеотерминала это просто аппаратная логика исключающего ИЛИ.
Обратный атрибут видео — это, конечно, SGR 7 и SGR 27, и почти никто -не делал ничего, кроме ECMA -48 в течение десятилетий. Настройкой инвертированного видео для всего экрана управляют управляющие последовательности, которые исходят от DEC VT и называются DECSCNM (DEC Screen Mode ). Это частный режим поставщика -, для которого ECMA -48 предоставляет механизм. Последовательности - это просто ECMA -48 SM и RM частного режима DEC #5.
Если вы действительно хотите инвертировать весь экран, а не только следующую строку (с )вывода, вам подойдет DECSCNM. Многие эмуляторы терминала распознают и реагируют на DECSCNM, включая Unicode rxvt, эмуляторы терминала на основе библиотеки VTE, Konsole, kitty, KiTTY, PuTTY, XTerm, Linux, встроенный -в эмуляторе терминала, и мой console-terminal-emulator
в наборе инструментов nosh..
Вы можете распечатать управляющие последовательности DECSCNM с помощью printf
. Для него нет возможности terminfo. Это выходит за рамки ограниченной модели terminfo.Для тех, кто не хочет запоминать управляющие последовательности, мой портативный компьютер setterm
предоставляет удобный и удобный способ сделать это :
% setterm -7 --invertscreen on % setterm -7 --invertscreen off.
Здесь все становится неприятным.
В действительности существует два набора цветов и атрибутов. Есть набор, используемый для рисования печатных символов, и есть набор, используемый для стирания символов и рисования пустых строк и столбцов, которые появляются при прокрутке. Параметр с именем режим стирания цвета(DECECM )определяет, насколько эти два набора не пересекаются. На реальных последних моделях DEC VT по умолчанию они были в основном одинаковыми, цвета стирания / прокрутки соответствовали цветам печати. Однако слишком многие эмуляторы терминала инициализируют свои настройки DECECM в соответствии со старым соглашением, согласно которому цвет стирания/прокрутки отличается от цвета печати и всегда равен SGR 39/SGR 49.
Исходное состояние можно выбрать с помощью флажка в PuTTY, где оно называется стиранием цвета фона. Модель terminfo тоже называет это так, но в обратном порядке. На терминалах, которые изначально имеют его, это настраиваемый режим , а не фиксированный аспект терминала. Он переключается хостом, испускающим управляющие последовательности. Однако terminfo не предоставляет возможности для его установки, а только флаг с фиксированным значением -, указывающий, включен он или выключен, что может не соответствовать текущему состоянию терминала. Опять же, для тех, кто не хочет запоминать управляющие последовательности:
% setterm -7 --bce on % setterm -7 --bce off
Но DECECM , строго говоря, управляет только цветом (фона ). Строго говоря, он не связывает атрибуты . Ячейкам со стертыми/прокручиваемыми символами не нужно присваивать атрибут обратного видео, который назначается для печатных символов (, или любые другие атрибуты, такие как подчеркивание ). Некоторые терминалы (, такие как мой и ядро FreeBSD, построенное -в эмуляторе терминала ), работают, а многие нет.
Более того,это применимо только тогда, когда стирание/прокрутка происходит в первую очередь. Не стирание/прокрутка, но и не печать до полной длины строки также оставит часть другого цвета/атрибута.
Вот почему на многих таких эмуляторах терминала остаток строки виден не в обратном видео. (Если кто-то использует мой эмулятор терминала или FreeBSD KVT, вся строка отображается как перевернутое видео при ее прокрутке или стирании с помощью EL. См. результат printf '\e[7m\e[117hwibble\e[K\n'
.)
Если этого было недостаточно, есть куча странного поведения:
tput setaf 4 ; tput setab 3 ; tput rev ; echo wibbleТерминал Windows, похоже, делает это тоже.
tput setaf 4 ; tput setab 4 ; tput rev ; echo wibble
Можно было бы отказаться от обратного видео и стирания/прокрутки и просто использовать обратное видео на весь экран. Но веселье не прекращается:
Итак, да, это полноэкранное приложение, которое печатает полные -ширины реверсивные видеополосы, либо должно выполнять некоторую работу с последовательностями DECECM и EL (, которые сложно использовать с отложенным переносом, чего я не делал. t даже не упомянул )… или просто печатает много пробелов, явно меняет местами цвета переднего плана и фона, а сторона -полностью переворачивает видео.
setterm
. Направляющая ноша . Программное обеспечение.