LINUX.ORG.RU

А как сказать ядру чтобы оно не включало мониторы при загрузке?

 ,


0

1

Вот подключено у меня, допустим, 3 монитора к железке.

Хочу чтобы ядро, plymouth, dm, и dm после логина не включали никакие мониоры кроме главного.

video=<MY_COOL_CONNECTOR>:d в качестве аргумента ядра не предлагать, по скольку это выглядит как костыль.

Можно

echo on > /sys/kernel/debug/dri/0/<MY_COOL_CONNECTOR>/force
echo 1 > /sys/kernel/debug/dri/0/<MY_COOL_CONNECTOR>/trigger_hotplug

с прописанным d для всех коннекторов после логина, но этого я делать не хочу, по скольку надо монтировать debugfs.

Ну и, если, допустим, мониторов станет 4, а соответствующего аргумента ядра не будет, то 4 монитор включится до логина.

Есть ещё свойство для коннекторов, которое говорит что не надо включать этот видеовыход, но это, судя по комментариям в исходниках ядра, предполагается для VR очков, по скольку они не могут показывать десктоп корректно. Аргументом ядра, судя по всему, это свойство всё равно не выставить. Видимо оно выставляется на основе EDID подключенного монитора, что немного не то.

Related, но это решение мне не подходит.


Напиши свой конфигурационный файл для xorg-server, в котором опиши только один монитор, а остальные активируй по xrandr после логина.

Не уверен, что так получится, но думаю, что да.

Как это сделать в случае wayland - не скажу, пока его не использовал.

А для решения в момент загрузки, чтобы на все мониторы не выводилась консоль / splash сейчас не скажу. Видимо придётся изучать настройки виртуальных консолей.

anonymous
()
Ответ на: комментарий от anonymous

Xorg там нет. Допустим, я запускаю kmscube -n <MY_COOL_CONNECTOR_ID> после логина. Проблема в том что ядро активирует мониторы самостоятельно. Даже если

EXPERT=y
FRAMEBUFFER_CONSOLE=n

в конфиге ядра.

com
() автор топика
Ответ на: комментарий от com

Тут не подскажу. kmscube не использовал. Тогда либо разбираться как настроить в нём, модифицировать если не фунцкионала.

Ну либо передавать параметр video ядру, но тогда видимо мониторы могут быт недоступны просто так.

И тогда уже kmscube должен уметь их найти и в случае чего активировать.

Но если он работает просто через KMS (Kernel Mode Setting) ядра он не сможет видимо так.

Тогда только параметр video и разбираться как через /proc, /sys, ну либо /debugfs, поднимать мониторы через KMS.

А сделай программное управление кнопками включения мониторов ))) Через какой-нибудь USB-COM адаптер и ардуионо.

Может получиться, но это уже аппаратная реализация с написанием кода )))

anonymous
()
Ответ на: комментарий от anonymous

А сделай программное управление кнопками включения мониторов ))) Через какой-нибудь USB-COM адаптер и ардуионо.

Не, это из пушки по воробьям. Я могу пропатчить ядро, plymouth и lightdm, но я создал эту тему потому что мне кажется что я что-то упускаю…

com
() автор топика

Ну, в иксах просто пишешь режим off и все. Какой монитор выставишь, такой и выключит. Для ноутбуков с внешним монитором такое работает. Как отключается внешний монитор, так ноутбучный включается.

anonymous
()

Зашёл предложить video=, останусь, чтобы спросить, не почему ты хочешь странного, а почему самое прямое решение «костылем» обозвал. В /sys/class/drm правда нечего потеребить, чтобы будить их обратно? Верится с трудом, но даже если так — ты хотел странного, вот цена, она невелика.

t184256 ★★★★★
()

Аргументом ядра, судя по всему, это свойство всё равно не выставить. Видимо оно выставляется на основе EDID подключенного монитора, что немного не то.

А подсунуть кастомный EDID через те же аргументы ядра тебе какие соображения мешают?

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)

А разве не BIOS включает вывод на мониторы? Он отвечает за включение оборудования, он инициирует диски, запускает вентиляторы и пр.

К моменту начала загрузки ОС все уже включено, и ОС может только выключить мониторы. Как это делать, на каком этапе – это уже тебе решать. Можно через опцию ядра, тогда это будет делать ядро при своем запуске, можно через систему сервисов (openrc, systemd).

Поэтому то, что ты назвал костылем, это не костыль.

soomrack ★★★★
()

То есть передача параметров ядру напрямую по твоему костыль? Смахивает на ,,не хочу есть через рот предложите клизму получше,,

anonymous
()

video=<MY_COOL_CONNECTOR>:d в качестве аргумента ядра не предлагать, по скольку это выглядит как костыль.

В виду того что партия решила что видеодрайверы должны быть KMS, а драйверы X11 теперь не в моде, мониторы включаются самим ядром ещё до запуска init процесса или X11/Wayland. Так что ничего умнее параметров ядра или удаления драйверов сделать не получитсяю

X512 ★★★★★
()
Ответ на: комментарий от soomrack

А разве не BIOS включает вывод на мониторы? Он отвечает за включение оборудования, он инициирует диски, запускает вентиляторы и пр.

У меня 2-й монитор включается после инициализации драйвера в ядре.

wandrien ★★
()

Подключи один монитор к розетке, а два монитора в сетевой фильтр с кнопкой и кнопку выключи. Нужны будут просто сразу все 3-4-5 включаешь и всё, не нужны выключаешь и всё. Уверен что существуют с ИК пультиком или с wifi даже, можно пультиком включать питание для них, а можно через скрипт если с WIFI. =)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от wandrien

А это от биоса видяхи зависит, какие-то видяхи у меня все выходы сразу активируют в mirror, другие только один, к которому что-то подключено, третьи вообще только один.

soomrack ★★★★
()
Ответ на: комментарий от X512

Проблема в том, что :d – это force disable.

После загрузки коннектор останется мёртвым, всегда говорит что он disconnected, и прочитать поддерживаемые монитором mode не даёт.

Можно оживить его через debugfs, и как раз это выглядит как костыль.

мониторы включаются самим ядром

Если только ядро не определило что монитор non-desktop по EDID, в таком случае оно его трогать не будет.

com
() автор топика
Ответ на: комментарий от anonymous

Ну, оно read only.

Вот тут оно всегда DRM_MODE_DISCONNECTED если прописать :d коннектору, и список с modes всегда пустой.

Даже если бы я мог из userspace прописать какое-либо свойство, то это получилось бы сделать уже после загрузки drm, который, в свою очередь, уже включил бы монитор на этапе своей инициализации.

com
() автор топика