某些 BIOS 具有在特定“警报”时间从完全关闭状态(而非挂起)启动计算机的选项。是否有任何命令或方法可以在 Ubuntu 中设置此功能,而无需重新启动并进入 BIOS?
(我有一个为学校网络运行的服务器+路由器,有时一些随机的(善意的)人认为它需要在放学后关闭。我认为避免在网络停止工作的随机时间接到电话的最佳方法是每分钟执行一次 cron 作业,将“闹钟唤醒”时间设置为从现在起 2 分钟后。这样它就会自动启动。)
答案1
操作系统本身无法使硬件脱离完全关闭状态,因为操作系统当时并未运行。如果有任何操作系统级软件可以写入您的 BIOS,那么它将是特定于 BIOS 和主板等的专有软件,并且不太可能以 ubuntu 命令的形式存在。抱歉。
BIOS 选项(例如 Wake On Lan 或自动启动功能)是一种选择。另一种是硬件解决方案,类似于某些电视调谐卡的做法,即通过硬接线连接到电源按钮以触发开机事件。在这种情况下,可以使用 cron 作业不断更新调谐卡的唤醒时间。
答案2
很简单。首先,您需要检查您的计算机是否支持 RTC 唤醒。过去 10 年内制造的大多数计算机都支持此功能。首先,您需要在 BIOS 设置中启用 RTC,这是在启动过程中完成的。在我的 BIOS 上,可以配置唤醒应响应哪些 S 信号。因为我喜欢节省能源,所以我在自动启动和关机之间完全关闭了计算机的电源。
设置 BIOS 后,启动 Linux 并发出命令dmesg |grep rtc
。这会告诉您是否已启用 RTC 唤醒。我的输出显示:
~$ dmesg |grep rtc
[ 0.962976] rtc_cmos 00:03: RTC can wake from S4
[ 0.963096] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[ 0.963119] rtc0: alarms up to one month, 242 bytes nvram
要设置唤醒时间,您需要成为 root。以 root 身份发出命令:
echo 0 > /sys/class/rtc/rtc0/wakealarm
在将新的唤醒时间写入文件之前,应使用上述命令,否则唤醒资源将很忙。如果您希望计算机在未来 10 分钟内启动,请发出命令:
echo `date '+%s' -d '+ 10 minutes'` > /sys/class/rtc/rtc0/wakealarm
通过发出来检查是否设置了闹钟cat /sys/class/rtc/rtc0/wakealarm
。如果收到一串数字,则表示已设置闹钟,如果文件为空,则日期有问题。
要检查更人性化可读的格式,请发出命令cat /proc/driver/rtc
。
因此,如果您希望计算机在某人关闭计算机 2 分钟后启动,请从 crontab 执行类似这样的脚本(此脚本需要 root 访问权限,因此请注意):
#!/bin/bash
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d '+ 2 minutes'` > /sys/class/rtc/rtc0/wakealarm
拯救地球。 :)
答案3
应该有办法做到这一点……我知道我见过它在 Windows 中的 MSI 主板上工作。MSI 的一个程序能够从 Windows 设置 BIOS 中的唤醒定时器状态/时间。可能需要的只是正确的 BIOS 调用来执行此操作。我找了一次,什么也没找到,但我没有找得太仔细。我会再找一次,如果找到它们,我会在这里发帖。我敢打赌,与 drgrog 所认为的不同,执行此操作的工具可能非常通用,因为大多数主板供应商都是从两个供应商之一获得 BIOS,很少有人对它们进行任何广泛的修改。