Wake-on-LAN(WOL、英語からの翻訳-「ローカルネットワークからの信号」)は、ローカルエリアネットワークを介して特別なバイトシーケンスを送信することにより、コンピューターをリモートでオンにできる技術です。 ウィキ
そして、一つのことではないとしても、すべてがうまくいくでしょう。 電源障害の後、コンピューターの電源は入りません。
同意します、特にあなたがそれから数千キロ離れている場合、これは「楽しい」驚きになります。
1つのソリューションが
ここに記述されてい
ますが、それはハードウェアとソフトウェアであり、追加のハードウェアなしで実行できます。
HabréのWOLについては、すでに
2ページあります 。 したがって、カードにwolを含めることは、この記事では考慮されません。
はじめに
まず、コンピューターの電源が入らない理由を見てみましょう。 これを理解するには、ACPIに目を向ける必要があります。
ACPI-英語 高度な設定と電源インターフェイス)。 ACPIは、状態(特にグローバルデバイスと特定デバイスの両方)を記述します。 (
wiki )

2つのグローバルな状態に関心があります。
- G2(S5)(ソフトオフ)-ソフト(ソフトウェア)シャットダウン。 システムは完全に停止していますが、通電されており、いつでも電源を入れることができます。 システムコンテキストは失われます。
- G3(機械的オフ)-システムの機械的シャットダウン。 ATX電源が無効になっています。
残念ながら、電源が接続されると、システム自体はG3からG2に移行しません。
したがって、停電後に起動できるようにするには、コンピューターをG3からG2に転送する方法を学ぶ必要があります。
ほとんどの[新しい] BIOSには、[停電後]オプションがあります。 次の3つの値のいずれかを取ることができます。
- 「Stay Off」-ネットワークの電源が切れて復旧した場合、PCの電源を入れるには電源ボタンを押す必要があります。
- 「オン」-電源復旧により、システムが自動的にオンになります。
- 「最終状態」-システムを停電時の状態に復元します。 オフになっている場合はオフのままになり、そうでない場合はオンになります。

「オンにする」を選択すると、残っている唯一の質問は、ケースのボタンによるネットワーク要求または通常の開始からではなく、停電後にコンピューターをオンにする方法です。 これらのチェックはinitrdで行います。
Initrd(英語の略。初期RAMディスク、初期初期化用のランダムアクセスメモリ内のディスク)は、Linuxカーネルがブート中に使用する一時ファイルシステムです。 ( wiki_en )( wiki_en )
Ubuntu / Debianでのinitrdのファイルの場所は、initramfs-toolsのmanで見つけることができます(
Ubuntu Webサイトからオンラインで )。
Centosの場合、すべてが少し異なります-ドラカットがあります。
コンピューターがオンになったことを確認するために、wolパケットを送信した後、pingを実行します。 しかし、WOLパッケージは「魔法」なので、pingも「魔法」にしましょう。 pingのサイズを84ではなく48バイトにします。
フローチャートの形でアイデア全体を合計します。

実装
モジュール
/ etc / initramfs-tools / modulesで、iptablesとネットワークに必要なモジュールを追加します。
ネットワークカードのモジュール
r8169 ( )
iptablesモジュール
xt_length iptable_filter ip_tables x_tables
スクリプト
/ etc / initramfs-tools / scripts / local-topで、checkbootファイルに内容を追加します:
そして、それを実行可能にします:
chmod +x /etc/initramfs-tools/scripts/local-top/checkboot
スクリプトは上記のフローチャートを実装します。
フック
/ etc / initramfs-tools / hooksで、次の内容のcheckbootファイルを追加します。
そして、それを実行可能にします:
chmod +x /etc/initramfs-tools/hooks/checkboot
このファイルは、スクリプトが正しく機能するためにinitrdに追加する必要があるものを示します。
その中で、iptablesおよびifconfigユーティリティをコピーした後、iptablesのライブラリもコピーする必要があります。
リンクライブラリは、
ldd / sbin / iptablesを実行して取得できます。
ただし、このプロセスでは、動的にロードされるモジュールも使用されます。 次のコマンドを実行すると、リストを表示できます。
ロードされた他のライブラリを受け取ることができるもの:
"/lib/xtables/libipt_icmp.so" "/lib/xtables/libxt_length.so" "/lib/xtables/libxt_standard.so"
initrdを更新する
initrdをアップグレードする前に、安定版を別の名前で/ bootにコピーすることをお勧めします。これにより、スクリプト/フックにエラーが発生した場合でも、システムのロードは難しくありません。
次のコマンドでinitrdを更新します。
グラブ
nocheckbootを使用してgrubに新しい行を追加します。
これを行うには、/ boot / grub / grub.cfgを直接編集して、カーネルへのパラメーター行にnocheckbootを追加して新しい項目を作成するか、/ etc / grub.d / 10_linuxを変更します。 grub.cfgを編集すると起こります。
これを行うには、/ etc / grub.d / 10_linuxを追加します。
linux_entry "${OS} nockeckboot" "${version}" simple \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT} nocheckboot"
後:
linux_entry "${OS}" "${version}" simple \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}"
そしてそれから:
打ち上げ
起動スクリプトを記述するだけです。
そして、ここに彼は:
!
ここで、「-c 50」は1秒あたり1パケットの50パケットです。つまり、50秒が「iptablesルールカウンターの確認」に進むすべてのステップの時間です。 「-s 20」は、パケットサイズを48バイトに等しくします。 48-20 = 28バイト-IPおよびイーサネットヘッダー。
結論の代わりに
これですべて、停電による自動車へのアクセスが失われることはなくなりました。
もちろん、ここでもUPSについて話すことができますが、タスクはUPSを使用せずに解決策を見つけることでした。
このようなスキームは、コンピューターへのアクセス(データへのアクセス、計算の実行)が必要な場合に役立ちます。ほとんどの場合、コンピューターはオフ状態になって待機します。