Estou quebrando a cabeça com isso nas últimas horas. Em uma das minhas máquinas, o intel-rapl-msr
driver está com erros e recarregá-lo resolve o problema. Achei que poderia criar trivialmente um serviço que fizesse isso na inicialização. Mas não consigo carregar o serviço depois que o driver foi carregado.
[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
Onde o script ExecStart
simplesmente contém:
rmmod intel_rapl_msr
modprobe intel_rapl_msr
Dessa forma, o serviço falha na inicialização com a mensagem:
mmod: ERROR: Module intel_rapl_msr is not currently loaded
Então, é possível forçar a execução de um serviço após o carregamento deste módulo do kernel?
Qualquer ajuda é apreciada!
Responder1
Resolvi a dependência de módulos do serviço. Estava começando a carregar esses módulos com systemd-modules-load.service
Na prática: adicione os módulos em: /etc/modules-load.d/modules.conf
https://www.freedesktop.org/software/systemd/man/modules-load.d.html#
Responder2
Então agora eu acabei de fazer uma enquete e lsmod
funciona, mas está meio sujo:
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