Jump to content

консоль 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).

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

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

Особенность Линукс Окна ПРИНАДЛЕЖАЩИЙ
Текстовые атрибуты VGA Да Да Да
Пользовательские шрифты Возможный Возможный Возможный
Набор символов 512 Макс. символов. (по тексту VGA),
любая кодовая страница или UTF-8
223 или 256 символов (зависит от способа доступа),
любая кодовая страница или Unicode [n 1]
Переключение набора символов во время выполнения Возможный [n 2] Невозможный [n 1] Зависит от точки зрения
Эмуляция терминала Да, ANSI -совместимый
( ТЕРМИН = Linux)
Да, начиная с Windows 10 «Порог 2». [16] Да, АНСИ
ANSI.SYS )
Переключение во время выполнения между текстовым режимом и графическим интерфейсом С настройкой режима ядра, которой препятствует некоторое оборудование (например, проприетарные драйверы) [n 3] Нет возможности вернуться в графический интерфейс Зависит от приложения
Изменение количества строк и столбцов во время выполнения Возможный Возможный Зависит от приложения
Переключение между приложениями Возможный Возможный Ограниченный
(могут быть активированы некоторые резидентные программы прекращения действия и пребывания )
Нестандартные режимы Возможный Невозможный Возможный
мыши Поддержка Да (с gpm или аналогичным) Зависит от приложения Зависит от системы и приложения
нажата только AltKey -> программа замечена [ нужна ссылка ] Невозможный Возможный Возможный
  1. а б Юникод поддерживается начиная с систем на базе Windows NT , которые позволяют переключать кодовые страницы и использовать Юникод, но только в оконном режиме. Кроме того, системы NT используют собственный формат текстового буфера, несовместимый с VGA, что приводит к накладным расходам в аппаратных текстовых режимах. Нет поддержки Unicode в версиях Windows, отличных от NT.
  2. а Поскольку раскладку клавиатуры, отличную от ASCII, следует перезагрузить из-за некорректной реализации.
  3. а Настройки режима ядра в последних ядрах делают это более практичным для некоторого видеооборудования.

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

[ редактировать ]

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

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

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

[ редактировать ]

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

Управляющие персонажи

[ редактировать ]

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

Управляющий персонаж ASCII-имя Описание
^ Г БЕЛ Звук колокола
^ Ч БС Backspace
ХТ Горизонтальная вкладка
^Дж НЧ Перевод строки
ВТ Вертикальная вкладка
ФФ Подача формы
ЧР Возврат каретки
ТАК Выйти
И Сдвиг в
^X МОЖЕТ Отменить escape-последовательность
^Z СУБ Отменить escape-последовательность
^[ ЭКУ Escape/начать escape-последовательность
^? ПРИНАДЛЕЖАЩИЙ Ничего
ALT-^[ Запустить последовательность команд
Последовательность управления Описание
^[М Обратный перевод строки
^[Д Перевод строки
^[Э Возврат каретки и перевод строки
^[Ч Установить позицию табуляции
^[7 Курсор сохранения
^[8 Восстановить курсор
^[> Переключить клавиатуру в цифровой режим
^[= Переключить клавиатуру в режим приложения
^[с Сбросить настройки терминала
^[З Распечатать идентификатор терминала

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

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

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

[ редактировать ]

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

[ редактировать ]
Имя Главный Незначительный Описание
/dev/tty0 с 4 0 "текущая консоль"
/dev/tty1
...
/dev/tty63
с 4 1
...
63
виртуальные консоли
(управляется с клавиатуры)
/dev/ttyS0
...
с 4 64
...
Последовательные порты , подходят для системной консоли
/dev/VCS с 7 0 Экран виртуальной консоли
/dev/vcs — содержимое текущего виртуального экрана.
/dev/vcs1
...
/dev/vcs63
с 7 1
...
63
Текст (таблица указателей символов) виртуального экрана.
/dev/vcsa1
...
/dev/vcsa63
с 7 129
...
191
Экран виртуальной консоли с атрибутами
Полный образ виртуального текстового буфера; первые 4 байта содержат номера строк, столбцов и курсора позицию

См. также

[ редактировать ]
  1. ^ «config VT_CONSOLE: поддержка консоли на виртуальном терминале» . Линус Торвальдс . Системная консоль — это устройство, которое получает все сообщения и предупреждения ядра и позволяет входить в систему в однопользовательском режиме.
  2. ^ «конфигурация VT: виртуальный терминал» . Линус Торвальдс . Если вы скажете здесь Y, вы получите поддержку терминальных устройств с дисплеем и клавиатурой. Они называются «виртуальными», поскольку на одном физическом терминале можно запустить несколько виртуальных терминалов (также называемых виртуальными консолями). Это весьма полезно, например, один виртуальный терминал может собирать системные сообщения и предупреждения, другой может использоваться для пользовательского сеанса в текстовом режиме, а третий может запускать X-сеанс, и все это параллельно. Переключение между виртуальными терминалами осуществляется с помощью определенных комбинаций клавиш, обычно Alt-<функциональная клавиша>.
  3. ^ Перейти обратно: а б Дэвид Херрманн (12 августа 2012 г.). «Устаревший CONFIG_VT» .
  4. ^ «Замена CONFIG_VT/Linux-Console» . ФОСДЕМ . 2 февраля 2013 г. CONFIG_VT — это опция конфигурации ядра, которая включает виртуальные терминалы в ядре. Первоначально написанный самим Линусом, он существует с 1991 года.
  5. ^ Перейти обратно: а б с «Консоль фреймбуфера» . ядро.орг . Консоль кадрового буфера (fbcon), как следует из названия, представляет собой текстовую консоль, работающую поверх устройства кадрового буфера. Он имеет функциональность любого стандартного драйвера текстовой консоли, например консоли VGA, с дополнительными функциями, которые можно отнести к графической природе кадрового буфера. В архитектуре x86 консоль фреймбуфера необязательна, а некоторые даже относятся к ней как к игрушке. Для других архитектур это единственное доступное устройство отображения, текстовое или графическое. Каковы особенности fbcon? Консоль кадрового буфера поддерживает высокие разрешения, различные типы шрифтов, поворот дисплея, примитивную мультиголовку и т. д. Теоретически также возможны разноцветные шрифты, смешивание, наложение псевдонимов и любые функции, доступные базовой видеокартой.
  6. ^ «Документация/braille-console.txt» . ядро.орг . Архивировано из оригинала 06 сентября 2015 г. Проверено 4 июля 2014 г.
  7. ^ «Документация/serial-console.txt» . ядро.орг . Архивировано из оригинала 22 мая 2013 г. Проверено 30 мая 2013 г.
  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: console — консольный терминал и виртуальные консоли» . Система Linux имеет до 63 виртуальных консолей.
  15. ^ Перейти обратно: а б «console_codes(4) — справочная страница Linux: console_codes — escape-последовательности консоли Linux и управляющие последовательности» .
  16. ^ Грехан, Ойсин (4 февраля 2016 г.). «Усовершенствования хоста консоли Windows 10 TH2 (v1511)» . Архивировано из оригинала 9 февраля 2016 г. Проверено 10 февраля 2016 г.
  17. ^ Перейти обратно: а б Майкл К. Джонсон и Эрик В. Троан (2005). Разработка приложений для Linux — Консоль Linux . ASCII-книги. ISBN  0321563220 . Архивировано из оригинала 26 июня 2017 г. Проверено 3 сентября 2013 г.
  18. ^ Дэвид Херрманн (11 августа 2012 г.). «KMSCON: виртуальная консоль Linux на базе KMS/DRM» .
  19. ^ Майкл Ларабель (28 марта 2013 г.). «KMSCON: эмулятор терминала на основе DRM» . Фороникс . Вчера было объявлено о выпуске kmscon, эмулятора терминала для Linux, который похож на то, что предлагается внутри ядра, но вместо этого находится в пользовательском пространстве и опирается на DRM-интерфейсы ядра, а также на Mesa.
  20. ^ Майкл Ларабель (8 февраля 2013 г.). «Консоль ядра Linux закрывается» . Фороникс . CONFIG_VT был частью ядра Linux еще в начале 90-х годов, но за это время он не сильно продвинулся. Дэвид Херрманн, разработчик, который приступил к этой новой инициативе во время студенческой части Google Summer of Code, хочет новое решение, созданное с учетом нескольких рабочих мест и нескольких мониторов, включающее рендеринг шрифтов Unicode, обработку клавиатуры в стиле XKB, графику. аппаратное ускорение, совместимость VT220-VT510 и другие функции.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2f0aaaa14f8c442b80503de8dff090c1__1714286040
URL1:https://arc.ask3.ru/arc/aa/2f/c1/2f0aaaa14f8c442b80503de8dff090c1.html
Заголовок, (Title) документа по адресу, URL1:
Linux console - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)