LINUX.ORG.RU

Не отображается кириллица в консоли

 , ,


0

1

Добрый день! Вместо кириллицы в консоли отображаются прямоугольнички, хотелось бы исправить. Как это можно сделать? Дистрибутив Slackware 14.1. В X Window System при работе с эмулятором терминала полный порядок, там кириллица распознаётся, при этом в самой системе пользуюсь английской локалью, но бывают файлы с названиями на русском языке. В файле /etc/rc.d/rc.font вот что:

#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
# setfont -v
setfont -v LatArCyrHeb-16
for n in 1 2 3 4 5 6; do
  echo -en "\033%G" > /dev/tty$n
done
Наверно здесь надо что-то подправить, но вот что не могу сообразить.

★★

Последнее исправление: Hasek (всего исправлений: 1)
Ответ на: комментарий от Xenius

На первую команду No such file or directory при выполнении от обычного пользователя и command not found от рута.

bash-4.2$ grep -vE '^($|#)' /etc/profile.d/lang.sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C

Hasek ★★
() автор топика
Ответ на: комментарий от kostik87

Не очень понимаю, о чем вы говорите... Как это можно посмотреть? Систему ставил ещё летом, изначально пришлось включать распознавание кириллицы для работы с ней в KDE, что нет в консоли только сейчас заметил (в эмуляторах терминала есть).

Hasek ★★
() автор топика
Ответ на: комментарий от kostik87

ru_RU.UTF-8 есть как минимум в /etc/profile.d/lang.sh и /usr/share/locale/locale.alias

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Что и ожидаемо. Файл у тебя не исполнимый — при загрузке не запускается.
Попробуй выполнить эти команды:

chmod +x /etc/rc.d/rc.font
/etc/rc.d/rc.font

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Hasek

Я имею в виду создание файла локали, а именно выполнение, в данном случае:

localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
или использование
locale-gen

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Я имею в виду создание файла локали, а именно выполнение, в данном случае:

По-моему в слаке и без этого работает, видимо все локали уже скомпилированы изкоробки.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

Поправил, теперь всё работает. Спасибо!

Hasek ★★
() автор топика
Ответ на: комментарий от kostik87

создание файла локали

Локали ставятся с glibc-i18n, если пакет установлен, локаль на месте, если не установлен, то и генерить не из чего и нечем.

Проверить наличие локали проще простого:

locale
Если в выводе нет ошибок, то с локалью всё в порядке.

Установщик Slackware до сих пор задаёт вопрос об использовании локали в UTF-8. Если ответ был отрицательный, то в /etc/lilo.conf будет присутствовать:
append=" vt.default_utf8=0"
Если это так, изменить «0» на «1» (или вовсе убрать «vt.default_utf8=0» из строки append, или саму строку, если там ничего больше нет, вроде resume=/dev/sda1 и прочих параметров ядра). Изменив lilo.conf, обязательно позвать lilo от рута.

В 14.1 в rc.font часть ниже может быть необязательна (проверять по наличию шрифта в остальных, кроме первой, консолях).
for n in 1 2 3 4 5 6; do
  echo -en "\033%G" > /dev/tty$n
done

bormant ★★★★★
()
Ответ на: комментарий от sigurd

Да, про эту инструкцию знаю.

Hasek ★★
() автор топика
Ответ на: комментарий от kostik87

Огромный вывод всего и вся. Видимо Xenius прав.

Hasek ★★
() автор топика
Ответ на: комментарий от kostik87

locale-gen

Внимательнее читаем вопрос, в Slackware нет locale-gen.

bormant ★★★★★
()
Ответ на: комментарий от bormant

Можете еще подсказать, как настроить переключение раскладки в консоли? Создал файл /etc/rc.d/rc.keymap (изначально его не было), написал там loadkeys ruwin_ctrl_shift-UTF-8 (хочу переключение по Ctrl+Shift, например), затем сделал его исполняемым. Но при вызове /etc/rc.d/rc.keymap вывод cannot open file ruwin_ctrl_shift-UTF-8, раскладка соответственно тоже не переключается.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Ошиблись в имени раскладки:

$ (cd /usr/share/kbd/keymaps/i386/qwerty/; ls -1 ruwin_*UTF-8*)
ruwin_alt-UTF-8.map.gz
ruwin_cplk-UTF-8.map.gz
ruwin_ct_sh-UTF-8.map.gz
ruwin_ctrl-UTF-8.map.gz
Поэтому
loadkeys ruwin_ct_sh-UTF-8
Но я б рекомендовал CapsLock и для консоли (ruwin_cplk-UTF-8), и для графики (grp:caps_toggle).

bormant ★★★★★
()
Ответ на: комментарий от bormant

Погуглил и написал в /etc/rc.d/rc.keymap вот это:

#!/bin/sh
if [ -x /usr/bin/loadkeys ]; then
/usr/bin/loadkeys /usr/share/kbd/keymaps/i386/qwert/ruwin_ct_sh-UTF-8.map.gz
fi
Предварительно проверил что указанный файл по указанному пути есть. Сделал исполняемым, далее было вот что:
bash-4.2$ sudo /etc/rc.d/rc.keymap
Loading /usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz
unknown keysum 'cyrillic_small_letter_short_i'
loadkeys: /usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz:
91: addkey called with bad keycode -1
Вывод для меня не очень понятный и какой-то не внушающий оптимизм, но раскладка в консоли тем не менее заработала. Кстати, обратил внимание, что CapsLock сейчас в консоли не переключает верхний и нижний регистры — это нормально или нет? Может быть на него и перейду, просто почему-то к Ctrl-Shift есть привычка, отдельно Ctrl или Alt не ставлю, потому что будет «интерферировать» с Emacs постоянно.

Hasek ★★
() автор топика
Ответ на: комментарий от bormant

К вашему варианту вывод точно такой же с точностью до замены имени раскладки. Но главное что всё теперь работает и переключается как должно. Спасибо за помощь!

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Путь до раскладки необязателен, kbd лучше вас знает, где искать свои раскладки :^) А если вдруг Патрик решит положить раскладки туда, где они в лежат других дистрибутивах, то вариант без пути к раскладке продолжит работать, а с явным путём перестанет :^)

А по поводу ошибки, 1) у меня такой нет, 2) возникло сомнение по поводу режима консоли, что говорят

kbd_mode
stty | grep utf8

PS. В интернетах пишут, что указанная ошибка уходит при «loadkeys -u», но зачем ему -u в юникодной консоли, правда?

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

На kbd_mode:

The keyboard is in Unicode (UTF-8) mode
На stty | grep utf8:
iutf8
Везде юникод и не очень понятно, что не так.

Hasek ★★
() автор топика
Ответ на: комментарий от NK
Загружается /usr/share/kbd/keymaps/i386/qwerty/ruwin_cplk-UTF-8.map.gz
Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

а не, момент, как я предположил по ходу не в sudo дело, у меня так же, если не в tty1-6 делать, а в X'ах (Ob) и в каком-нибудь терминале:

# /etc/rc.d/rc.keymap
Загружается /usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz
неизвестный keysym «cyrillic_small_letter_short_i»
loadkeys: /usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz:91: addkey вызвана с некорректным кодом клавиши -1

CapsLock сейчас в консоли не переключает верхний и нижний регистры

Вот тут странно, у себя проверил т.к. и пашет, даже лампочка загорается

NK ★★★★★
()
Последнее исправление: NK (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.