过去几个小时我一直在为此绞尽脑汁。我的一台机器上的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