Виртуальная консоль Linux организована на основе текстовых
      возможностей графического контроллера (как правило, совместимого
      со стандартом VESA или, по крайней мере. EGA/VGA). VGA
      поддерживает загрузку однобайтовых шрифтов (256 изображений
      размера 8x16, 8x14 или 8x8 пикселей) в специальный раздел
      видеопамяти. Это означает, что полноценная поддержка языка,
      содержащего большее количество символов (например, маньчжурского)
      в такой консоли невозможна. К счастью, в русском языке букв
      гораздо меньше.
    
К сожалению, существует более чем одна договорённость о том, как именно располагаются русские буквы в шрифте (т. н. кодировка, или codepage). Для кириллических шрифтов VGA принята кодировка cp866 (т. н. “ДОСовская”). Дело в том, что в некоторых текстовых режимах VGA одно знакоместо занимает не 8, а 9 пикселей. Поскольку изображение, тем не менее, используется восьмиточечное, девятая точка всегда рисуется цветом фона. Исключение делается для символов шрифта с порядковым номером от 192 до 223 включительно, соответствующих в стандартной кодировке псевдографике с горизонтальными линиями. При выводе такого символа на экран девятая точка каждой линии в его изображении рисуется так же, как восьмая. В результате горизонтальные линии получаются непрерывными.
Загрузкой шрифта занимается утилита consolechars. Ей можно
      подать на вход шрифт в двоичном (raw) формате. Двоичный формат
      содержит изображения всех символов шрифта и имеет, например,
      размер 256 символов * 16 точек в высоту * 8 точек в ширину =
      32768 бит (4096 байт). Можно использовать шрифты, оставшиеся от
      русификаторов DOS, вроде RK или VGACYR! Стандартный для
      consolechars формат PSF дополнительно содержит информацию о
      том, каким символам в кодировке Unicode (двухбайтовой)
      соответствует каждое изображение в шрифте. Эту информацию (т. н.
      таблицу соответствия шрифта, Screen Font Map), можно подгружать
      и отдельно, с помощью ключа -u . Для того, чтобы
      загрузить только изображения из формата RAW и получить
      полноценный PSF-шрифт с внедрённой таблицей SFM, можно
      воспользоваться командами
    таблица.sfm
$ consolechars -f VGACYR.RAW $ consolechars -F VGACYR_with_SFM.psf
Система позволяет установить любую из имеющихся кодировок
      при выводе данных на виртуальную консоль. Поскольку данные о
      соответствии шрифта и Unicode добываются из SFM или PSF-файла,
      остаётся только сообщить, как в ту же Unicode преобразуется
      выбранная кодировка вывода. Для этого используется т. н.
      рабочая таблица кодировки (Allpication Charset Map, называемая
      также screenmap). Вывод на консоль выглядит так, как если бы
      данные сначала преобразовывались в Unicode на основании
      загруженной ACM-таблицы, а затем превращались в восьмибитное
      представление с помощью загруженной таблицы ACM. Загрузкой
      ACM-таблицы занимается та же утилита: consolechars -a
	таблица.acm.
    
Наконец, для локализации ввода с консольной клавиатуры необходимо сообщить системе используемую раскладку (keymap). Клавиатура IBM-совместимого компьютера — довольно сложное устройство, передающее в различных случаях разное количество информации. Задача виртуальной консоли — преобразовать эту информацию в поток символов, как если бы он приходил с настоящего терминала. Консоль может находиться в нескольких состояниях; от того, в каком состоянии находится консоль, зависит то, что будет происходить при нажатии на конкретную клавишу. Раскладка — это карта соответствия клавиш на клавиатуре действиям, выполняемым в разном состоянии консоли.
Раскладка обычно использует не менее двух состояния: Shift и
      Control. Первое состояние используется для того, чтобы посылать
    одной и той же клавишей прописной или строчный вариант буквы,
    цифру или специальный символ и т. п. Второе используется, чтобы
    посылать с клавиатуры символы с ascii-кодом, меньшим 0x20 (32),
      т. н. непечатные. Если, допустим, клавиша A посылает символ с
      кодом 0x41 (65), то в состоянии Control эта клавиша посылает
      символ с кодом 0x1, то есть от кода символа в двоичном
    представлении отрезаются все биты, кроме первых пяти. Ещё одно
      состояние — AltGr — используется в локализованных раскладках для
    того, чтобы возвращать буквы национального алфавита. Таких
      состояний определено восемь (см. руководство keymaps(5)). В
    раскладке им соответствует 256 (!) вариантов поведения консоли для
    каждой клавиши — по одному варианту на любое сочетание состояний.
Клавиши, переводящие консоль в новое состояние, называются модификаторами состояний: Shift, Alt и Ctrl. В раскладке им будет соответствовать функция перевода консоли в соответствующее состояние — на время, пока клавиша нажата. Если клавиша переводит консоль в определённое состояние до другого нажатия на эту клавишу, это — залипающий модификатор. Такими модификаторами являются, например, Caps Lock или выбираемый при установке по умолчанию переключатель на русский язык — сочетание Ctrl-Shift.
Загрузкой раскладки в консоль занимается утилита
      loadkeys. Ей на вход подаётся файл раскладки,
      в котором описано поведение каждой клавиши. Формат этого файла
      похож на тот, что используется в системе X11 утилитой
      xmodmap.  Если в этом файле опущены строки,
      описывающее поведение некоторых клавиш, то при его загрузке оно
      не меняется. Поэтому если вам необходимо только
      изменить уже загруженную раскладку,
      достаточно создать kmap-файл, описывающий эти изменения и
      загрузить его. Например, такой файл может отменять установленные
      по умолчанию функции переключения виртуальных консолей при
      нажатии на клавиши Menu и
      Windows 105-клавишной клавиатуры (они находятся
      между Ctrl и Alt, и по ним часто попадаешь случайно).
      Кроме того, может заставить клавишу Backspace в состоянии
      Shift возвращать не
      Delete, а именно BackSpace
      и присвоить клавише Menu функцию
      переключения на локальную раскладку и обратно.
$ cat mnu_bs.kmap keycode 14 = Delete BackSpace Delete BackSpace keycode 125 = CapsShift keycode 126 = AltGr keycode 127 = AltGr_Lock $ loadkeys mnu_bs.kmap
Систему можно настроить так, чтобы ещё при начальной загрузке
    устанавливались определённые шрифты и раскладки. Файл
      /etc/sysconfig/i18n описывает язык по умолчанию, шрифт (поле
      SYSFONT) и ACM-таблицу (поле SYSFONTACM). Соответствующий
    шрифт, ACM и, если надо, SFM-таблицу система берёт из каталогов
      /etc/sysconfig/console/consolefonts и
      /etc/sysconfig/console/consoletrans. Все возможные консольные
      шрифты хранятся в /usr/lib/kbd/consolefonts, а таблицы — в
      каталоге /usr/lib/kbd/consoletrans. Раскладка определяется
      содержимым файла /etc/sysconfig/keyboard (поле KEYTABLE),
    всевозможные консольные раскладки лежат в подкаталогах
      /usr/lib/kbd/keymaps (сообразно архитектуре и типу клавиатуры).