如何在系统启动时自动执行sudo modprobe i8k force=1命令以控制戴尔设备风扇转速
如何在系统启动时自动执行sudo modprobe i8k force=1命令以控制戴尔设备风扇转速
我来帮你搞定这个问题!你之前尝试把i8k force=1放进/etc/modules没效果,是因为这个文件只负责列出要加载的模块,模块参数得用专门的配置方式来设置。下面给你几种靠谱的解决方案,按推荐程度排序:
方法一:通过modprobe配置文件设置模块参数(最推荐)
这是Linux系统管理模块参数的标准方式,稳定且符合规范:
- 打开终端,用sudo权限创建并编辑i8k的配置文件:
sudo nano /etc/modprobe.d/i8k.conf - 在文件里添加一行内容:
options i8k force=1 - 按
Ctrl+O保存,回车确认文件名,再按Ctrl+X退出编辑器 - 如果要立即测试效果,可以先卸载再重新加载模块:
之后用sudo modprobe -r i8k && sudo modprobe i8klsmod | grep i8k就能看到模块已经带参数加载了,重启系统后也会自动生效。
方法二:创建systemd服务实现自动加载
如果第一种方法不适用(比如某些特殊发行版),可以用systemd服务来执行加载命令:
- 创建一个systemd服务文件:
sudo nano /etc/systemd/system/i8k-load.service - 把以下内容粘贴进去:
[Unit] Description=加载带force=1参数的i8k模块(控制戴尔风扇) After=multi-user.target [Service] Type=oneshot ExecStart=/sbin/modprobe i8k force=1 [Install] WantedBy=multi-user.target - 保存退出后,重新加载systemd配置并启用服务:
sudo systemctl daemon-reload sudo systemctl enable i8k-load.service - 可以立即启动服务测试:
重启后服务会自动运行,帮你加载模块。sudo systemctl start i8k-load.service
方法三:利用rc.local脚本(适用于保留该文件的系统)
有些旧版Linux发行版(比如Ubuntu 16.04及以前)还保留了/etc/rc.local,可以用它来执行启动命令:
- 编辑rc.local文件:
sudo nano /etc/rc.local - 在
exit 0这一行的上方添加:/sbin/modprobe i8k force=1 - 保存退出后,确保文件有执行权限:
重启系统后,这条命令就会自动执行了。sudo chmod +x /etc/rc.local
总结一下,优先用方法一,这是最标准的模块参数配置方式,比脚本类的方法更可靠。
备注:内容来源于stack exchange,提问作者Hudson Ding
相关产品推荐
相关产品推荐

