[РЕШЕНО] systemd: как заткнуть фонтан в tty?

Раз уж systemd умеет запускать демонов одновременно, я решил заставить его запустить getty, не дожидаясь загрузки других юнитов, которые для логина в консоли не требуются. Однако, в добавок к запутанности зависимостей между юнитами, я столкнулся с дополнительной проблемой – не особо управляемым логлевелом systemd.

getty стартует, но одновременно в консоль продолжают валиться сообщения от systemd, и так до тех пор, пока он не достигнет своей цели загрузки, то есть в моём случае multi-user.target
Вариант с полным изначальным отключением всех сообщений systemd меня категорически не устраивает. Требуется отключить сообщения по требованию, однако я так и не нашел какого-либо указания на то, как сделать такое штатно.

Единственный способ, которым мне пока удалось это сделать, представляется мне несколько э… ужасным, хотя он и работает. Я сделал и зарегистрировал вот такой юнит:
/etc/systemd/system/silence.service
[Unit]
Description=Silence systemd
Before=getty.target
Wants=getty.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl daemon-reexec
[Install]
WantedBy=multi-user.target
Этот юнит вынуждает systemd перезапуститься прямо в процессе загрузки, что приводит к досрочному отключению вывода в консоль.

Вопрос: кто-нибудь знает, как сделать это более адекватным способом?

P.S.
Решение найдено:
kill -RTMIN+21 1
А вот systemctl daemon-reexec лучше НЕ использовать, ибо иногда чревато глюком – systemd может при перезапуске потерять доступ к dbus и стать неуправляемым.
Подробнее см. viewtopic.php?p=89399#p89399
Не особо понятно что хочешь сделать…
Тихий режим в параметрах загрузки ядра quiet и сообщений нет, кроме тех которые определены по умолчанию loglevel=4
Да и эти сообщения нужны только для отладки, в настроенной системе они только значительно замедляют загрузку и портят консольные приложения.

Тут нужно определиться либо сообщения либо ранняя консоль…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
У меня agetty стартует штатно, но и тут в TTY1 после приглашения залогиниться успевают “въехать” несколько последних сообщений systemd. Режим quiet не хочется выставлять. Может, вообще запретить включать первую консоль? :)
Leonardo19
Может, вообще запретить включать первую консоль?
Не поможет, оно кажется пишется во все консоли.
Нужно отказаться от сообщений.
Либо сделать в грубе вариант загрузки с сообщениями и без. + выставить GRUB_DEFAULT=saved (очень удобно!!!)
Либо сделать скриптик, который будет проверять состояние запуска, и если была ошибка сигнализировать об этом, при отключенных сообщениях.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Не поможет, оно кажется пишется во все консоли.

У меня к моменту запуска K Display Manager не успевают загрузиться все демоны. Если переключюсь в 1 консоль (tty1), то увижу оставшийся вывод загрузки. На остальных консолях (tty2, tty3 …) нет ничего.
time lords, Возможно оно пишется в текущую консоль. (что смысла не меняет)
У меня так было, быстро переходил в другую и там тоже получал запоздавшие сообщения…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Как я уже сказал, вариант с отключением сообщений при загрузке меня категорически не устраивает.
О замедлении загрузки сообщениями никогда не слышал, но специально проверил. Результат: замедления не замечено. Включение и выключение сообщений никак не влияет на время загрузки. Возможно, такое может быть в тормозном фреймбуфере VESA?

Сейчас у меня сделано так:
Ядро СПЕЦИАЛЬНО грузится с loglevel=6, чтобы иметь возможность видеть загрузку на этапе ядра и initcpio.
При старте systemd запускается юнит, который выполняет команду dmesg -n 3, так что с этого момента в консоль идут только сообщения systemd.
Когда загружается getty, выполняется ещё один юнит (я его показал в первом посте), который заставляет systemd прекратить вывод в консоль, чтобы не мешать логину.
Меня вполне устраивает эффект, который производит команда systemctl daemon-reexec , однако такой метод не представляется вполне надёжным, так как использует недокументированные и неуправляемые особенности поведения systemd при перезапуске, которые в будущем могут измениться.

Меня интересует возможность штатного отключения вывода systemd в консоль в нужный момент, а не с самого начала, аналогичную тому, как это делает dmesg -n N или dmesg -D с сообщениями ядра, или, ещё лучше – перевод вывода systemd в другую консоль, то есть из общего tty0 в конкретный tty1, или даже в tty12.

Пока я не нашел никаких команд или опций для управления выводом systemd в процессе работы, и у меня есть подозрения, что в этом отношении он неуправляем, то есть самовольно берёт эту настройку из параметров ядра, ему не предназначенных, отключает по достижении заданной при старте цели, и включает вновь при задании следующей (обычно выключения или перезагрузки)
time lords, Возможно оно пишется в текущую консоль. (что смысла не меняет)
У меня так было, быстро переходил в другую и там тоже получал запоздавшие сообщения…

Простите. Вы правы. При быстром переключении в другую консоль вывод происходит в неё. Только вот смутило меня появление строчки после переключения консоли Started Getty on tty2. Возможно, в сторону этого Getty и надо копать
Не это ли?
       TTYPath=
           Change the console TTY to use if ForwardToConsole=yes is
           used. Defaults to /dev/console.
man journald.conf
Lupus pilum mutat, non mentem.
time lords
При быстром переключении в другую консоль вывод происходит в неё. Только вот смутило меня появление строчки после переключения консоли Started Getty on tty2. Возможно, в сторону этого Getty и надо копать
agetty на каждой консоли запускается ТОЛЬКО ПОСЛЕ переключения на неё.
Вывод сообщений прекращается по достижении заданной при запуске цели, то есть той, на которую указывает ссылка default.target
Если вывод продолжается во время логина, значит эта цель в данным момент ещё не достигнута. Я уже нашел один способ отключать эти сообщения досрочно (см. первый пост), просто мне хочется сделать всё более правильным и надёжным методом :)
 
Зарегистрироваться или войдите чтобы оставить сообщение.