Linux console (Русский) - ArchWiki

Jump to content

# Linux console (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Linux console. Дата последней синхронизации: 3 августа 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Конфигурация клавиатуры в консоли
- Screen capture#Virtual console
- Color output in console
- getty

Выписка из Википедии:

  Linux консоль — консоль, реализованная в ядре Linux, стала первой функциональностью ядра, разработанной в 1991 году. Является способом взаимодействия с пользователем — позволяет ядру и другим процессам отправлять пользователю текстовые данные, а также получать данные, введённые пользователем. Обычно для ввода используется клавиатура, а для вывода – монитор. Linux-консоль поддерживает так называемые виртуальные консоли — консоли, которые отделены логически, но используют те же клавиатуру и дисплей.

Данная статья описывает основы консоли Linux и как настроить отображения шрифтов. Настройка клавиатуры описана в подстранице Конфигурация клавиатуры в консоли.

## Реализация

Консоль, в отличии от сервисов которые взаимодействуют с пользователем напрямую, является частью ядра системы. Это отличает ее от эмуляторов терминала, таких как xterm (Русский), которые реализованы на уровне пользовательского пространства и являются обычными приложениями. Консоль оставалась компонентом ядра Linux, но имела заметные изменения, такие как графический вывод (framebuffer) и поддержка Юникода.

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

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

Консоль в представлении пользователя это набор виртуальных консолей. Они создают впечатление параллельной работы нескольких терминалов: в каждую из виртуальных консолей могут быть залогинены разные пользователи. Они могут работать в своих оболочках и иметь собственные настройки шрифтов. Каждая консоль использует устройство `/dev/ttyX` и вы можете переключится между ними сочетанием клавиш `Alt+FX`, где `X` номер виртуальной консоли начиная с 1. Устройство `/dev/console` автоматически привязывается к активной виртуальной консоли.

Подробнее смотреть chvt(1), openvt(1) и deallocvt(1).

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

Изначально Linux был создан как ядро для управления оборудованием ПК, консоль была разработана по стандартам IBM CGA/EGA/VGA, которые поддерживали на тот момент все ПК. Графические возможности, предоставляемые этим стандартом предоставляли простое отображение 80*25 сетки символов с поддержкой 16 цветов. Этот устаревший режим был похож на принцип работы текстовых терминалов, таких как VT100. Все еще существует возможность загрузиться в текстовом режиме, если оборудование поддерживает его, но большинство современных дистрибутивов (в том числе Arch Linux) используют framebuffer консоль.

### Framebuffer консоль

Так как Linux был портирован на различные архитектуры, которые не использовали VGA-совместимых графических адаптеров и не поддерживали текстовый режим, требовалась другая реализация. Framebuffer консоль была разработана для предоставления стандартной консоли среди всех доступных платформ и представляла собой VGA-подобный интерфейс независимый от используемого графического оборудования. Таким образом, консоль Linux - это не эмулятор терминала, а сам по себе терминал. Она использует тип терминала `linux` и в значительной мере совместима с VT100.

## Горячие клавиши

Горячие клавиши | Описание
--- | ---
`Ctrl+Alt+Del` | Перезапускает систему (указанно символической ссылкой `/usr/lib/systemd/system/ctrl-alt-del.target`)
`Alt+F1`, `F2`, `F3`, ... | Переключает на n-ую виртуальную консоль
`Alt+ ←` | Переключает на предыдущую виртуальную консоль
`Alt+ →` | Переключает на следующую виртуальную консоль
`Scroll Lock` | Когда Scroll Lock активен, ввод и вывод заблокированы
`Ctrl+c` | Закрывает текущую задачу
`Ctrl+d` | Вставляет EOF
`Ctrl+z` | Прерывает текущую задачу

Подробнее смотреть console_codes(4).

## Шрифты

Примечание: Эта секция написана для Linux консоли. Для альтернативных реализаций, поддерживающих большее количество функций (Полная поддержка шрифтов Юникод, современных графических адаптеров и т.д.) смотрите KMSCON или похожие проекты.

По стандарту, виртуальная консоль использует встроенный в ядро шрифт с набором символов CP437 [1], но это можно изменить.

Linux консоль по умолчанию использует кодирование UTF-8, но из-за особенностей VGA-совместимого framebuffer, консольный шрифт ограничен стандартными 256 или 512 глифами. Если в шрифте более чем 256 глифов, то количество цветов уменьшается с 16 до 8. Для корректного отображения нужного символа требуется специальная карта трансляции, называемая unimap. В настоящее время большинство консольных шрифтов имеют встроенную unimap, но исторически она загружалась отдельно.

Пакет kbd предоставляет инструменты для смены шрифта и его отображения в виртуальной консоли. Доступные шрифты находятся в директории `/usr/share/kbd/consolefonts/`. Шрифты с расширением .psfu или .psfu.gz имеют встроенную карту трансляций Юникод.

Списки раскладок, являющиеся связью между нажатой клавишей и символом используемым системой, находятся в директории `/usr/share/kbd/keymaps/`, подробности смотрите на странице Конфигурация клавиатуры в консоли.

Примечание: Замена шрифта может вызвать проблемы в программах, которые рассчитаны на стандартный шрифт, например, использующие линейную графику.

### Предпросмотр и временные изменения

    $ showconsolefont

Показывает таблицу глифов или символов шрифта.

`setfont` временно меняет шрифт, если команде передано имя шрифта (находящегося в директории `/usr/share/kbd/consolefonts/`), например:

    $ setfont lat2-16 -m 8859-2

Название шрифта чувствительно к регистру. Без параметров `setfont` возвращает консоли стандартный шрифт.

Для смены на маленький шрифт размера 8x8, можете использовать данный шрифт:

    $ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz

Для большого шрифта, можете рассмотреть шрифт terminus-font, он доступен в различных размерах. Например `ter-132n`.

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

### Постоянные изменения

Переменная `FONT` в `/etc/vconsole.conf` используется для применения шрифта при загрузке системы для всех консолей. Смотрите vconsole.conf(5) для деталей.

Для отображения символов Č, ž, đ, š or Ł, ę, ą, ś используйте шрифт `lat2-16.psfu.gz`:

    /etc/vconsole.conf

    ...
    FONT=lat2-16
    FONT_MAP=8859-2

Вторая часть набора символов ISO/IEC 8859 будет размера 16. Вы можете поменять размер шрифта используя другие значения (например `lat2-08`). Для регионов определяемых спецификацией ISO 8859, смотрите Части ISO 8859

Для использования шрифта в пользовательском пространстве при загрузке системы используйте хук `consolefont` в `/etc/mkinitcpio.conf`. Смотрите mkinitcpio (Русский)#HOOKS для подробностей.

Если шрифт не применяется после загрузки системы, или изменения временные, то скорее всего шрифт сбрасывается когда графический драйвер инициализируется и консоль меняется на framebuffer. Как решение, загружайте графический драйвер раньше, для примера смотрите Kernel mode setting (Русский)#Ранний запуск KMS, [2] или другими способами сделайте загрузку framebuffer перед применением `/etc/vconsole.conf`.

## HiDPI

Смотрите HiDPI#Linux console.

## Звуковые сигналы

Смотреть Динамик ПК#Beep.

## Смотреть также

- The TTY demystified – Linus Åkesson

Category:

- Linux console (Русский)