[sisyphus] Бранч p8

Hihin Ruslan ruslandh на yahoo.com
Сб Апр 23 10:02:17 MSK 2016


Здравствуйте Хихин Руслан
  В сообщении от 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):
 
 .

________________________________________________________________________
С уважением Хихин Руслан
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 181 байтов
Описание: This is a digitally signed message part.
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20160423/d1037530/attachment-0001.bin>


Подробная информация о списке рассылки Sisyphus