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

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

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

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

Цель [ править ]

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

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

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

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

Виртуальные консоли [ править ]

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

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

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

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

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

Текстовый буфер - это часть памяти 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. Он полностью совместим с консольными инструментами, но имеет некоторые конфликты с dosmu , SVGAlib и серверами отображения .

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

Сравнение с Windows и DOS [ править ]

Microsoft Windows (любой версии) не имеет полноценной поддержки консоли. Сопоставимая функция, но только для прикладного программного обеспечения, - это консоль Win32 .

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

Консоль фреймбуфера Linux [ править ]

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

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

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

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

Управляющие символы [ править ]

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

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

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

Планы на будущее [ править ]

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

Список / dev / записей, относящихся к консоли [ править ]

См. Также [ править ]

  • Консоль Windows

Ссылки [ править ]

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