Не ставится локаль

Хм…
Может совпадение, но проверил права доступа на /etc/vconsole.conf, /etc/locale.conf, /enc/environment, и оказалось, что права на чтение только у root'а и его группы.
-rw-r----- 1 root root 114 авг.  23 21:59 /etc/environment
-rw-r----- 1 root root   17 сент.  1 16:42 /etc/locale.conf
-rw-r----- 1 root root   49 сент.  1 16:44 /etc/vconsole.conf
Дал права на чтение всем, перезагрузился:
% locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Работает!
Может совпадение, может решение. Посмотрю, что завтра будет.
Решил, но не я.

http://archlinux.org.ru/forum/viewtopic.php?f=34&t=9658#p85471
В Вики это есть, надо только читать внимательно: Running DEs under systemd.
(кстати, недавно добавлено и у меня в блоге по настройке системных файлов – UPDATE 4).
Говорила мама: "RTFM, сынок!"
Не стал создавать тему.
Есть два ноута, которые плавно перевёл на systemd, и почти всё удачно, кроме шрифтов в консоле.
$ cat /etc/environment
LANG=ru_RU.UTF-8
$ cat /etc/vconsole.conf
KEYMAP=ru4
FONT=UniCyr_8x16
]$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE=C
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
$ grep “ru_RU” /etc/locale.gen
ru_RU.KOI8-R KOI8-R  
ru_RU.UTF-8 UTF-8  
ru_RU ISO-8859-5  
В Х-сах всё нормально. (на одном OpenBox, на втором Gnome Shell).
А в консоле вместо русского кубики. :-(
Что ещё я мог забыть прописать?
viewtopic.php?t=9798
Дык, это костыль.
Как это сделать штатным способом?

И ведь видно, что systemd-vconsole-setup.service стартовал
$ systemd-analyze blame
  7150ms laptop-mode-tools.service
  3673ms NetworkManager.service
  3183ms systemd-udev-settle.service
  2814ms systemd-logind.service
  1690ms systemd-vconsole-setup.service
  1104ms systemd-remount-fs.service
   838ms wpa_supplicant.service
   809ms dev-mqueue.mount
   781ms console-kit-log-system-start.service
   762ms gpm.service
   645ms sys-kernel-debug.mount
   591ms dev-hugepages.mount
   538ms systemd-modules-load.service
   481ms colord-sane.service
   414ms systemd-udev-trigger.service
   397ms systemd-udevd.service
   237ms systemd-user-sessions.service
   216ms systemd-sysctl.service
   162ms systemd-tmpfiles-setup.service
   152ms colord.service
   138ms home.mount
   100ms udisks2.service
    87ms console-kit-daemon.service
    71ms upower.service
    63ms accounts-daemon.service
    52ms rtkit-daemon.service
    33ms boot.mount
    10ms tmp.mount
     3ms sys-fs-fuse-connections.mount
Это не костыль, это подробное объяснение сути проблемы и имеющихся решений, всё разжевано предельно подробно.

В общем случае, ШТАТНОГО РЕШЕНИЯ НЕ СУЩЕСТВУЕТ, поскольку запуск модуля графики в ядре СБРАСЫВАЕТ консольный шрифт в дефолт, если он был установлен до этого.
systemd-vconsole-setup это не демон, а разовая утилита, она НЕ УМЕЕТ восстанавливать шрифт после сброса, и требует повторного запуска каждый раз, когда требуется восстановить шрифт.

В привязке к конкретному модулю DRM+KMS самым простым решением является добавление этого модуля в initcpo.
Если система переносная, и конкретный модуль добавить не получится, самым надёжным способом остаётся правило UDEV с привязкой загрузки шрифта к запуску фреймбуфера.
Спасибо за проделанную работу.
СистемД, такой СистемД… ;-)
mango
Спасибо за проделанную работу.
СистемД, такой СистемД… ;-)
Всегда пожалуйста :)
Но systemd тут ни при чём, такова специфика процедуры загрузки шрифта в консоль, которая появилась задолго до KMS, когда никому и в голову не приходило, что фреймбуфер может включиться в самый неподходящий момент, и теперь в результате требует обработки событий для поддержания шрифта неизменным.
$ locale -a
C
POSIX
ru_RU.utf8

$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE=C
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

$ cat /etc/locale.conf
LANG=ru_RU.UTF-8
LC_COLLATE=C
#LC_TIME=ru_RU.UTF-8

locale.gen:
ru_RU.UTF-8 UTF-8

cat /etc/environment
#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
#LANG=ru_RU.UTF-8
#LANG=en_US.utf8
LANG=ru_RU.utf8


cat /etc/locale.conf
LANG=ru_RU.UTF-8
LC_COLLATE=C
#LC_TIME=ru_RU.UTF-8

cat /etc/vconsole.conf
KEYMAP=ru
FONT=ter-c16b
FONT_MAP=

И все одно не работает. ЧЯДНТ? Устал уже, с утра бьюсь. Не работает.
 
Зарегистрироваться или войдите чтобы оставить сообщение.