openSUSE: игрища в консоли. Чего нет у рыб?

Как известно, на вопрос из заголовка есть однозначный ответ, некогда предложенный писателем Львом Успенским:

У рыб нет монокля и полного собрания сочинений Шпильгагена.

Однако при ближайшем рассмотрении умолчальной консоли openSUSE релиза 12.2 оказалось, что применителю оной не хватает не только этого — даже в том случае, если при установке были выбраны русский язык и русская же раскладка клавиатуры, что гарантирует от проблем в Иксах. Чтобы узнать, чего именно у него нет, ему следует перейти в «голую» консоль (то есть в любой из виртуальных терминалов) или загрузиться в runlevel 3, то есть без Иксов (самый простой способ для последнего — выбрать консольный вход в приглашении к авторизации KDM). После чего выполнить несколько команд.

Первой из этих команд будет

$ locale

которая, при соблюдении упомянутых выше условий, даст такой вывод:

LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
...

и так далее. То есть с локалью у нас действительно всё в порядке. Так что мы вправе ожидать и ряда системных сообщений на великом и могучем. Что проще всего проверить командой

$ date

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

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

# less /etc/sysconfig/console

Нет, всё нормально: значением CONSOLE_FONT является UniCyr_8x16.psf, известный со времён Mandrake RE консольный кириллический шрифт с поддержкой UTF-8. Но может, его просто нет в системе? Отнюдь: просмотр на сей предмет соответствующего каталога с помощью

$ ls /usr/share/kbd/consolefonts/UniCyr*

показывает наличие всех представителей этого семейства:

/usr/share/kbd/consolefonts/UniCyr_8x14.psf.gz
/usr/share/kbd/consolefonts/UniCyr_8x16.psf.gz
/usr/share/kbd/consolefonts/UniCyr_8x8.psf.gz
/usr/share/kbd/consolefonts/UniCyrExt_8x16.psf.gz

Тут начинают вспоминаться песни с плясками и бубнами… то есть с UNICODEMAP’ами, SCREENMAP’ами и прочими MAGIC’ами, к которым приходилось прибегать на заре юникодизация вся Linux’ы. В частности, генетическая память начинает подсказывать, что консольные шрифты с суффиксом psf в имени не содержат в себе собственной таблицы перекодировки, это привилегия шрифтов вида *.psfu. И, соответственно, заставляет заняться перебором соответствующих значений.

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

Раскладка с поддержкой кириллицы также имела место быть «искаропки». Потому как стоило нажать на правый Alt, как вместо латинских букв на экран начинали выводиться те самые квадратики, разборку с которыми я обещаю провести позже. Сейчас же отвечу на возможный вопрос — почему именно правый Alt?

Для консольных раскладок клавиатуры, в отличие от Иксовых, переключатель прошит непосредственно в ней же. И потому его легко определить по имени файла раскладки. Которое, в свою очередь, не менее легко узнаётся через YaST (о чём я обещал рассказать позднее) или из файла /etc/sysconfig/keyboard. В нашем случае значение строки

KEYTABLE="ruwin_alt-UTF-8.map.gz"

показывает, что загружена юникодовская раскладка с поддержкой кириллицы в варианте winkeys (если использовать Иксовую терминология — для консольных раскладок понятие варианта не принято) и переключением по Alt‘у. А вот что этот самый Alt непременно должен быть правым, можно узнать из самого файла раскладки — это обычный текстовый файл, сжатый утилитой gzip.

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

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


Содержание