1. 概要: なぜ必要なのか?
自宅やオフィスでデスクトップを24時間稼働させることは、電力消費が大きく、維持コストの負担が生じます。
そこで、必要な時だけ Raspberry Pi のような24時間稼働する小型サーバーを使って 対象デスクトップをリモートでオンにする 方法を考えました。
これを実現するために、"Wake-on-LAN(WOL)" 機能を活用して次のような戦略を立てました。
- デスクトップBIOS設定: WOL機能を有効化
- Linux(ubuntu)設定: ネットワークカードがシステムシャットダウン後も活性状態を保持
- Raspberry Pi設定: マジックパケット送信スクリプト作成および自動化
必要なパッケージ:
- wakeonlan
(Raspberry Pi またはサーバーでマジックパケット送信用)
2. 構成環境
- 対象PC: Ubuntu 24.04 がインストールされたデスクトップ
- サーバー: Raspberry Pi 5 (Ubuntu Server 24.04)
- ネットワーク: 同一ローカルネットワークに接続 (有線推奨)
3. デスクトップBIOS設定
Wake-on-LANを使用するにはメインボードのBIOS設定が非常に重要です。
BIOS設定方法
BIOSで次の項目を設定します。私はGIGABYTEメインボードを使用しましたが、他のブランドの方は類似オプションを参考に設定してください。
- デスクトップ起動時にBIOS/UEFI Setupに入る (通常
DEL
、F2
キー) - 次の項目を有効化:
ERP (省電力関連)
- ERP
設定: Disabled (無効)、省電力モードがWOL機能を妨げる場合があります。
CSMを有効化
- CSM Support
: Enabled
- CSM設定後、次の項目が表示される場合があります (GIGABYTEメインボードの場合):
- LAN PXE ブートオプション ROM
: 無効を維持
- 保存 OpROM 起動方針
: レガシー
- 他の PCI デバイス
: レガシー
LANによる再開 / PCI-Eによる電源オン
- 一部のボードは特別な項目なしで自動でサポート → オプションが見えなくても正常に動作可能
- 保存して再起動
※ メーカーによってオプション名が若干異なる場合があるので、'Wake', 'Power On by PCI' 類似オプションを探して設定してください。
4. デスクトップLinux(Ubuntu)設定
Ubuntuでは、システムがオフになってもNIC(ネットワークインターフェースカード)が生きていなければなりません。
1. ネットワークインターフェース名の確認
ip a
例の結果:
2: enp4s0: ...
link/ether <AA:BB:CC:DD:EE:FF> ...
enp4s0
: ネットワークインターフェース名を確認します。(これはデスクトップの 有線 LAN デバイス名 なのでデバイスによって異なる場合があります。)AA:BB:CC:DD:EE:FF
: MACアドレス (マジックパケットの対象) ※ MACアドレスを公開する際はセキュリティに注意が必要です。
2. ethtoolのインストール
sudo apt update
sudo apt install ethtool
3. WOL状態の確認と設定
sudo ethtool enp4s0 | grep Wake
結果例:
Supports Wake-on: pumbg
Wake-on: d
d
→ 無効状態- 以下のコマンドで有効化:
sudo ethtool -s enp4s0 wol g
再度確認:
Wake-on: g
4. ブート時に自動設定する (選択: 再起動後Wake-on:gが解除される場合に適用)
Ubuntu 20.04以降 /etc/rc.local
は基本的にサポートされないため、systemdサービスを使用する方法が推奨されます。
/etc/rc.local
の作成方法:
sudo nano /etc/rc.local
exit 0
より上に追加:
/sbin/ethtool -s enp4s0 wol g
exit 0
ファイル保存後、実行権限を付与:
sudo chmod +x /etc/rc.local
systemdサービスの追加設定が必要になることがあります。
5. Raspberry Piでマジックパケット送信
1. wakeonlan
パッケージのインストール
sudo apt install wakeonlan
2. WOLコマンドの実行
wakeonlan AA:BB:CC:DD:EE:FF # 上で確認したMACアドレスを入れます。
3. (任意) alias登録
# AA:BB:CC:DD:EE:FF部分にリモートブート対象のPCのMACアドレスを入れます。
echo "alias wakeup_dude='wakeonlan AA:BB:CC:DD:EE:FF'" >> ~/.bashrc
source ~/.bashrc
→ 以降、以下のように簡単に実行可能:
wakeup_dude
6. 結果
- デスクトップが完全にオフの状態でも マジックパケット受信後に自動で起動する
- 成功裏にWake-on-LANによるリモートブートを実現!
7. セキュリティ関連
- コントロールタワー役の 'Raspberry Pi' サーバーのSSH接続のセキュリティ設定、ルーターの安全設定、UFW設定など、セキュリティ設定は必ず強化する必要があります。
- 外部からアクセスする場合、SSHポートフォワーディングまたはVPNを使用することを推奨します。
8. 使用例
# 外部から接続
ssh username@<your_ip_or_domain> -p <your_ssh_port>
# 接続後
wakeup_dude
🎉 デスクトップ自動起動!
9. 参考
- Wake-on-LANは必ず 有線 LAN のみで動作 (Wi-Fiは不可)
- 一部のボードは
Suspend
状態では動作しますがShutdown
状態では制限される場合があります。(GIGABYTEボードではShutdownでも成功確認)
このように "必要な時だけ" 起きるデスクトップ環境を構築することで、スマートで効率的なサーバー管理が可能になります。
Add a New Comment