В началоРуководство по русской локализации Gentoo Linux → Базовая кириллизация консоли
Gentoo-doc HOME Пред.: Руководство по русской локализации Gentoo LinuxВ началоУровень выше: Руководство по русской локализации Gentoo LinuxСлед.: Установка русской locale

2. Базовая кириллизация консоли

2.1. Введение

Итак, базовая локализация консоли включает обеспечение вывода национальных символов на экран и ввода их с клавиатуры. Однако в случае кириллической локализации вследствие особенностей наборов символов и аппаратных особенностей PC для ввода и для вывода используются, как правило, разные кодировки. И это требует еще двух дополнительных шагов — установки карты соответствия между наборами символов ввода и вывода, и активизация её на каждой из виртуальных консолей.

2.2. Установка экранного шрифта

Экранный шрифт, загружаемый по умолчанию при старте системы, определяется в файле /etc/rc.conf строкой

Листинг 1. Строка, определяющая экранный шрифт

  CONSOLEFONT="default8x16"


Для вывода русских букв "умолчальное" значение следует заменить на имя какого-либо файла шрифта с поддержкой кириллицы, например, cp866-8x16 для представления кодировки DOS или koi8r-8x16 — для кодировки KOI8-R. Например,

Листинг 2. Определение экранного шрифта для кодировки cp866

CONSOLEFONT="cp866-8x16"


Или —

Листинг 3. Определение экранного шрифта для кодировки KOI8-R

CONSOLEFONT="koi8r-8x16"


Примечание

Файлы шрифтов (и не только кириллических) находятся в каталоге /usr/share/consolefonts/ и имеют вид *.gz, *.psf.gz или *.psfu.gz. При стандартном их размещении и форме ни полного пути, ни "расширения" имени указывать не обязательно.

Важно

В кириллическом Linux'е для экранного вывода, как правило, используется кодировка cp866 (вне зависимости от того, какой набор символов принят для клавиатурного ввода). О причинах этого говорить можно было бы долго — достаточно указать, что в любом ином случае программы, использующие псевдографику (например, Midnight Commander) приобретут весьма уродливый вид.

Экранные кириллические шрифты, поставляемые с Gentoo Linux, далеки от эстетического совершенства (справедливости ради заметим, что это относится почти ко всем Unix-клонам). И потому в качестве источника дополнительных шрифтов можно рекомендовать пакет console-tools-cyrillic Виктора Вагнера. В результате приведенная выше в качестве примера строка может принять вид вроде

Листинг 4. Один из лучших кириллических шрифтов для консоли

CONSOLEFONT="UniCyr-sans"


2.3. Установка раскладки клавиатуры

Загружаемая по умолчанию раскладка клавиатуры также определяется в файле /etc/rc.conf строкой

Листинг 5. Строка, определяющая раскладку клавиатуры

KEYMAP="us"


По аналогии с предыдущим случаем легко догадаться, что значение us следует заменить на имя файла какой-либо кириллической (на этот раз уже в кодировке KOI8-R) раскладки. Место этих файлов (имеющих вид *.map.gz) — в каталоге /usr/share/keymaps/i386/qwerty, где для русской кодировки KOI8-R имеется несколько раскладок, например, ru1-ru4. Различия между ними — в соответствии различной маркировке клавиш (DOS или Windows — не путать с одноименными кодировками) и положении переключателя латиница/кириллица. Рискну взять на себя смелость рекомендовать раскладку ru4 — для Windows-маркированных клавиатур, в которой переключателем служит CapsLock (при этом фиксация верхнего регистра обеспечивается одновременным нажатием клавиш Shift+CapsLock). То есть строка примет вид:

Листинг 6. Один из примеров определения кириллической раскладки

KEYMAP="ru4"


Примечание

Как и в случае с экранными шрифтами, при стандартном расположении файлов раскладок указывать полный путь к ним и "расширение" имени нет необходимости.

Внимание

При желании вы можете выбрать и раскладку клавиатуры для кодировки cp1251 (например, ru_win). Однако в этом случае придётся отыскать или самостоятельно изготовить таблицу перекодировки (mapscreen) cp1251->cp866.

Примечание

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

2.4. Установка карты соответствия (mapscreen)

Теперь остаётся только обеспечить соответствие между кодировками ввода (KOI8-R) и вывода (cp866), то есть загрузить соответствующую таблицу перекодировки (mapscreen). Для этого снова обращаемся к файлу /etc/rc.conf. Строка в нём, отвечающая за эту операцию, имеет по умолчанию такой вид:

Листинг 7. Строка, определяющая раскладку клавиатуры

#CONSOLETRANSLATION="cp437_to_iso01"


Необходимо, сняв с неё символ комментария (#), заменить "умолчальное" значение на необходимое нам, и подсмотреть его можно в каталоге /usr/share/consoletrans — это koi2alt:

Листинг 8. Установка таблицы соответствия cp866->KOI8-R

CONSOLETRANSLATION="koi2alt"


Внимание

Пожалуйста, не забудьте снять символ комментария со строки CONSOLETRANSLATION — кто только на моей памяти не наступал на эти грабли :-)

Примечание

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

2.5. Активизация карты соответствия

Результатом выполненной операции будет то, что после перезагрузки машины мы получили бы нормальный вывод кириллического текста (записанного в кодировке KOI8-R), но только — на первой (т.н. системной) консоли. Чтобы иметь то же самое на остальных виртуальных консолях (а в Gentoo Linux их по умолчанию еще 5), та же карта соответствия должна быть активизирована на каждой из них с помощью направления Escape-последовательности \033(K (символ \ в данном случае показывает, что следующие за ним символы рассматриваются как специальные). Достигнуть этого можно разными способами. Например, создать в каталоге /etc/init.d/ файл consoletrans и в любом текстовом редакторе внести в него следующие строки:

Листинг 9. Сценарий активизации mapscreen

for i in 1 2 3 4 5 6; do
echo -ne '\033(K' > /dev/vc/$i
done


Примечание

Это — для случая 6-ти консолей по умолчанию. Если количество их изменялось пользователем, значения in, очевидно, должны быть приведены в соответствие с реальностью.

Примечание

Следует отметить, что начиная с baselayout-1.8.x необходимость в этом отпала, поскольку этот код был встроен в /etc/init.d/consolefont.

Теперь командой chmod a+x /etc/init.d/consoletrans созданному скрипту следует присвоить бит исполнения, после чего он добавляется к уровню исполнения по умолчанию (default runlevel):

Листинг 10. Сценарий активизации mapscreen

# rc-update add consoletrans default


Примечание

Механизм автоматического обновления стартовых скриптов подробно описан в соответствующем разделе документации.

Вот теперь после перезагрузки машины мы получим полноценно локализованную консоль.

Примечание

Все действия, описанные в данной главе, могут быть выполнены как на заключительных шагах (final steps) установки Gentoo Linux, так и в произвольный момент времени в дальнейшем.

Пред.: Руководство по русской локализации Gentoo LinuxВ началоУровень выше: Руководство по русской локализации Gentoo LinuxСлед.: Установка русской locale
В началоРуководство по русской локализации Gentoo Linux → Базовая кириллизация консоли