8607
[РЕШЕНО] Не отображается криллица в терминале
Доброго времени суток, друзья.
Суть проблемы, как ясно из заголовка, что не отображается русский язык в консоли при выводе ls или в текстовом редакторе nano. Вместо русских букв — цифры. Для примера вывод ls:
Перерыл кучу форумов — нашёл похожие проблемы, но их решения мне не помогли.
Вывод locale:
Вывод cat /etc/locale.conf
Пробовал локаль и на русский менять, всё равно в консоле русские символы не отображаются.
Просьба помочь, кто знает
Суть проблемы, как ясно из заголовка, что не отображается русский язык в консоли при выводе 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 комментария
Русский шрифт в терминале и ненавистные квадратики
Каждый раз 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