WOL(Wake On Lan)でManjaroPCを起動できなかった話🪟➡️🟩
1.はじめに😞
前回の問題(リモートデスクトップ接続の件)を保留とし、Windows11PCからManjaro(Linux)PCをWOL(Wake On Lan)でリモート起動させるようと試みましたが、タイトルにもある通りできませんでした。
再挑戦を見越して、自身の行ったことを備忘録として残します。
私の失敗談が、誰かの成功の糧となれば幸いです。
2.考え方🤔
Windiws11からWOL用のソフトを使ってManjaroPCをリモート起動させる流れになります。
私の考えた手順は以下の通りとなります。
Windows11PCにWOL用のソフトをインストール
ManjaroPCのBIOS設定でWOLによる起動が可能となる設定をする
ManjaroPCでWOLによる起動が可能となるソフトをインストールする
3.手順📚
私が実際に行った手順を載せていきます。
3-1.Windows11PCにWOL用のソフトをインストール
Windows11にはリモートで他PCを起動する機能はありません。
WOLはマジックパケットと呼ばれるネットワークパケットを起動したいPCに送信することで、リモートによる起動を実現しています。
起動したいPC側でマジックパケットを受信したら起動する設定をすれば、ネットワークとしてつながっている範囲で起動できます。
WOLを行えるソフトとして「nWOL」というツールがマジックパケット送信を行います。
ホームページから現時点(2025/01/26)で「nWOL Version 1.7.81 (64bit) インストーラパッケージ」を選択するとダウンロードページ画面に移動するので、「Downlowd Now!」を右クリックし、名前を付けてリンク先を保存を選択します。
ダウンロードした「nWOLSetup_x64.1.7.81.0.msi」をダブルクリックし、セットアップを行います。表示される画面で「Next」「Next」「Install」「Finish」の順に選択して進めます。
画面左下のWindowsマークをクリックして「🔍アプリ、設定、ドキュメントの検索」に「nwol」と入力すると「nWOL」が選択可能になってます。
インストール直後か、上記アプリを開くと以下のような画面が表示されます。
ここで基本の設定を行うため、手動でManjaroPCを起動しておきます。
ManjaroPCのコンソールかWindows11PCの「Tera Term」でホスト名を確認する以下コマンドを実行します。
hostname
ここでは画面に表示された「MnjrPC」がホスト名になります。
ホスト名をnWOLのホスト名に入力し、「MAC/IP取得」をクリックします。
ネットワーク上でホスト名のPCが接続されているならば、「MAC/IP取得」をクリック後、MACアドレス、IPアドレス、ネットマスクが自動で表示されます。
WOL Modeの下にある追加をクリックすると左下の白枠に接続PCの情報が追加されます。
※「Scan」をクリックするとネットワーク上の機器が表示されます。
右下の「OK」で設定が有効となります。また、設定画面と別にステータス画面も表示されます。
3-2.ManjaroPCのBIOS設定でWOLによる起動が可能となる設定をする
マザーボードによってはWOLを行えなかったり、できないよう初期設定されています。
ManjaroPCを再起動してBIOS画面を表示します。(マザーボードにより、PC起動時に押すキーボードのボタンが異なります)
※ManjaroPCのマザーボード:Foxconn H61MXT1
3-3.ManjaroPCでWOLによる起動が可能となるソフトをインストールする
ManjaroPC側もWOLを有効にするための手順が必要です。
下記リンク先の設定内容を参考にしました。
ManjaroにはTLP(電源管理)が入っているものの、WOLが無効にされているので有効にします。
参考ではシェルスクリプトで一気にやっておりますが、tlp設定変更の設定箇所異なるようで最後まで動きません。学習を目的として一つずつ実行することとしました。
まずは一時的な環境変数を設定します。
SYSTEMD_PATH="/etc/systemd/system/"
SERVICE_NAME="wol.service"
FILE_PATH=${SYSTEMD_PATH}${SERVICE_NAME}
sudo nano /etc/tlp.conf
/etc/tlp.conf で「WOL_DISABLE=N」を設定します。
Ctrl+Oで書込みを行い、Ctrl+Xで編集を終了します。
ネットワークの状態を確認するethtoolをインストールします。
ネットワークのインターフェイス名を調べて一時的な環境変数「NIC_LIST」に格納し、内容を確認します。
sudo pacman -S --noconfirm ethtool
NIC_LIST=($(for DEV in `find /sys/devices -name net | grep -v virtual`; do ls $DEV/; done))
echo ${NIC_LIST}
NIC_LISTのインターフェイスが一つの場合は以下を実行し、
INTERFACE=${NIC_LIST}
複数ある場合は以下を実行します。
INTERFACE=${NIC_LIST[0]}
次に以下をコンソールにそのままコピーして貼り付けて実行します。
if [ -e ${FILE_PATH} ]; then
echo "ファイルを上書きしますか? [Y/n]"
read -p "answer[y or n]:" ANSWER
ANSWER=`echo $ANSWER | tr y Y | tr -d '[\[\]]'`
if [ ${ANSWER} != "Y" ]; then
exit 0
fi
# 設定がある場合は、サービスを止めておく
sudo systemctl stop ${FILE_NAME}
sudo systemctl disable ${FILE_NAME}
fi
次に/dev/nullにteeコマンドを用いて一行ずつ書き込みました。
(入力時イメージを参照ください)
sudo tee ${FILE_PATH} <<EOF >/dev/null
[Unit]
Description=Configure Wake-up on LAN
Requires=network.target
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/ethtool -s ${INTERFACE} wol g
[Install]
WantedBy=basic.target
EOF
/dev/null に書き込んだ内容が反映されているか確認します。
sudo nano /dev/null
最後に「設定のリロード」「サービスのスタート」「自動起動の設定」「最終確認」を行います。
sudo systemctl daemon-reload
sudo systemctl start ${SERVICE_NAME}
sudo systemctl enable ${SERVICE_NAME}
echo "WOL有効化の確認:Wake-on: g で有効"
sudo ethtool ${INTERFACE} | grep Wake-on
最終確認で「Wake-on: g」と表示されればWOLが有効になっているとのことです。
3.最後に🔚
結局はWindows11PCでONにしてもManjaroPCは何も反応しません。
問題の切り分け究明は別の機会に行おうと思います。
失敗話にお付き合いいただき、ありがとうございました。
それでは、またの機会に。