ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: Hihin Ruslan <ruslandh@yahoo.com>
To: sisyphus@lists.altlinux.org
Subject: Re: [sisyphus] Бранч p8
Date: Sat, 23 Apr 2016 10:02:17 +0300
Message-ID: <201604231002.22971@ruslandh> (raw)
In-Reply-To: <201604150934.03138@ruslandh>

[-- Attachment #1: Type: text/plain, Size: 7114 bytes --]

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

________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  reply	other threads:[~2016-04-23  7:02 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14 15:15 Aleksey Novodvorsky
2016-04-14 17:09 ` ruslandh
2016-04-14 17:17   ` Aleksey Novodvorsky
2016-04-14 17:22     ` ruslandh
2016-04-14 19:34     ` ruslandh
2016-04-14 19:46       ` ruslandh
2016-04-15  6:03       ` Sergey
2016-04-15  6:34         ` Хихин Руслан
2016-04-23  7:02           ` Hihin Ruslan [this message]
2016-04-23  8:53             ` [sisyphus] Бранч p8. Правильная загрузка фонтов Хихин Руслан
2016-04-19 16:48             ` [sisyphus] Бранч p8 Ruslan Hihin
2016-04-19 18:53           ` Hihin Ruslan
2016-04-18  6:16 ` Gleb Kulikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201604231002.22971@ruslandh \
    --to=ruslandh@yahoo.com \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git