openSUSE: игрища в консоли. Решение проблемы вывода

Прежде всего следовало решить проблему с выводом русских шрифтов. Как я уже сказал, начал я с их подбора. Тем паче, что умолчальный UniCyr_8x14, кроме сомнений относительно наличия в нём screenmap’а, был для моих глаз, судя по своей латинской части мелковат.

Семейства шрифтов LatArCyrHeb и LatGrkCyr, включающие большие матрицы (до 8×19 и 12×22, соответственно) и заведомо содержащие в себе screenmap, широко использовались по умолчанию на заре юникодизации. И с тех пор были памятны мне своим отменно скверным внешним видом. Поэтому мой выбор на протяжении многих лет — шрифты семейства terminus, один из которых, ter-u24b.psfu, я и попробовал прописать в консольном конфиге.

Велико же было моё удивление, когда квадратики вместо кириллицы никуда не делись. Более того, сам шрифт в консоли не изменился вообще. Заинтригованный, я перепробовал ещё несколько шрифтов, включая упомянутые ранее вариации на тему Lat+Cyr — с тем же результатом: консоль «пиливать хотела» на все мои шрифтовые упражнения.

Решение было найдено по наводке verg’а в его посте на одном из форумов (за что ему гран мерси — допереть до такого было бы сложно). И было просто до степени «ржунимагу испацтуло» — кстати, предупреждаю, прежде чем читать дальше, подстелите «пацтуло» что-нибудь мягкое, дабы, падая туда, не ушибиться.

Так вот, для исправления ситуации следовало выполнить следующее:

# rm -f /lib/systemd/system/kbd.service

После чего консоль начинала реагировать на изменение своих шрифтовых настроек, и в выводе её кириллица оказывалась вполне справной.

Дальнейшее расследование показало, что это известный баг, выявленный в openSUSE ещё в марте месяце Станиславом Брабеком (Stanislav Brabec, Bug 750326 и Bug 744108). Дело в том, что файл /lib/systemd/system/kbd.service представляет собой символическую ссылку на… что бы вы думали? На /dev/null! В результате чего скрипты из пакета kbd просто не отрабатываются вообще.

Однако баг этот вовсе не специфический для openSUSE, а, как пишет Станислав, обусловлен самой systemd. В результате чего-то подобного можно ожидать и в других дистрибутивах, использующих самую «прогрессивную» систему инициализации.

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

Разобравшись с этим вопросам в принципе, я начал экспериментировать со шрифтами. Как я уже говорил, это можно делать прямым редактированием файла /etc/sysconfig/console. А можно и посредством центра управления YaST, который резонно запускать в данном случае в текстовом варианте — ведь речь у нас идёт о «голой консоли», верно? Правда, иллюстрировать я это буду всё равно скриншотами в терминальном окне Иксов: хотя есть возможность делать дампы и фрейм-консоли, но это не так удобно.

Центр управления YaST с текстовым интерфейсом в «голой» консоли запускается (с правами администратора) командой yast или yast2, а в терминальном окне Иксов так:

# yast2 --ncurses

Хотя и просто команда yast также запустит именно текстовый вариант.

Далее в левом фрейме надо выбрать пункт Система, а в правом — подпункт Редактор /etc/sysconfig:

console01.png

Точнее, в «голой» консоли YaST, запущенный от root’а, будет иметь англоязычный интерфейс, потому как локаль его — не одна из русских, а POSIX. Так что пункты будут называться System и /etc/sysconfig Editor, соответственно.

Далее в левом фрейме разворачиваем пункт Hardware -> Console -> CONSOLE FONT — и видим текущий шрифт консольного вывода:

console02.png

Каковой и можем изменить, подставляя подходящее имя файла из каталога /usr/share/kbd/consolefonts/ (без суффикса gz). После чего переходим к пункту Завершить и соглашаемся с предложением Сохранить изменённые переменные:

console03.png

После чего служба kbd сама собой перезапускается — и изменение шрифта во всех виртуальных консолях можно видеть немедленно. В отличие от прежних времён, можно забыть о параметрах CONSOLE_UNICODEMAP и CONSOLE_SCREENMAP. Что же до «магической последовательности» — одновременно с установкой шрифта будет активизирована и та, которая нужна:

console04.png

Кстати, по ходу дела YaST сообщает нам, какой именно файл в данный момент редактируется, и какая из стартовых служб после этого будет перезапущена. Что весьма полезно начинающим применителям — для самообразования.


Содержание