Ich habe mir in den letzten Stunden den Kopf darüber zerbrochen. Auf einem meiner Rechner intel-rapl-msr
ist der Treiber fehlerhaft und das Neuladen behebt das Problem. Ich dachte, ich könnte ganz einfach einen Dienst erstellen, der dies beim Booten tut. Aber ich kann den Dienst nicht laden, nachdem der Treiber geladen wurde.
[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
Wobei das Skript ExecStart
einfach Folgendes enthält:
rmmod intel_rapl_msr
modprobe intel_rapl_msr
Auf diese Weise schlägt der Dienst beim Booten mit der folgenden Meldung fehl:
mmod: ERROR: Module intel_rapl_msr is not currently loaded
Ist es also möglich, die Ausführung eines Dienstes zu erzwingen, nachdem dieses Kernelmodul geladen wurde?
Jede Hilfe ist willkommen!
Antwort1
Ich habe die Modulabhängigkeit des Dienstes gelöst, indem ich diese Module mit systemd-modules-load.service geladen habe.
In der Praxis: Fügen Sie die Module hinzu zu: /etc/modules-load.d/modules.conf
https://www.freedesktop.org/software/systemd/man/modules-load.d.html#
Antwort2
Also mache ich jetzt einfach eine Umfrage, lsmod
die funktioniert, aber irgendwie schmutzig ist:
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