Я ломал голову над этим последние несколько часов. На одной из моих машин драйвер intel-rapl-msr
глючит, и его перезагрузка решает проблему. Я думал, что смогу тривиально создать службу, которая делает это при загрузке. Но я не могу заставить службу загрузиться после загрузки драйвера.
[Unit]
Description=Reload intel-rapl-msr
Requires=systemd-modules-load.target
WantedBy=multi-user.target
ExecStart=/nix/store/wqjkhyyffqdbx767vlqklzi12ln8j3pv-unit-script-cpu-script-start/bin/cpu-script-start
Где скрипт ExecStart
просто содержит:
rmmod intel_rapl_msr
modprobe intel_rapl_msr
В этом случае служба даст сбой при загрузке с сообщением:
mmod: ERROR: Module intel_rapl_msr is not currently loaded
Так возможно ли принудительно запустить службу после загрузки этого модуля ядра?
Любая помощь приветствуется!
решение1
Я решил проблему зависимости модулей сервиса, начав загрузку этих модулей с помощью systemd-modules-load.service
На практике: добавьте модули в: /etc/modules-load.d/modules.conf
https://www.freedesktop.org/software/systemd/man/modules-load.d.html#
решение2
Так что теперь я просто провожу опрос, lsmod
он работает, но выглядит немного грязно:
while ! lsmod | grep -q intel_rapl_msr;
do
echo "intel_rapl_msr not loaded yet... sleeping for 5 seconds"
sleep 5
done
echo "found intel_rapl_msr"
rmmod intel_rapl_msr
modprobe intel_rapl_msr