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 --]
next prev parent 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