如何阻止 Ubuntu 在启动过程中覆盖 BIOS 降频

如何阻止 Ubuntu 在启动过程中覆盖 BIOS 降频

我最近决定将我的旧 Xeon E3-1241 v3 改造成 NAS。出于显而易见的原因,我希望它尽可能少地消耗电量,所以我进入了 BIOS,并将时钟速度降低到了 800MHz。这部分完全没问题,我的墙上仪表显示机器在 BIOS 中的功耗约为 60W。

现在,当我启动机器时,Ubuntu 启动过程不知何故完全覆盖了 BIOS 设置乘数,并在启动期间愉快地从墙上吸取约 140W 的功率。

一旦完成启动过程,它就会触发我的 crontab @reboot /usr/sbin/cpufreq-set -u 0.8Ghz,将其设置回我 BIOS 定义的设置。为了防止它在 60 秒标记处切换回按需模式,我已删除/etc/init.d/ondemand。现在,除了启动时,它一直保持在 800MHz 和 45-60W 上​​。完美……几乎完美。

我需要强制它在启动时保持在 800MHz,因为我打算设置较低的 vCore 电压以节省更多电量(并延长 CPU/VRM/主板的使用寿命),但我无论如何也想不出为什么它会在启动期间覆盖 BIOS 设置。目前,当它尝试使用我的低 vCore 电压启动时,它大约有一半的时间会崩溃,因为它试图在启动过程中以 3.5GHz 的速度运行 CPU。我的墙上仪表确认了启动期间高电流拉动的读数,由于机器除了安装 SSD 和服务器显卡外没有安装任何其他东西,因此此时我们可以排除大多数其他因素是原因(它们总共不到 10W)。

它只进入全功率状态约 1 秒钟,然后进入我的 crontab/rc.local 并重新设置为 800MHz。遗憾的是,由于 vCore 电压低,启动过程的完成有点不稳定。

经过大量的实验,我发现大多数控制时钟的方法都是可行的,例如echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq。将它们添加到 crontab/rc.local/init.d 中大部分都有效,但是上面提到的第二个方法仍然存在问题。

答案1

使用您喜欢的文本编辑器编辑 /etc/default/grub。找到以 开头的行GRUB_CMDLINE_LINUX_DEFAULT=,并将内核选项放在intel_pstate=disable其中,保留所有先前的当前选项(quiet 和 splash 很常见)以及它们之间的空格以及两端的引号。

例子:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable"

现在使用以下命令更新 grubsudo update-grub

注意:想到的唯一降低功耗的方法是用 SSD 替换启动/系统驱动器。(请注意,如果发生故障,这会使数据恢复变得极其困难,甚至不可能)

相关内容