Systemd-юнит для выключения дискретной карты

Опрос

Вам нравится systemd ?
Всё гуд
Ковыряется потихоньку )
На кол Леннарта!
Всех с наступившим 2014 годом, как говорится новый год это символ перемен ,в моём же случае это переход на open source тобишь на linux

Задача
Итак после короткой прелюдии ближе к делу, нужно выключать питание дискретной карты при старте системы до запуска X-ов.

Что сделал я
Написал простой юнит для systemd для исполнения отдельного скрипта
/etc/rc.local
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
#Requires=???
#After=???
Before=kdm.service
[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

Проблема
В моём незнании linux и systemd, а если по существу systemd запускает не связанные юниты парралельно и в разном порядке мой же нормально не выполниться в большинстве случаев

Вопрос
Какие юниты нужно включить в поле Requires моего юнита чтобы операции c vgaswitcheroo точно отработали на этапе инициализации и запуска systemd?

Прилагаю
Порядок инициализации на моём ПК

зачем юнит? лучше сделать скрипт который выключает/включает когда нужно. захотелось поиграть включил, доиграл выключил.
CVG, Объясняю, я накидал демон который подхватывает rc.local в котором командочка отключает питание дискретной карты так как я всё равно не смогу ею пользоваться изза MUX -less реализации гибридной графики.

В том что предложили вы есть одно но а по сути даже два первое кроется в том что если послать эхо OFF в switch то ядро почему то автоматом отключает vgaswitcheroo и моментально производит размонтирование debug почему не знаю просто процитировал сообщение выдаваемое ядром из чего следует что обратно включить дискретку в штатном режиме уже не выйдет либо перезагрузка либо менять что то в ядре с чем честно говоря я не разу не сталкивался, второе это не возможность перезагрузить и выключить пк если отключил дискретную вид. карту после старта x.servera, тут я могу лишь пояснить разве что о последствиях: даже при systemctl poweroff система пишет что процессор занят и т.д и т.п но компьютер не отрубает в итоге отключаю грубой силой если же отключить дискретку до старта X-ов то всё выключается нормально.

В итоге остаётся только написать демон который будет исполняться после монтирования debug и инициализации видюх в vgaswitcheroo и до старта в моём случае kdm, вообщем что я и хочу сделать, но ввиду не зрелости своих знаний о linux я не могу понять какие процессы у меня должны обязательно выполниться перед стартом моего модуля так как они всегда грузяться парралельно и в разном порядке вот и хочу спросить народ который разбирается.

Какие модули нужно включить в поле Requires юнита чтобы операции c vgaswitcheroo точно отработали на этапе инициализации и запуска systemd включённых модулей?
Mr.Sharps, у вас путаница в терминах, и это сильно сбивает с толку.
Файлики systemd, *.service , *.target и т.д. – это ЮНИТЫ, а никакие не модули и не демоны.
Демоны – это программы, которые работают в фоне, а не юниты и не скрипты, запускающиеся при старте. Из этих юнитов и скриптов МОГУТ запускаться демоны, а могут и не запускаться.
Модули – это отдельно загружаемые части какой-то программы, чаще всего имеются в виду модули ядра, даже если они левые, как к примеру модуль nvidia. Модули загружает udev по обнаружению девайса, либо принудительно по списку /etc/modules-load.d/* юнитом systemd-modules-load.service, либо руками, командой modprobe

На вашей же диаграмме (нет, она не загружается в браузере, я с трудом её сохранил и открыл!) юнит kdm.service запускается после юнита systemd-user-sessions.service :
/usr/lib/systemd/system/kdm.service
[Unit]
Description=K Display Manager
After=systemd-user-sessions.service
[Service]
ExecStart=/usr/bin/kdm -nodaemon
[Install]
Alias=display-manager.service

Соответственно, чтобы запустить ваш юнит ДО kdm, можете написать в нём так:
Before=systemd-user-sessions.service
Wants=systemd-user-sessions.service
Модули загружает udev по обнаружению девайса,
Виртуального или реального девайса?
lsmod кажет evdev. И нафига *dev грузит *dev?
Natrio
Соответственно, чтобы запустить ваш юнит ДО kdm, можете написать в нём так:
Before=systemd-user-sessions.service
Wants=systemd-user-sessions.service

Не выходит: либо иксы не грузятся либо выполняется слишком рано и скрипт не срабатывает. Нужно разобраться какие модули проводят инициализацию switcheroo и включить их в Requires юнита.
bbswitch?
Ошибки в тексте-неповторимый стиль автора©
Requires=sys-kernel-debug.mount
After=sys-kernel-debug.mount
а зачем требовать sys-
kernel-
debug.mount где про него можно почитать?
c3904763
Requires=sys-kernel-debug.mount
After=sys-kernel-debug.mount
Не работает, в журнале пишет ошибку о том что мол дебаг не существует... за что ж нам всем этот systemd
 
Зарегистрироваться или войдите чтобы оставить сообщение.