[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