2013年2月21日 星期四

從 linux 裡設定電腦自動開機

通常,要設定電腦自動時間開機,要從 BIOS 裡設,但是,像我的 notebook 的 BIOS 找不到可設定的地方,但是沒關係,可以直接從 linux 裡直接設定。

要能定時自動開機,核心要先有支援 RTC,不過大部份的 linux 預設都有支援就是。

檢視目前狀況,若是有這個檔案,核心就是有支援 RTC。
$ cat /proc/driver/rtc
rtc_time : 20:43:36
rtc_date : 2013-02-21
alrm_time : 01:41:19
alrm_date : 2013-02-22
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1024
max user IRQ frequency : 64
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : yes
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay

只介紹前五個,其他的目前沒用到
rtc_time 目前 realtime clock 的時間
rtc_date 目前 realtime clock 的日期
alarm_time 設定開機的時間
alarm_date 設定開機的日期
alarm_IRQ 是否有設定鬧鐘(若有設定成功,這個一定會變成 yes)

要設定開機時間,要從 /sys 裡動手:
$ cat /sys/class/rtc/rtc0/wakealarm

內容是空的,沒有輸出任何東西,若有設定,值為設定開機時間的 unix time.
設定方式很簡單,只要將要開機的時間以 unix time 寫入 wakealarm 這個檔案即可。

設定十分鐘後開機:
$ echo $(date +%s -d “now + 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看有沒有值了:
$ cat /sys/class/rtc/rtc0/wakealarm

還是沒東西,再檢查一下另一個檔
$ cat /proc/driver/rtc
rtc_time : 21:06:58
rtc_date : 2013-02-21
alrm_time : 21:11:46
alrm_date : 2013-02-21
alarm_IRQ : no

看前面 5 行就好,1-4 行看起來沒問題啊,不過,第 5 行是 no,所以沒成功。

原來設定這個要以 UTC 來設定,因為我是設成 localtime,但由於 taiwan 時區是 GMT+8 所以 rtc_time 會自動加上 8 小時,所以我們設鬧鐘時間也要加 8 小時,如果系統時鐘是設成 UTC 就沒這問題。

設定 8 小時 10 分鐘後開機:
$ echo $(date +%s -d “now + 8 hours 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看,果然有值了
$ cat /sys/class/rtc/rtc0/wakealarm
1361482760

$ head -n5 /proc/driver/rtc
rtc_time : 21:30:26
rtc_date : 2013-02-21
alrm_time : 21:39:20
alrm_date : 2013-02-21
alarm_IRQ : yes

果然 alarm_time 在 10 分鐘後,而且 alarm_IRQ 為 yes

因此,趕快收一收在 10 分鐘內關機,等到 10 分鐘後看會不會自動開機,理論上是沒問題了。

不過,關機要用軟體關機,不可以按電源開關來關機就是。


參考文件:
1. http://jamyy.dyndns.org/blog/2012/12/4259.html

沒有留言:

張貼留言