そこでMT4用PCとして稼働させているノートPCの電源がたまに切れたままになっている。。
原因は電池切れですね。
ノートPCの充電を常に100%にしとくと早く痛むと聞いたので、24時間プログラムタイマーII PT25を使って一定間隔で充電・停止を繰り返しています。目安として40~80%の充電量を維持するように調整しています。
ただ、ノートPCの操作をしていたりすると電池の減りが通常よりも早まってしまうので、電池がなくなってノートPCが電池切れになってしまいます。
電池切れになってすぐに気づければいいですが、外出中に電池切れになっていると取引の機会損失につながります。
そこでWake On LANのマジックパケットを定期的に外部から送信することで、電池切れで電源が切れているノートPCの電源を入れることができないかと考えました。
我が家ではFreeNAS+HP MicroServerでNASを構築しています。
ZFSによる安心感とHP MicroServerがHDDを4台まで実装可能(内蔵ベイを使えば5台)な点に満足して使っています。
ただ、せっかくサーバを24時間稼働させているのにNASとしてしか使わないのは非常にもったいない!
そこでFreeNASにWake On LANのマジックパケット送信を送らせることにしました。
調べたところwolコマンドでマジックパケット送信ができるようです。
FreeNASへwolのインストール
まずはpkgコマンドでwolをインストールしてみた。
1 2 3 4 5 6 7 8 |
# pkg install wol Updating local repository catalogue... pkg: file:///usr/ports/packages/meta.txz: No such file or directory pkg: repository local has no meta file, using default settings pkg: file:///usr/ports/packages/digests.txz: No such file or directory pkg: Unable to update repository local All repositories are up-to-date. pkg: No packages available to install matching 'wol' have been found in the repositories |
上手くいかない。
ん?「Unable to update repository local」って、そもそもローカルのレポジトリしか見てない?
pkgの設定ファイルを見てみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# $FreeBSD$ # # To disable this repository, instead of modifying or removing this file, # create a /usr/local/etc/pkg/repos/FreeBSD.conf file: # # mkdir -p /usr/local/etc/pkg/repos # echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf # FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes } |
どうやらこのファイルは最後に読まれるファイルみたいですね。
「/usr/local/etc/pkg/repos/」に格納されたファイルを先にみるようです。
ディレクトリの中を見てみると
1 2 3 4 5 6 |
# ls ./ ../ FreeBSD.conf local.conf # cat FreeBSD.conf FreeBSD: { enabled: no } # cat local.conf local: { url: "file:///usr/ports/packages", enabled: yes } |
どうやらpkgコマンドでローカルしか見ていなかったのはこれが原因のようですね
とりあえずFreeBSD.confをFreeBSD.conf.bakにでもリネームして/etc/pkg/FreeBSD.confをコピーしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# mv -i FreeBSD.conf FreeBSD.conf.bak # cp -pi /etc/pkg/FreeBSD.conf . # pkg install wol Updating local repository catalogue... pkg: file:///usr/ports/packages/meta.txz: No such file or directory pkg: repository local has no meta file, using default settings pkg: file:///usr/ports/packages/digests.txz: No such file or directory pkg: Unable to update repository local Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. New version of pkg detected; it needs to be installed first. The following 1 packages will be affected (of 0 checked): Installed packages to be UPGRADED: pkg: 1.3.8_3 -> 1.5.5 [FreeBSD] The process will require 270 kB more space. 2 MB to be downloaded. Proceed with this action? [y/N]: |
出た!!これでインストールできるぞ
。。。と喜んだんですが、yを選択するとアップデートが出るわ出るわ
ちょっと怖くなったのでインストールは一回辞めました。
そもそもFreeNASにFreeBSDのpackeagesをすべて適用しても大丈夫か?
。。。調べた結果、確実なことはわかりませんが問題が出そうです。
どうやらFreeNASで正式にリリースされていないようなアプリケーションを入れるときはjail環境を新しく構築して、その環境でインストールするのが良いみたいです。
FreeNASにjail環境を構築する
FreeBSDサーバ上に仮想サーバを構築する(jail)
にjailの説明その他が載ってましたので、勉強させてもらいました。
ということで仕切りなおしてFreeNASにjail環境を構築します。
Install nginx on FreeNAS 9を参考にさせてもらいました。
まずはFreeNASのWebGUIからJailを選択します。
Add Jailボタンをクリックすると
こんな画面が出るので、Jail NameにJail環境の名前を入れます。これがJail環境のホスト名になるようです。
続いてJail環境のIPアドレスを設定します。高度な設定ボタンをクリックして
IPアドレスを設定します。DHCPサーバの立ててある環境だとDHCPでも行けるみたいですね。
私は固定IP派なので、空いているIPアドレスを割り当てました。
最後にOKボタンをクリックするとJail環境の構築が始まります。20分程度かかるようなので、気長に待ちましょう。
終わると
こんな画面となります。
ここからはFreeNASのSSHコンソールからの作業です。
1 2 3 4 5 |
# jls JID IP Address Hostname Path 1 - jailhost /mnt/disk1/jails/jailhost # jexec 1 /bin/csh root@jailhost:/ # |
Ports Collectionからインストールするので、まずはPorts Collectionのスナップショットを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
root@jailhost:/ # portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found. Fetching public key from ec2-ap-northeast-1.portsnap.freebsd.org... done. Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Thu Aug 13 09:07:14 JST 2015: 7f2041f1f11548ab6a4d5ae0d043c3ac5167002ccea6f2100% of 77 MB 897 kBps 01m29s Extracting snapshot... done. Verifying snapshot integrity... done. Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Thu Aug 13 09:07:14 JST 2015 to Thu Aug 13 21:33:27 JST 2015. Fetching 4 metadata patches... done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 12 patches.....10. done. Applying patches... done. Fetching 0 new ports or files... done. root@jailhost:/ # |
続いてPorts Collectionの展開です。
1 2 3 4 |
root@jailhost:/ # portsnap extract ~省略~ Building new INDEX files... done. root@jailhost:/ # |
FreeNASへwolのインストール(仕切り直し)
これで準備ができました。ここからがwolのインストールです。
さっきまでやっていた通り、/usr/ports/net/wolに移動し、make configureしてからmakeそしてmake installですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
root@jailhost:/ # cd /usr/ports/net/wol root@jailhost:/usr/ports/net/wol # make configure ~省略~ wol 0.7.1 configuration: prefix: /usr/local exec_prefix: ${prefix} bindir: ${exec_prefix}/bin libdir: ${exec_prefix}/lib datadir: ${prefix}/share mandir: /usr/local/man infodir: /usr/local/info/ ether_hostton support: yes generate wol manpage: yes EXTRA_LIBS: ANSI emulation: no root@jailhost:/usr/ports/net/wol # make ~省略~ root@jailhost:/usr/ports/net/wol # make install ===> Installing for wol-0.7.1_2 ===> wol-0.7.1_2 depends on executable: indexinfo - found ===> wol-0.7.1_2 depends on shared library: libintl.so - found (/usr/local/lib/libintl.so) ===> wol-0.7.1_2 depends on shared library: libiconv.so - found (/usr/local/lib/libiconv.so) ===> Checking if wol already installed ===> Registering installation for wol-0.7.1_2 [jailhost] Installing wol-0.7.1_2... |
これでwolのインストールが完了です。
Windowsの設定
DELL XPS13 GraphicPro Windows8.1の設定です。
Wake On LANでコンピュータを起動する
をみて設定しました。
まずはコントロールパネル->システムとセキュリティ->管理ツールを選び、管理ツールを起動します。
管理ツールのコンピュータの管理を起動し、システムツール->デバイスマネージャーを選択します。
ネットワークアダプタのプルダウンを展開するとNICやBluetoothデバイスの一覧が並んでいるのでNICのプロパティを開きます。
私の場合、「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする」と「Magic Packetでのみ、コンピューターのスタンバイ状態を解除できるようにする」にチェックを入れました。
自動起動を設定
cronで起動させるため、jail環境のcronに登録します。
1 2 |
root@jailhost:/ # cd /etc root@jailhost:/etc # vi crontab |
crontabの一番下にwolの起動定義を追記します。
1 2 |
# Send WakeOnLAN MagicPacket */30 * * * * root /usr/local/bin/wol |
30分ごとに起動させることにしました。
FreeBSDは毎分/var/cron/tabs以下や/etc/crontabをチェックしているので、crondの再起動は不要です。
参考(cronのmanページです。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CRON(8) FreeBSD System Manager's Manual CRON(8) NAME cron ― daemon to execute scheduled commands (Vixie Cron) SYNOPSIS cron [-j jitter] [-J rootjitter] [-m mailto] [-s] [-o] [-x debugflag[,...]] DESCRIPTION The cron utility should be started from /etc/rc or /etc/rc.local. It will return immediately, so you do not need to start it with '&'. The cron utility searches /var/cron/tabs for crontab files which are named after accounts in /etc/passwd; crontabs found are loaded into mem‐ ory. The cron utility also searches for /etc/crontab which is in a dif‐ ferent format (see crontab(5)). The cron utility then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute. Before running a command from a per-account crontab file, cron checks the status of the account with pam(3) and skips the command if the account is unavailable, e.g., locked out or expired. Commands from /etc/crontab bypass this check. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists) |
コメント