stringtranslate.com

Linux-консоль

Упрощенная структура ядра Linux: подсистема VT
Консоль буфера кадров, показывающая загрузку Knoppix . Наличие изображения пингвина указывает на то, что это консоль буфера кадров, а не текстовая консоль.

Консоль Linux — это системная консоль, внутренняя для ядра Linux . Системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и которое позволяет входить в систему в однопользовательском режиме. [1] Консоль Linux предоставляет ядру и другим процессам способ отправлять текстовый вывод пользователю и получать текстовый ввод от пользователя. Обычно пользователь вводит текст с клавиатуры компьютера и читает выводимый текст на мониторе компьютера . Ядро Linux поддерживает виртуальные консоли — консоли, которые логически разделены, но которые получают доступ к одной и той же физической клавиатуре и дисплею. [2] Консоль Linux (и виртуальные консоли Linux) реализованы подсистемой VT (виртуальный терминал) ядра Linux и не полагаются на какое-либо программное обеспечение пользовательского пространства . [3] Это отличается от эмулятора терминала , который является процессом пользовательского пространства, который эмулирует терминал и обычно используется в графической среде отображения.

Консоль Linux была одной из первых функций ядра и была первоначально написана Линусом Торвальдсом в 1991 году [4] (см. историю Linux ). Существует две основные реализации: кадровый буфер и текстовый режим . Реализация кадрового буфера используется по умолчанию в современных дистрибутивах Linux , и вместе с настройкой режима ядра обеспечивает поддержку на уровне ядра для оборудования отображения и таких функций, как отображение графики во время загрузки системы. [5] Устаревшая реализация текстового режима использовалась в ПК-совместимых системах с графическими картами CGA , EGA , MDA и VGA . Архитектуры, отличные от x86, использовали режим кадрового буфера, поскольку их графические карты не реализовывали текстовый режим. [5] Консоль Linux использует растровые изображения фиксированного размера , моноширинные шрифты , обычно по умолчанию 8x16 пикселей на символ. [5]

Консоль Linux является дополнительной функцией ядра, и большинство встроенных систем Linux не поддерживают ее. Эти системы обычно предоставляют альтернативный пользовательский интерфейс (например, веб-интерфейс) или сразу загружаются в графический пользовательский интерфейс и используют его в качестве основного средства взаимодействия с пользователем. Другие реализации консоли Linux включают консоль Брайля для поддержки обновляемых дисплеев Брайля [6] и консоль последовательного порта . [7]

Цель

Консоль Linux предоставляет ядру и другим процессам возможность выводить текстовые сообщения пользователю и получать текстовый ввод от пользователя. В Linux в качестве системной консоли можно использовать несколько устройств: виртуальный терминал, [8] последовательный порт, [9] последовательный порт USB, [10] VGA в текстовом режиме, [11] кадровый буфер. [12] Некоторые современные системы на базе Linux не поддерживают текстовый режим ввода и вывода на основе ядра и вместо этого показывают графический логотип или индикатор выполнения во время загрузки системы, за которым следует немедленный запуск графического пользовательского интерфейса (например, X.Org Server в настольных дистрибутивах или SurfaceFlinger на Android).

Во время загрузки ядра консоль обычно используется для отображения журнала загрузки ядра. Журнал загрузки содержит информацию об обнаруженном оборудовании и обновления статуса процедуры загрузки. В этот момент ядро ​​является единственным запущенным программным обеспечением, и, следовательно, ведение журнала через пользовательское пространство (например, syslog ) невозможно, поэтому консоль предоставляет удобное место для вывода этой информации. После завершения загрузки ядра оно запускает процесс init (также отправляя вывод на консоль), который обрабатывает загрузку остальной части системы, включая запуск любых фоновых демонов .

После завершения процесса загрузки init консоль будет использоваться для мультиплексирования нескольких виртуальных терминалов (доступных нажатием Ctrl-Alt-F1, Ctrl-Alt-F2 и т. д., Ctrl-Alt-LeftArrow, Ctrl-Alt-RightArrow или с помощью chvt [13] ). На каждом виртуальном терминале запускается процесс getty, который в свою очередь запускает / bin /login для аутентификации пользователя. После аутентификации будет запущена командная оболочка . Виртуальные терминалы, как и консоль, поддерживаются на уровне ядра Linux. [14]

Консоль Linux реализует тип терминала «linux», а используемые ею escape-последовательности приведены на странице руководства console_codes . [15]

Виртуальные консоли

Виртуальные консоли позволяют хранить несколько текстовых буферов, позволяя различным консольным программам работать одновременно, но взаимодействовать с пользователем в разных контекстах. С точки зрения пользователя это создает иллюзию нескольких независимых консолей.

Каждая виртуальная консоль может иметь свой собственный набор символов и раскладку клавиатуры. В Linux 2.6 появилась возможность загружать разные шрифты для каждой виртуальной консоли (версии ядра до 2.6 изменяют шрифт только по требованию).

Консоль текстового режима

Реализация текстового режима используется в системах на базе ПК с устаревшей видеокартой CGA/EGA/MDA/VGA, которая реализует текстовые видеорежимы. В текстовом режиме ядро ​​отправляет 2D-массив символов на видеокарту, а видеокарта преобразует символы в пиксели для отображения.

Шрифт, набор символов и раскладка клавиатуры

Текстовый буфер — это часть памяти VGA, которая описывает содержимое текстового экрана в терминах кодовых точек и атрибутов символов. Кодовые точки в текстовом буфере и шрифте, как правило, не совпадают с кодировкой, используемой в семантике текстового терминала для размещения символов на экране. Набор глифов на экране определяется текущим шрифтом . Текстовый экран обрабатывается драйверами console.c и consolemap.c . Существует утилита для изменения шрифтов и кодировок терминала, которая называется consolechars .

Ядро Linux ( драйвер keyboard.c ) имеет почти полную поддержку ввода с клавиатуры ( раскладки клавиатуры ), но она остается немного непоследовательной, поскольку плохо взаимодействует с различными наборами символов. Раскладки загружаются утилитой loadkeys .

Эти две утилиты и соответствующие файлы данных упакованы в Linux Console Tools http://lct.sourceforge.net/, поставляемые со многими дистрибутивами Linux .

Попытки интернационализации Linux на уровне ядра были начаты еще в 1994 году Маркусом Куном и Андрисом Брауэром .

Текстовые режимы

Консоль Linux способна поддерживать любой текстовый режим в стиле VGA, но само ядро ​​имеет очень ограниченные средства для настройки этих режимов. SVGATextMode помогает включать более сложные текстовые режимы, чем стандартные режимы EGA и VGA. Он полностью совместим с Console Tools, но имеет некоторые конфликты с dosemu , SVGAlib и display servers .

В настоящее время поддержка различных режимов на разных виртуальных консолях отсутствует.

Сравнение с Windows и DOS

Microsoft Windows (любой версии) не имеет полноценной поддержки консоли [ когда? ] . Аналогичная функция там, но только для прикладного ПО, — это консоль Win32 .

  1. a b Unicode поддерживается начиная с систем на базе Windows NT , которые позволяют переключать кодовые страницы и использовать Unicode, но только в оконном режиме. Кроме того, системы NT используют собственный формат текстового буфера, несовместимый с VGA, что приводит к накладным расходам в аппаратных текстовых режимах. Поддержка Unicode отсутствует в не-NT версиях Windows
  2. a Поскольку не-ASCII раскладка клавиатуры должна быть перезагружена из-за некорректной реализации.
  3. Настройки режима ядра в последних версиях ядра делают это более практичным для некоторого видеооборудования.

Консоль фреймбуфера Linux

Linux framebuffer (fbdev) — это графический аппаратно-независимый абстрактный слой, который изначально был реализован, чтобы позволить ядру Linux эмулировать текстовую консоль на таких системах, как Apple Macintosh, не имеющих текстового дисплея. Теперь он предлагает эмуляцию текстового режима в пространстве ядра на любой платформе. Его преимущество перед (в настоящее время неподдерживаемым) SVGATextMode заключается в надежности и лучшей аппаратной совместимости. Он также позволяет преодолеть все технические ограничения текстовых режимов VGA .

Консоль Linux framebuffer отличается от VGA только способами отрисовки символов. Обработка событий клавиатуры и поддержка виртуальных консолей абсолютно одинаковы.

Консоль последовательного порта Linux

Последовательная консоль Linux — это реализация консоли через последовательный порт , включаемая опцией CONFIG_SERIAL_CONSOLE в конфигурации ядра. Она может использоваться в некоторых встроенных системах и на серверах , где не предполагается прямое взаимодействие с оператором . Последовательная консоль обеспечивает тот же режим доступа для системы, но обычно на более медленной скорости из-за небольшой пропускной способности RS-232 . Последовательная консоль часто используется при разработке программного обеспечения для встроенных систем и иногда остается доступной через отладочный порт .

Управляющие символы

Консоль реагирует на ряд управляющих символов : [17]

Для ^[ нажмите клавишу Escape.

Консоль также поддерживает расширенные последовательности escape, последовательности ANSI CSI Mode и последовательности DEC Private Mode. [15] [17] Эти расширенные последовательности могут управлять цветами, визуальными эффектами, такими как мигание, подчеркивание, интенсивность и инверсия видео, частотой и длительностью тона звонка, интервалом гашения экрана VESA. Помимо текстового гашения, нет известного способа перевести адаптер VGA в режим ожидания.

Планы на будущее

Проект Kmscon направлен на создание современной замены консоли Linux в пользовательском пространстве. [18] [19] Приоритеты разработки включают поддержку многомониторных установок, рендеринг шрифтов Unicode с помощью Pango , обработку клавиатуры XKB и ускорение OpenGL на GPU . [20] Жалобы на текущую реализацию ядра включают в себя то, что «это пользовательский интерфейс в пространстве ядра, код плохо поддерживается, плохо обрабатывает клавиатуру, производит плохой рендеринг шрифтов, упускает настройку режима и поддержку нескольких головок, не содержит многопользовательской осведомленности и имеет только ограниченную обработку горячего подключения, ограниченную соответствием VT102 ». [3]

Список записей /dev/, относящихся к консоли

Смотрите также

Ссылки

  1. ^ "config VT_CONSOLE: Поддержка консоли на виртуальном терминале". Линус Торвальдс . Системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и которое позволяет входить в систему в однопользовательском режиме.
  2. ^ "config VT: Virtual terminal". Линус Торвальдс . Если вы здесь скажете Y, вы получите поддержку терминальных устройств с дисплеями и клавиатурой. Они называются "виртуальными", потому что вы можете запустить несколько виртуальных терминалов (также называемых виртуальными консолями) на одном физическом терминале. Это довольно полезно, например, один виртуальный терминал может собирать системные сообщения и предупреждения, другой может использоваться для сеанса пользователя в текстовом режиме, а третий может запускать сеанс X, и все это параллельно. Переключение между виртуальными терминалами осуществляется с помощью определенных комбинаций клавиш, обычно Alt-<function key>.
  3. ^ Дэвид Херрманн (2012-08-12). «Устаревание CONFIG_VT».
  4. ^ "Замена CONFIG_VT/Linux-Console". FOSDEM . 2013-02-02. CONFIG_VT — это параметр конфигурации ядра, который включает виртуальные терминалы в ядре. Первоначально написанный самим Линусом, он существует с 1991 года.
  5. ^ abc "Консоль буфера кадра". kernel.org . Консоль буфера кадра (fbcon), как следует из ее названия, представляет собой текстовую консоль, работающую поверх устройства буфера кадра. Она обладает функциональностью любого стандартного драйвера текстовой консоли, например, консоли VGA, с дополнительными функциями, которые можно отнести к графической природе буфера кадра. В архитектуре x86 консоль буфера кадра является необязательной, и некоторые даже относятся к ней как к игрушке. Для других архитектур это единственное доступное устройство отображения, текстовое или графическое. Каковы функции fbcon? Консоль буфера кадра поддерживает высокие разрешения, различные типы шрифтов, поворот дисплея, примитивный multihead и т. д. Теоретически также возможны многоцветные шрифты, смешивание, алиасинг и любые функции, предоставляемые базовой графической картой.
  6. ^ "Documentation/braille-console.txt". kernel.org . Архивировано из оригинала 2015-09-06 . Получено 2014-07-04 .
  7. ^ "Documentation/serial-console.txt". kernel.org . Архивировано из оригинала 2013-05-22 . Получено 2013-05-30 .
  8. ^ "CONFIG_VT_CONSOLE: Поддержка консоли на виртуальном терминале". Системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и которое позволяет входить в систему в однопользовательском режиме. Если вы ответите Y, виртуальный терминал (устройство, используемое для взаимодействия с физическим терминалом) может использоваться в качестве системной консоли.
  9. ^ "CONFIG_SERIAL_CONSOLE: Поддержка консоли на последовательном порту". Если здесь указать Y, то можно будет использовать последовательный порт в качестве системной консоли (системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и которое позволяет входить в систему в однопользовательском режиме). Это может быть полезно, если к этому последовательному порту подключен какой-либо терминал или принтер.
  10. ^ "CONFIG_USB_SERIAL_CONSOLE: Поддержка устройства USB Serial Console". Если здесь указать Y, можно будет использовать порт USB-последовательного преобразователя в качестве системной консоли (системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и которое позволяет входить в систему в однопользовательском режиме). Это может быть полезно, если к этому последовательному порту подключен какой-либо терминал или принтер.
  11. ^ "CONFIG_VGA_CONSOLE: текстовая консоль VGA". Если вы укажете здесь Y, вы сможете использовать Linux в текстовом режиме через дисплей, который соответствует общему стандарту VGA. Этого хотят практически все.
  12. ^ «CONFIG_FRAMEBUFFER_CONSOLE: Поддержка консоли кадрового буфера».
  13. ^ "chvt(1) - Страница руководства Linux: chvt - изменение виртуального терминала переднего плана".
  14. ^ "console(4) – Linux man page: console – console terminal and virtual consoles". Система Linux имеет до 63 виртуальных консолей
  15. ^ ab "console_codes(4) – Страница руководства Linux: console_codes – Последовательности управления и выхода из консоли Linux".
  16. ^ Грехан, Ойсин (2016-02-04). "Windows 10 TH2 (v1511) Console Host Enhancements". Архивировано из оригинала 2016-02-09 . Получено 2016-02-10 .
  17. ^ ab Майкл К. Джонсон и Эрик В. Троан (2005). Разработка приложений Linux – Консоль Linux. Книги ASCII. ISBN 0321563220. Архивировано из оригинала 2017-06-26 . Получено 2013-09-03 .
  18. ^ Дэвид Херрманн (11 августа 2012 г.). «KMSCON: виртуальная консоль на базе Linux KMS/DRM».
  19. ^ Майкл Ларабель (28.03.2013). "KMSCON: эмулятор терминала на основе DRM". Phoronix . Вчера был анонсирован выпуск kmscon, эмулятора терминала для Linux, который похож на тот, что предлагается внутри ядра, но вместо этого он находится в пользовательском пространстве и полагается на интерфейсы DRM ядра, а также на Mesa.
  20. ^ Майкл Ларабель (2013-02-08). "Консоль ядра Linux отменяется". Phoronix . CONFIG_VT была частью ядра Linux еще с начала 90-х, но за это время не сильно продвинулась. Дэвид Херрманн, разработчик, который начал эту новую инициативу в качестве студента Google Summer of Code, хочет новое решение, которое было бы создано с учетом многопользовательской работы и нескольких мониторов, включало бы рендеринг шрифтов Unicode, обработку клавиатуры в стиле XKB, аппаратное ускорение графики, совместимость с VT220-VT510 и другие функции.