Linux console (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Linux console
. Дата последней синхронизации: 3 августа 2021. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Конфигурация клавиатуры в консоли
Screen capture#Virtual console
Color output in console
getty
Выписка из
Википедии
:
Linux консоль
— консоль, реализованная в ядре Linux, стала первой функциональностью ядра, разработанной в 1991 году. Является способом взаимодействия с пользователем — позволяет ядру и другим процессам отправлять пользователю текстовые данные, а также получать данные, введённые пользователем. Обычно для ввода используется клавиатура, а для вывода – монитор. Linux-консоль поддерживает так называемые виртуальные консоли — консоли, которые отделены логически, но используют те же клавиатуру и дисплей.
Данная статья описывает основы консоли Linux и как настроить отображения шрифтов. Настройка клавиатуры описана в подстранице
Конфигурация клавиатуры в консоли
.
Реализация
Консоль, в отличии от сервисов которые взаимодействуют с пользователем напрямую, является частью ядра системы. Это отличает ее от эмуляторов терминала, таких как
xterm
, которые реализованы на уровне пользовательского пространства и являются обычными приложениями. Консоль оставалась компонентом ядра Linux, но имела заметные изменения, такие как
графический вывод (framebuffer)
и поддержка
Юникода
.
Не смотря на все усовершенствования консоли, она до сих пор имеет полную обратную совместимость с прежним оборудованием, ограниченным в своих возможностях по сравнению с графическими эмуляторами терминала.
Виртуальные консоли
Консоль в представлении пользователя это набор
виртуальных консолей
. Они создают впечатление параллельной работы нескольких терминалов: в каждую из виртуальных консолей могут быть залогинены разные пользователи. Они могут работать в своих оболочках и иметь собственные настройки шрифтов. Каждая консоль использует устройство
/dev/ttyX
и вы можете переключится между ними сочетанием клавиш
Alt+F
X
, где
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
Согласно
ISO 8859
для кириллических раскладок используем кодировку 8859-5. Например, кириллический шрифт terminus:
$ setfont ter-v32b -m 8859-5
Название шрифта чувствительно к регистру. Без параметров
setfont
возвращает консоли стандартный шрифт.
Для смены на маленький шрифт размера 8x8, можете использовать данный шрифт:
$ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz
Для большого шрифта, можете рассмотреть шрифт
terminus-font
, он доступен в различных размерах. Например
ter-132n
.
Совет
Все команды смены шрифта могут быть набраны "в слепую".
Примечание
setfont
влияет только на активную консоль, в других консолях изменений не будет.
Постоянная конфигурация
Переменная
FONT
в
/etc/vconsole.conf
используется для применения шрифта при загрузке системы для всех консолей. Смотрите
vconsole.conf(5)
для деталей.
Поскольку шрифт, который используется в Arch Linux по умолчанию, не отображает кириллицу, для её отображения можно использовать шрифт
cyr-sun16
, а для возможности переключения раскладки с латинской на кириллическую и обратно можно использовать такую настройку:
/etc/vconsole.conf
FONT=cyr-sun16
KEYMAP=us
KEYMAP=ruwin_alt_sh-UTF-8
Другой пример: для отображения символов
Č, ž, đ, š
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 (tty)
.
Звуковые сигналы
Смотреть
Динамик ПК#Beep
.
Смотреть также
The TTY demystified – Linus Åkesson