|
ACPIを使用した方法もあります。新しいマシンではこちらのほうが簡単です。 MythTVはを使って録画をしているとPCを24時間稼動させておくか 録画時間の前に手動で立ち上げなくてはいけない。常時稼動させてもいいのだけど結構電気代がかかる。 そこでBIOSの時間起動を使って次の予約の前に自動的に起動するよにする。 Shutdown/Wakeup HowToを参考に設定 nvram-wakeupの設定カーネルカーネルでnvramとrtcをサポートする インストールnvram-wakeupをインストールする $ sudo apt-get install nvram-wakeup -t unstable 設定サポートされているかとりあえず実行してみる $ sudo nvram-wakeup nvram-wakeup: Your mainboard is currently not supported. nvram-wakeup: Please try determining the addresses and sending the following nvram-wakeup: information back to the maintainers: nvram-wakeup: - The addresses you found out (read README.mb) nvram-wakeup: - Mainboard vendor: Gigabyte Technology Co., Ltd. nvram-wakeup: - Mainboard type: 7ZX nvram-wakeup: - Mainboard revision: 1.0 nvram-wakeup: - BIOS vendor: American Megatrends Inc. nvram-wakeup: - BIOS version: 62710 nvram-wakeup: - BIOS release: 03/29/2002 私が使用しているマザーはGigabyteのGA-7ZXでソースを見るとサポートされているようだけどBIOSをアップデートしているので 認識してくれない。README.mb.gzをみてまずguess-helperを試していみる。 指示どおりにBIOSの時間を合わせてはguess-helperを実行を数回してnvram-wakeup.confが 出来たがいまいち。そこで今度は"running `guess' manually"の通りにやってみる。 running guess manuallymkdir guess "Wake UP On RTC"を有効にして時間を 12月31日 23:59:59にあわせるGA-7ZXには月の項目が無いので無視 $ sudo cat_nvram > guess/31.23.59.59+ "Wake UP On RTC"を有効にして時間を 10月11日 12:13:14にあわせる $ sudo cat_nvram > guess/11.12.13.14+ "Wake UP On RTC"を有効にして時間を 1月1日 00:00:00にあわせる $ sudo cat_nvram > guess/01.00.00.00+ "Wake UP On RTC"を無効にして時間を 1月1日 00:00:00にあわせる $ sudo cat_nvram > guess/01.00.00.00- guessディレクトリでguessを実行する $ cd guess $ sudo guess $Id: guess.c,v 1.22 2004/03/04 08:38:14 bistr-o-math Exp $ Opened file 31.23.59.59+ readonly... Opened file 11.12.13.14+ readonly... Opened file 01.00.00.00+ readonly... Opened file 01.00.00.00- readonly... Couldn't read byte 0x80 from 31.23.59.59+ Assuming size of files 128 bytes ################################################ ## Mainboard autodetection information: ## guess: Opening /dev/mem in O_RDONLY mode... guess: _DMI_ table found: base: 0xF05F0, size: 0x3FB, count: 30 guess: data block 1 at offset 0x000: type 0, size 0x014 ( 20) guess: found string "American Megatrends Inc." guess: found string "62710" guess: found string "03/29/2002" guess: data block 2 at offset 0x03F: type 1, size 0x019 ( 25) guess: data block 3 at offset 0x0AD: type 2, size 0x008 ( 8) guess: found string "Gigabyte Technology Co., Ltd." guess: found string "7ZX" guess: found string "1.0" guess: data block 4 at offset 0x0E5: type 3, size 0x011 ( 17) guess: data block 5 at offset 0x14B: type 4, size 0x020 ( 32) guess: data block 6 at offset 0x1B7: type 7, size 0x013 ( 19) guess: data block 7 at offset 0x1D4: type 7, size 0x013 ( 19) guess: data block 8 at offset 0x1F1: type 5, size 0x016 ( 22) guess: data block 9 at offset 0x209: type 6, size 0x00C ( 12) guess: data block 10 at offset 0x21C: type 6, size 0x00C ( 12) guess: data block 11 at offset 0x22F: type 6, size 0x00C ( 12) guess: data block 12 at offset 0x242: type 9, size 0x00D ( 13) guess: data block 13 at offset 0x255: type 9, size 0x00D ( 13) guess: data block 14 at offset 0x268: type 9, size 0x00D ( 13) guess: data block 15 at offset 0x27B: type 9, size 0x00D ( 13) guess: data block 16 at offset 0x28E: type 9, size 0x00D ( 13) guess: data block 17 at offset 0x2A1: type 9, size 0x00D ( 13) guess: data block 18 at offset 0x2B3: type 10, size 0x006 ( 6) guess: data block 19 at offset 0x2C8: type 11, size 0x005 ( 5) guess: data block 20 at offset 0x2F0: type 8, size 0x009 ( 9) guess: data block 21 at offset 0x30D: type 8, size 0x009 ( 9) guess: data block 22 at offset 0x32A: type 8, size 0x009 ( 9) guess: data block 23 at offset 0x347: type 8, size 0x009 ( 9) guess: data block 24 at offset 0x35F: type 8, size 0x009 ( 9) guess: data block 25 at offset 0x379: type 8, size 0x009 ( 9) guess: data block 26 at offset 0x38F: type 8, size 0x009 ( 9) guess: data block 27 at offset 0x3A3: type 8, size 0x009 ( 9) guess: data block 28 at offset 0x3B7: type 8, size 0x009 ( 9) guess: data block 29 at offset 0x3CB: type 8, size 0x009 ( 9) guess: data block 30 at offset 0x3DF: type 13, size 0x016 ( 22) guess: Following DMI entries found: guess: - Mainboard vendor: "Gigabyte Technology Co., Ltd." guess: - Mainboard type: "7ZX" guess: - Mainboard revision: "1.0" guess: - BIOS vendor: "American Megatrends Inc." guess: - BIOS version: "62710" guess: - BIOS release: "03/29/2002" ## - Mainboard vendor: "Gigabyte Technology Co., Ltd." ## - Mainboard type: "7ZX" ## - Mainboard revision: "1.0" ## - BIOS vendor: "American Megatrends Inc." ## - BIOS version: "62710" ## - BIOS release: "03/29/2002" checking 0x30: 0x0B 0x0B 0x0A 0x0A checking 0x31: 0x9E 0x24 0xF3 0x73 checking 0x56: 0x92 0x92 0x92 0x12 addr_stat = 0x56 shift_stat = 7 checking 0x57: 0x1F 0x0B 0x01 0x01 addr_day = 0x57 checking 0x58: 0x37 0x2C 0x20 0x20 addr_hour = 0x58 checking 0x59: 0x7B 0x4D 0x40 0x40 addr_min = 0x59 checking 0x5A: 0x3B 0x0E 0x00 0x00 addr_sec = 0x5A checking 0x6F: 0x31 0x11 0x01 0x00 addr_stat = 0x6F # but differs somewhere else rtc_day = 0x6F reset_day = ON checking 0x73: 0x59 0x14 0x00 0x00 rtc_sec = 0x73 checking 0x75: 0x59 0x13 0x00 0x00 rtc_min = 0x75 checking 0x77: 0x23 0x12 0x00 0x00 rtc_hour = 0x77 addr_chk_h = 0x30 addr_chk_l = 0x31 なんか出たので設定ファイルを作ってチェックする $ sudo guess | cat > mymb.conf $ sudo nvram-wakeup -C mymb.conf -N nvram-wakeup: mymb.conf: 18: Previous definition of variable `addr_stat': first definition in line 12 nvram-wakeup: Reading configuration file returned with errors. エラーが出た。mymb.confを見るとaddr_statが二つ有るのでなんか怪しいコメントがついているほうをコメントにして再度実行 $ sudo nvram-wakeup -C mymb.conf -N nvram-wakeup: mymb.conf: 21: Syntax error: unknown variable name nvram-wakeup: Reading configuration file returned with errors. rtc_secのところでエラーが出ているよくよくREADME.mb.gzを見るとrtc_sec,rtc_min,rtc_hourをrtc_time = ONに変えろと書いてあるのでそのとおりにする。 $ sudo nvram-wakeup -C mymb.conf -N All values are displayed as they are stored in the nvram/rtc. (and do not correspond necessarily to the system date/time) WakeUp : Enabled (0x92) Day : 27 (0x3B) Hour : 14 (0x2E) Minute : 52 (0x74) Second : 55 (0x37) rtcDay : 27 (0x27) rtcHour : 14 rtcMin : 52 rtcSec : 55 Checksum: 0x0BA6 実際に試してみる$ sudo nvram-wakeup -C mymb.conf -s `date +%s -d "18:00"` All values are displayed as they are stored in the nvram/rtc. (and do not correspond necessarily to the system date/time) WakeUp : Enabled (0x92) Day : 27 (0x3B) Hour : 14 (0x2E) Minute : 52 (0x74) Second : 55 (0x37) rtcDay : 27 (0x27) rtcHour : 14 rtcMin : 52 rtcSec : 55 Checksum: 0x0BA6 Enabling (0x92) WakeUp-on-RTC in nvram. New Day : 28 (0x3C) New Hour : 17 (0x31) New Minute : 55 (0x77) New Second : 00 (0x00) New rtcDay : 28 (0x28) New rtcHour : 17 New rtcMin : 55 New rtcSec : 00 New Checksum: 0x0B76 Now really WRITING into /dev/nvram... And setting RTC alarm into /dev/rtc... 再起動してBIOSをチェックしてみると設定した時間と違う。
設定ファイルをコピー設定ファイルを/etcにコピーして終了 $ sudo cp mymb.conf /etc/nvram-wakeup.conf ブートローダーの設定grubを使っているのでgrubでのやり方を説明します。liloでも同じことはできるはず nvram-wakeupで時間を設定した時間に起動するにはapmで電源を切る必要があるみたいだけど自分のカーネルはacpiで電源を管理している。 そこで一度再起動してapmで電源を切るだけのカーネルを起動するように設定する パワーオフカーネルをダウンロードこのカーネルをダウンロードして/bootにおく $ tar jxf reboot-2004.10.03.tar.bz2 menu.listの変更パワーオフカーネル用の設定を追加するtitle PowerOff root (hd0,1) kernel /boot/bzImage.2.4.20.poweroff lilo.confの変更$ sudo vi /etc/lilo.conf image = /boot/bzImage.2.4.20.poweroff label = PowwerOff $ sudo lilo ここにdebも有るので私はそっちをダウンロードしてインストールした。
しかしmenu.listがおかしいと思うのでちょっと修正した sudoの設定mythbackendを実行しているユーザーにliloかgrubとshutdown,nvram-wakeupを実行できるようにする。 実行ユーザーがrootなら必要ない $ sudo visudo mythtv ALL= NOPASSWD: /usr/sbin/nvram-wakeup, /sbin/shutdown, /sbin/grub シャットダウンスクリプトの作成MythTVからシャットダウン確認、シャットダウンを行うスクリプトを用意する。mythbackendの実行ユーザーがrootならsudoは必要ない 一応liloのコマンドもコメントアウトして載せてありますが試してません。 mythsettimenvram-wakeupで起動時間を設定する #!/bin/sh echo $1 > ~/myth.time sudo /usr/sbin/nvram-wakeup -C /etc/nvram-wakeup.conf -s $1 mythpreshutdown終了確認,0を返すとシャットダウン 1を返すとアイドルを再開する. 2を返すとクライアントの接続町に入る. mythtrancodeやユーザーがログインしているときはシャットダウンしないようにするといい。 #!/bin/sh echo "preshutdown" # check mythtranscode running ps_trans=`ps cax | grep -c mythtranscode` if [ $ps_trans != 0 ] ; then echo "mythtranscode running..." exit 1 fi echo "preshutdown ok" exit 0 mythshutdownパワーダウンカーネルで再起動する設定をして再起動する --default=のあとにPowerOffカーネルの番号を入れる #!/bin/sh echo "Shutdown" > ~/myth.shutdown echo "savedefault --default={your PowerOff kernel} --once quit" | sudo /sbin/grub --batch # sudo lilo -R PowerOff sudo /sbin/shutdown -r now 簡単なスクリプトだけど一応こんなファイル mythshutdownscripts.tar.gzMythTVの設定MythTVのsetupを実行して設定する 一般(General) -> シャットダウン/起動オプション(Shutdown / Wakeup Options に行く
これでクライアントが接続を終了してから60秒後にmythpreshutdownを実行し0が帰ってきたらシャットダウンします。 うまくいかなかったらmythbackendのログなどを見てください。 |