はじめに
KDEには、GUIのネットワーク設定にWOLの項目が無いので
ethtoolをsystemdで自動実行させます。
手打ちでやるには、ちょっとややこしいので、スクリプトにしました。
WOLを有効化するシェルスクリプト
# !/bin/bash
# systemd設定ファイル保存フォルダ
SYSTEMD_PATH="/etc/systemd/system/"
SERVICE_NAME="wol.service"
FILE_PATH=${SYSTEMD_PATH}${SERVICE_NAME}
# tlpの設定変更
sudo sed -i -e "s/WOL_DISABLE=Y/WOL_DISABLE=N/g" /etc/default/tlp
# 設定値確認
echo "tlp設定変更の確認:WOL_DISABLE=N で成功"
sudo grep "^WOL_DISABLE" /etc/default/tlp
# ethtoolのインストール
sudo pacman -S --noconfirm ethtool
# インターフェイス名を調べて変数に入れる
NIC_LIST=($(for DEV in `find /sys/devices -name net | grep -v virtual`; do ls $DEV/; done))
# 1つ目のインターフェイスを指定
INTERFACE=${NIC_LIST[0]}
# 確認
echo "インターフェイス名:"${INTERFACE}
echo ${FILE_PATH}
# ファイルの上書き確認
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
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
# 設定のリロード
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
シェルスクリプトの解説
- Manajroはデフォルトで、TLP(電源管理)が入っていて、WOLが無効にされてるので有効化する
- ethtoolをインストールする
- ネットワークインターフェイス名を調べる
- systemdの設定ファイルを作る
- systemdのサービスを有効化する
注意事項
WOLはバッテーリー消費が多くなるらしいので、ノートPCでは使わないほうがいいです。
このスクリプトはデスクトップPCで、有線LANが一つのみの環境を前提にしてます。
動作環境
Manjaro KDE Edition 19.0.0
Linux Kernel 5.5.2-1
最後に
おなじKDEのkubuntuも使っていたんですが、あっちはTLPが入っていませんでした。
スクリプト書くのしんどいですが、次から楽できるので頑張って書くようにしてます。