Уголок новичка
   8606

[РЕШЕНО] Не отображается криллица в терминале

Доброго времени суток, друзья.
Суть проблемы, как ясно из заголовка, что не отображается русский язык в консоли при выводе ls или в текстовом редакторе nano. Вместо русских букв — цифры. Для примера вывод ls:

0 -rw-r--r-- 1 v v    0 May 22 20:13 ''$'\320\271'
0 -rw-r--r-- 1 v v    0 May 22 22:40 ''$'\321\202\320\265\320\272\321\201\321\202''.txt'


Перерыл кучу форумов — нашёл похожие проблемы, но их решения мне не помогли.
Вывод locale:

locale: Невозможно установить LC_ALL локалью по умолчанию: Нет такого файла или каталога
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=Default.UTF-8
LC_TIME=Default.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=Default.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=Default.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
LC_ALL=


Вывод cat /etc/locale.conf

LANG=en_US.UTF-8
LANGUAGE=en_GB.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8


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

2 комментария

avatar
русский шрифт в консоли: forum.manjaro.ru/viewtopic.php?f=24&t=335

Русский шрифт в терминале и ненавистные квадратики

Каждый раз setfont cyr-sun16
или:

После установки Manjaro рано или поздно возникает необходимость работы в терминалах tty (Ctrl-Alt-F2) вне Х. По умолчанию кирилица там отсутствует. Чтобы новым пользователям лишний раз не гуглить, считаю такое руководство не помешает в Русскоязычном сообществе. Исправить это можно так:

1) Редактируем vconsole.conf:

sudo nano /etc/vconsole.conf

KEYMAP=«ruwin_alt_sh-UTF-8»
LOCALE=«ru_RU.UTF-8»
CONSOLEMAP=
FONT=«cyr-sun16»
USECOLOR=«yes»

Сохраняем, выходим из нано. строка KEYMAP=«ruwin_alt_sh-UTF-8» устанавливает переключение раскладок по Alt-Shift, другие варианты можно посмотреть так:
ls /usr/share/kbd/keymaps/i386/qwerty
Пэкспериментировать можно с помощью команды loadkeys <имя раскладки> в терминале (Ctrl-Alt-F2 например)
Шрифт задаёт строка FONT=«cyr-sun16», посмотреть доступные: ls /usr/share/kbd/consolefonts/ включить нужный шрифт: setfont <имя шрифта>

2) Пересоздаём initrd.
Для этого сначала редактируем файл mkinitcpio.conf. В нём в строке HOOKS=«base udev autodetect modconf block keyboard keymap… должно присутствовать consolefont если нет — дописываем после keymap.

sudo nano /etc/mkinitcpio.conf

HOOKS=»base udev autodetect modconf block keyboard keymap consolefont plymouth resume filesystems fsck"

Сохраняем, выходим из нано.
Пересоздаём initrd:
sudo mkinitcpio -p linux316 (linux316 — префикс текущего ядра (моего) — посмотреть свои — в /etc/mkinitcpio.d/)

3) Перезагрузка. Проверка.

В принципе этого обычно достаточно. НО! У меня на некоторых машинах (в основном на буках ) появлялись странные косяки, выражающиеся в виде белых квадратиков вместо букв и невозможностью авторизации в терминале. Явно приходило на ум что логин пишу я на русском, шрифта нет и раскладка не меняется — т.е. вообще ни чего не работает. Перелазив кучу форумов по арчу выяснил, что это связано непосредственно с SystemD и фреймбуфером. Перепробывав много костылей в виде скриптов для udev ничего не приносило желаемого результата. Проблема вот в чём — SystemD распараллеливает запуск служб, и если настройки консоли и шрифта загружаются до инициализации фреймбуфера — получаем такой вот косяк. Чтобы избавить Вас от перечитывания сотен страниц и неизвестного количества экспериментов я и решил поделиться опытом.

1) Фреймбуфер дожен стартовать как можно раньше. (на 100% проблему это не решит но вместо квадратиков появяться русские буквы)

sudo lspci -vk

находим какой модуль ядра отвечает за видео (VGA controller) в моём случае:

00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device 3800
Flags: bus master, fast devsel, latency 0, IRQ 44
Memory at b5000000 (64-bit, non-prefetchable) [size=4M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
I/O ports at 6000 [size=64]
Expansion ROM at [disabled]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: i915
Kernel modules: i915

Для этого в пункте 2 выше помимо строки HOOKS редактируем строку
MODULES=«i915 ext4 aes_i586 sha256 sha512»
Здесь я добавил i915 — модуль для интегрированного видео от intel — Вы добавляете своё.

2) За загрузку нужных нам параметров консолей отвечает SystemD сервис systemd-vconsole-setup — он отрабатывает не в то время и основной косяк именно здесь!
Исправляем это:

sudo nano /usr/lib/systemd/system/systemd-vconsole-setup.service
находим и приводим к виду

DefaultDependencies=no
Conflicts=shutdown.target
After=sysinit.target
Before=shutdown.target
ConditionPathExists=/dev/tty0

Сохраняем. Перезагружаемся, проверяем…

Возможно наверное вообще ограничиться этим способом (П2) не подгружая модуль, т.к sudo systemctl restart systemd-vconsole-setup решает проблему из иксов и квадраты исчезнут…

Удачи!
?
Всегда есть быстрое простое неправильное решение.
быстрые простые правильные (иногда) ответы здесь t.me/ManjaroRu
+1
avatar
Большое спасибо за ваш ответ. Буквально пол часа назад разобрался сам. Оказалось всё намного примитивнее. Нужно было во всех полях default в локале выставить какое либо значение, в данном случаи выставил ru_RU и всё заработало. Конечно не понятно почему так, и чем ему не понравился дефолт, но это тема для отдельного рассмотрения :)
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.