Русификация терминала (tty)

В терминале с русской раскладкой ruwin_cplk-UTF-8 без специального шрифта ter-m16b кириллица отображается квадратиками.

loadkeys ruwin_cplk-UTF-8
setfont ter-m16b

Загружает необходимую раскладку и шрифт, но эти настройки теряются при перезагрузки.
Я прописал в /etc/sysconfig

# /etc/sysconfig/console
CONSOLE_FONT="ter-m16b"

# /etc/sysconfig/keyboard
KEYTABLE="ruwin_cplk-UTF-8"

Но при перезагрузке сохраняется только раскладка (переключается капсом на русский), но шрифт не загружается и приходится каждый раз снова набирать setfont ter-m16b

Что я пропустил, или где нужно ещё указать консольный шрифт или почему не загружается указанный в конфиге шрифт в терминале?

Обрати внимание на это обсуждение](https://forums.opensuse.org/showthread.php/478061-Русский-язык-в-консоли-(tty)?p=2607372#post2607372).

Спасибо, не думал, что тут так всё запущенно.
Но этот метод для меня не применим.

# mkinitrd -f vconsole

Kernel image:   /boot/vmlinuz-3.7.10-1.28-desktop
Initrd image:   /boot/initrd-3.7.10-1.28-desktop
Root device:    /dev/mapper/nvidia_ieigdchd-part1 (mounted on / as ext4)
Kernel Modules: thermal_sys thermal processor fan pata_amd sata_nv ata_generic sata_sil24 dm-mod dm-snapshot scsi_dh scsi_dh_alua scsi_dh_emc scsi_dh_rdac scsi_dh_hp_sw xhci-hcd hid-logitech-dj 
Features:       acpi dm vconsole plymouth block usb dmraid kpartx resume.userspace resume.kernel
Perl-Bootloader: 2014-02-24 12:38:34 <3> pbl-6919.2 Core::RunCommand.1642: Error: Command '/usr/sbin/grub2-install --target=i386-pc --force --skip-fs-probe "(hd0,0)" >/var/log/YaST2/y2log_bootloader 2>&1' failed with code 256 and output: GRUB не может прочитать путь «/boot/grub2» при загрузке. Установка невозможна. Выполнение остановлено.

There was an error generating the initrd (1)

С загрузкой из аппаратного рейда тут тоже всё запущенно.
Так что, мне пока только остаётся прописать alias rus=‘setfont ter-m16b’ в ~/.bashrc и набирать каждый раз rus в терминале.

Заработало!
Просто в /etc/sysconfig нужно прописать полные имена файлов, а на ошибку с загрузчиком можно забить.

# /etc/sysconfig/console
CONSOLE_FONT="ter-m16b.psfu.gz"

# /etc/sysconfig/keyboard
KEYTABLE="ruwin_cplk-UTF-8.map.gz"

Вот теперь я не совсем понял, что и куда нужно прописать, что бы при обновлении ядра этот скрипт добавлялся автоматом без ручного вызова mkinitrd -f vconsole ?

Русификация терминала

Итак, проблема решена и я хочу подытожить все действия, необходимые для решения проблемы русификации терминала.

1 Проверить, работает ли у вас кириллица в терминале вообще (может быть не установлены или удалены консольные шрифты и/или раскладки)

loadkeys ruwin_cplk-UTF-8
setfont ter-c16b

После выполнения этих команд в терминале кириллица должна отображаться и переключаться Caps Lock-ом.
Если этого не происходит, установите пакеты kbd и terminus-bitmap-fonts и после перезагрузки попробуйте снова.

2 Примените результаты обсуждения этого бага (https://bugzilla.novell.com/show_bug.cgi?id=780516)
Загрузите, переименуйте и дайте права на выполнение двум скриптам:

cd /lib/mkinitrd/scripts && wget -O boot-vconsole.sh https://bugzilla.novell.com/attachment.cgi?id=505873 && chmod +x boot-vconsole.sh && wget -O setup-vconsole.sh https://bugzilla.novell.com/attachment.cgi?id=519064 && chmod +x setup-vconsole.sh

3 Добавьте модуль vconsole в начальный образ ядра; проверьте содержимое файла /etc/sysconfig/initrd и при необходимости отредактируйте.

# vim /etc/sysconfig/initrd
ADDITIONAL_FEATURES="vconsole"

Должна быть только одна секция ADDITIONAL_FEATURES, если их более одной, то добавьте vconsole в конец через пробел

4 Отредактируйте 2 файла, ответственных за выбор консольного шрифта и консольной раскладки.

# vim /etc/sysconfig/console
CONSOLE_FONT="ter-c16b.psfu.gz"
CONSOLE_UNICODEMAP=""

# vim /etc/sysconfig/keyboard
KEYTABLE="ruwin_cplk-UTF-8.map.gz"

5 Пересоберите initrd.

mkinitrd

В выводе в секции Features: должен присутствовать модуль vconsole и помимо секции Perl-Bootloader: в секциях выше не должно присутствовать ошибок. На ошибку в загрузчике, если она у вас есть, можно не обращать внимания.

# mkinitrd

Kernel image:   /boot/vmlinuz-3.7.10-1.28-desktop
Initrd image:   /boot/initrd-3.7.10-1.28-desktop
Root device:    /dev/mapper/nvidia_ieigdchd-part1 (mounted on / as ext4)
Kernel Modules: thermal_sys thermal processor fan pata_amd sata_nv ata_generic sata_sil24 dm-mod dm-snapshot scsi_dh scsi_dh_alua scsi_dh_emc scsi_dh_rdac scsi_dh_hp_sw xhci-hcd hid-logitech-dj 
Features:       acpi dm **vconsole** plymouth block usb dmraid kpartx resume.userspace resume.kernel
Perl-Bootloader: 2014-02-25 10:14:39 <3> pbl-2010.2 Core::RunCommand.1642: Error: Command '/usr/sbin/grub2-install --target=i386-pc --force --skip-fs-probe "(hd0,0)" >/var/log/YaST2/y2log_bootloader 2>&1' failed with code 256 and output: GRUB не может прочитать путь «/boot/grub2» при загрузке. Установка невозможна. Выполнение остановлено.

There was an error generating the initrd (1)

6 После этого перезагрузитесь и проверьте работоспособность кириллицы в терминале и переключение её Caps Lock-ом.

Уважаемые модераторы. Не мог бы кто-нибудь из вас ещё раз отредактировать сообщение выше](https://forums.opensuse.org/showthread.php/495751-Установка-шрифта-в-терминале?p=2627055#post2627055) и сделать 3 замены, после чего удалить это сообщение. В шрифте ter-m16b оказалось отсутствует буква ё.
ter-m16b → ter-c16b
ter-m16b.psfu.gz → ter-c16b.psfu.gz
не обращать внимания. → не обращать внимание.

Итак в openSUSE 13.2 теперь всё делается проще.

1 Проверить, работает ли у вас кириллица в терминале вообще (может быть не установлены или удалены консольные шрифты и/или раскладки)

loadkeys ruwin_cplk-UTF-8
setfont ter-c16b

После выполнения этих команд в терминале кириллица должна отображаться и переключаться Caps Lock-ом.
Если этого не происходит, установите пакеты kbd и terminus-bitmap-fonts, то есть выполните команду

# zypper in -f kbd terminus-bitmap-fonts

и после перезагрузки попробуйте снова.

2 Отредактируйте 2 файла, ответственных за выбор консольного шрифта и консольной раскладки.

# vim /etc/sysconfig/console
CONSOLE_FONT="ter-c16b.psfu.gz"
CONSOLE_UNICODEMAP=""

# vim /etc/sysconfig/keyboard
KEYTABLE="ruwin_cplk-UTF-8.map.gz"

3 Отредактируйте файл, который теперь настраивает systemd, и читает именно его настройки для терминала.

# vim /etc/vconsole.conf
KEYMAP=ruwin_cplk-UTF-8
FONT=ter-c16b

При этом именно в таком виде без кавычек и полных путей, как это записывалось в файлы /etc/sysconfig/console и /etc/sysconfig/keyboard

4 После этого перезагрузитесь и проверьте работоспособность кириллицы в терминале и переключение её Caps Lock-ом.

  1. … в консоли только, “терминал” - эмулятор терминала - это приложение.
  2. Полагаю, ter-c16b не единственный шрифт с кириллицей в системе.
  3. Почему именно Caps Lock для переключения?

1 Я не знаю из какого контекста вы выдрали это слово, у меня везде упоминается терминал. Я прекрасно понимаю что такое терминал и что такое консоль.
2 Да вы гений! Открою вам секрет - это так! ter-c16b наиболее красивый, с буквой “ё”, а там далеко не все кириоические шрифты содержат эту букву, и наиболее легко запоминающийся, так как при очередном обновлении openSUSE каждый раз что-то ломается/изменяется и его приходится загружать вручную setfont ter-c16b.
3 Потомучто так удобнее всего переключать раскладку! А ещё, перекидывая расскладку на Caps Lock, вы особождаете комбинации Ctrl+Shift+“что-то” используемые, например, в эмуляторе mednafen для конфигурации джойстика, или в фотошопе.

P.S. Мне бы не хотелось, что бы в этой теме был мусор на несколко дцать страниц, как в прилепленной теме, от которой изначальный смысл темы просто теряется, и что бы в последнем сообщении на первой странице пользователь видел последнюю версию полной, рабочей инструкции по сабжу.

Да вы гений! Открою вам секрет - это так!

Вы лучше с joneone не задирайтесь. Он из той категории игроков, которая в хоккее называется “тафгай”. :slight_smile: