Jul. 7th, 2013

henry_flower: A melancholy wolf (Default)
Т.к. поддержка отутюженной 17й федоры заканчивается через месяц, я, благодаря этому факту, не в силах сдержать свою радость.

Поставил через ipxe минимальный комплект 19й (без иксов и пр.). Попробовал самое невинное: изменить консольный шрифт. "Держи карман шире", сказала мне федора.

Во-первых, настройки переехали (зачем?) из /etc/sysconfig/i18n в /etc/vconsole.conf, где поменялись имена переменных, которые нужно устанавливать.

Во-вторых, изменение шрифта происходит только посредством systemd (а именно systemd-vconsole-setup.service).

В третьих, указания шрифта в /etc/vconsole.conf никак не помогают шрифт при перезагрузке изменить, из-за чего можно кругом наблюдать радостные, сияющие лица: https://bugzilla.redhat.com/show_bug.cgi?id=970030.

В четвертых, systemd-vconsole-setup оказался бинарным исполняемым файлом (2010x Unix way), из-за чего пришлось скачать исходник systemd чтобы прочесть vconsole-setup.c, иначе было неясно что он собственно натужно пытается делать.

В пятых, после чтения исходника оказалось, что /etc/vconsole.conf можно засунуть в задницу, если в параметре ядра при загрузке был указан свой шрифт vconsole.font=foobar.

В шестых, если если такого параметра ядра нету, а /etc/vconsole.conf есть, то нужно пересобрать initramfs, потому что systemd на раннем этапе будет стартовать оттуда и будет искать /etc/vconsole.conf там (в initramfs).

В седьмых, указание шрифта в параметрах ядра и пустое значение переменной FONT в /etc/vconsole.conf приведет к тому, что по умолчанию dracut пересоберет initramfs вообще без единого файла шрифта и ядро при загрузке грустно заметит, что шрифт не найден, а чуть попозже systemd-vconsole-setup также печально наебнется.

В восьмых, если сделать все "правильно": убрать параметр ядра vconsole.font, записать FONT=foobar в /etc/vconsole.conf, сказать dracut'у собирать initramfs без host-only mode (т.е. засовывать туда все, а не минимум), это поможет как укол в деревянную ногу: шрифт при загрузке не изменится.

В девятых (это кто-то еще читает?), после рассматривания journalctl -b (если не сказать -b, можно долго пялится на лог загрузки ядра 15 перезагрузок назад и зло матерится), окажется что systemd-vconsole-setup.service стартует очень неудачно: как раз перед включением drm, который сбрасывает все настройки консоли, потому что изменяется разрешение экрана.

В десятых, изменить поведение systemd-vconsole-setup.service штатными средствами нельзя: локальные модификации в /usr/lib/systemd будут, естественно, затерты при будущем yum update.

В одиннадцатых, неудачный старт systemd-vconsole-setup.service неудачен не у всех: кому-то везет и drm дает в зубы видиокарте быстрее, systemd-vconsole-setup.service стартует чуть-чуть попозже и шрифт таки изменяется.

В двенадцатых, хочу напомнить, что в темные времена sysvinit скриптов такого идиотизма не было, потому что загрузка сервисов была синхронной.

В тринадцатых, единственным гарантированным способом остается:

  # cat /etc/rc.d/rc.local
  #!/bin/sh
  systemctl restart systemd-vconsole-setup

После "правильной" настройки, как в п.8.

В четырнадцатых, ВЕНДА ГОВНИЩЕ ЛОЛ!! МЕЛКОСОФТ КИДАЕТ ВСЕХ НА БАБЛО, ФЕЙЛ ВООБЩЕ. КАПЕЦ КАК МОЖНО БЫТЬ ТАКИМ БЫДЛОМ И НЕ РИАЛТАЙМ ОСЬ ЮЗАТЬ. БИЛЛИГЕЙТС ВСЕ СПИЗДИЛ, ЭТО КАЖДОМУ ИЗВЕСТНО, А МАЗДАЙ СОСЕТ ПРИЧМОКИВАЯ!! ЛИНУКС ВАЩЕ АХУЕНЕН, КАК БЛЯТЬ НЕЯСНО.
+1'd by:
  1. Udger R
  2. Dmitriy Zaveryukhin
  3. Ed Shevsky

Comments:
  1. Andrew Zubinski, 2013-07-07T12:49:17.453Z

    и этот человек мне запрещал ковыряться в носу!

    ыхххыхыхы

  2. Henry Flower, 2013-07-07T12:56:15.385Z

    +Andrew Zubinski ох, я уже после этого ничего не хочу и не могу.

  3. Andrew Zubinski, 2013-07-07T13:00:29.539Z

    +Henry Flower и такая же чума, но мелочнее, в юзерспейсе чуть ли от каждого чиха в апдейтах. 

    короче, линуксоиды - дятлы. им бы сверхдешёвые компы для старичков делать.  с минимальным набором софта - браузер, скайп, самый простой текстовый редакторчик, здоровенные шрифты, неперемещаемые иконки (у старичков моторика плохая, они лишнее любят нажимать-таскать), без никаких клавиатурных шорткатов. без никаких излишеств. вот это - реальное. три иконки здоровенных - Интырнэт, Поболтать и Написать. всё. и цена грошовая. единственное, на что оно годно при некоторых усилиях.

  4. Andrew Zubinski, 2013-07-07T13:07:32.296Z

    +Henry Flower кстати, насчёт риалтайма не соврали. "Linux 3.10 - ебля в реальном времени" бггг

  5. Oleksii Shevchuk, 2013-07-07T20:31:10.440Z

    Хорошо у вас там в криокамере :D

  6. Oleksii Shevchuk, 2013-07-07T20:33:19.697Z

    По поводу консоли, правильный сопособ - оформить  fb как .device и пихнуть по зависимостям перед console-setup. Например:

    > cat /etc/udev/rules.d/00-video.rules  
    SUBSYSTEM=="graphics", KERNEL=="fb*", ACTION=="add", TAG+="systemd"

    > cat /etc/systemd/system/dev-fb0.device
    [Unit]
    Description=Intel video output
    Before=systemd-vconsole-setup.service graphical.target

    [Install]
    WantedBy=sysinit.target

  7. Henry Flower, 2013-07-09T22:14:33.710Z

    +Oleksii Shevchuk так должно работать, но с федорой не работает, ггг.
    запихнул в initramfs

    # systemctl enable dev-fb0.device
    # dracut -f -N -v -I "/etc/udev/rules.d/00-video.rules /etc/systemd/system/dev-fb0.device /etc/systemd/system/sysinit.target.wants/dev-fb0.device"

    и тогда journalctl показывает ожидаемое:

    Jul 10 00:47:38 localhost kernel: fbcon: svgadrmfb (fb0) is primary device
    Jul 10 00:47:38 localhost kernel: Console: switching to colour frame buffer devi
    Jul 10 00:47:38 localhost kernel: [drm] Initialized vmwgfx 2.4.0 20120209 for 00
    Jul 10 00:47:38 localhost systemd[1]: Found device /dev/fb0.
    Jul 10 00:47:38 localhost systemd[1]: Starting Setup Virtual Console...
    Jul 10 00:47:38 localhost systemd[1]: Started Setup Virtual Console.
    Jul 10 00:47:38 localhost systemd[1]: Starting Show Plymouth Boot Screen...
    Jul 10 00:47:38 localhost systemd[1]: Starting System Initialization.

    но шрифт не изменяется.

    по-моему, там нужно еще отколупать plymouth от vconsole и отфутболить vconsole в basic.target.

    короче, не стоит оно усилий. из /etc/rc.d/rc.local вызывается и ладно.


Permalink: https://plus.google.com/115290581164606462017/posts/cEwfVz8XwJB

June 2025

M T W T F S S
      1
2345678
91011 12131415
16171819202122
23242526272829
30      

Expand Cut Tags

No cut tags