Здравствуйте Хихин Руслан В сообщении от 15 апреля 2016 Хихин Руслан написал(a): > Здравствуйте ! > > Ещё проблема с русскими фонтами в консоле Ctrl+ALT+F2 - опять > квадратики пошли. > > Что-то я не вспомню, как это праильно лечится всвязи с > использованием systemd. Вот я читаю: https://wiki.archlinux.org/index.php/Fonts_%28Русский%29 (извините за обширное цитирование) "Шрифт в консоли Теория После запуска ядро Linux создаёт и поддерживает текстовую консоль. ............... Если для вашей видеокарты при загрузке системы подключается drm-модуль, например i915 для intel, его старт приводит к появлению нового устройства фреймбуфера (или замене старого на новый) (/dev/fb0 и т.д.), и повторной инициализации консоли со сбросом шрифта. Если это происходит уже после того, как systemd-vconsole-setup загрузила ваш шрифт, вам требуется либо загрузить его повторно, либо обеспечить старт drm-модуля заведомо раньше загрузки шрифта. Второе проще всего сделать, добавив ваш drm-модуль в строку MODULES= конфига /etc/mkinitcpio.conf и перегенерировав образ initramfs. Для стационарной системы этого вполне достаточно. Если вы используете initramfs с хуком systemd, либо вообще не используете initramfs, или ваша же система "переносная", то есть находится на съёмном диске или флешке, и запускается на разных машинах, предпочтительнее первый вариант. Для этого нужно создать правило UDEV, которое будет срабатывать на появление нового устройства /dev/fb* /etc/udev/rules.d/96-fb-all-vcs-setup.rules # Setup all vconsoles for a new framebuffer device KERNEL=="fb*", ACTION=="add", RUN+="/bin/sh /etc/udev/all-vcs-set.sh" и скрипт, который оно будет запускать: /etc/udev/all-vcs-set.sh #!/bin/sh # We must load locale for $VCS util . /etc/locale.conf export LANG VCS=/usr/lib/systemd/systemd-vconsole-setup # Setup the "real" (current) console first $VCS # Setup all other active consoles for VC in /dev/vcs[0-9]* do $VCS /dev/tty${VC#/dev/vcs} done Скрипт читает локаль, которая требуется для нормальной работы утилиты systemd-vconsole-setup, после чего выполняет её для "реальной" консоли, и для каждой из созданных на этот момент виртуальных, если такие есть. Для определения инициализированных виртуальных консолей здесь использованы устройства произвольного доступа к текстовым буферам соответствующих консолей /dev/vcs*, которые в отличии от /dev/tty* создаются только для уже имеющихся консолей. Возможен ещё один вариант решения – отсрочить загрузку шрифта до момента инициализации фреймбуфера. Для этого можно создать правило UDEV, которое заставит systemd создавать юниты для устройств фреймбуфера: /etc/udev/rules.d/96-fb-systemd.rules # Register all framebuffer devices in systemd SUBSYSTEM=="graphics", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/graphics/%k" и дополнить systemd-vconsole-setup.service, указав, что установка шрифтов должна ожидать первой инициализации фреймбуфера: /etc/systemd/system/systemd-vconsole-setup.service.d/ordering.conf [Unit] Requires=sys-subsystem-graphics-fb0.device After=sys-subsystem-graphics-fb0.device Этот вариант несколько проще, но менее универсален: Он не будет работать в случаях повторной инициализации фреймбуфера, например, если при загрузке VESA-фреймбуфер сменяется на drm-фреймбуфер. Также он не сможет загрузить шрифт в дополнительные виртуальные консоли, если они появились до инициализации фреймбуфера. И наконец, он этот вариант заблокирует загрузку шрифта при отсутствии фреймбуфера. Самый простой способ (пере)загрузки шрифта в консоли при инициализации фреймбуфера – прямой вызов утилиты systemd-vconsole-setup из правила UDEV: /etc/udev/rules.d/96-fb-vconsole-setup.rules # Setup vconsole for a new framebuffer device KERNEL=="fb*", ACTION=="add", IMPORT{file}="/etc/locale.conf", RUN+="/usr/lib/systemd/systemd-vconsole-setup" В этом случае загрузка шрифта не блокируется при отсутствии фреймбуфера, и срабатывает автоматически даже при его повторной инициализации. Единственный недостаток – шрифт не будет загружен для дополнительных виртуальных консолей, если они инициализируются раньше фреймбуфера. Эту возможность учитывает и реализует только решение с шелл-скриптом (см. выше)." У нас эти рецепты работают? Какой способ у нас лучше применять? Есть-ли у нас готовый штатный способ? PS Почему-то на всех ноутах, где карточки не Nvidia, вместо русских букв квадраты. -- А ещё говорят так (fortune): . ________________________________________________________________________ С уважением Хихин Руслан