1. 概要: なぜ必要なのか?

自宅やオフィスでデスクトップを24時間稼働させることは、電力消費が大きく、維持コストの負担が生じます。

そこで、必要な時だけ Raspberry Pi のような24時間稼働する小型サーバーを使って 対象デスクトップをリモートでオンにする 方法を考えました。

これを実現するために、"Wake-on-LAN(WOL)" 機能を活用して次のような戦略を立てました。

  • デスクトップBIOS設定: WOL機能を有効化
  • Linux(ubuntu)設定: ネットワークカードがシステムシャットダウン後も活性状態を保持
  • Raspberry Pi設定: マジックパケット送信スクリプト作成および自動化

必要なパッケージ: - wakeonlan (Raspberry Pi またはサーバーでマジックパケット送信用)

Wake-on-LAN Overview


2. 構成環境

  • 対象PC: Ubuntu 24.04 がインストールされたデスクトップ
  • サーバー: Raspberry Pi 5 (Ubuntu Server 24.04)
  • ネットワーク: 同一ローカルネットワークに接続 (有線推奨)

3. デスクトップBIOS設定

Wake-on-LANを使用するにはメインボードのBIOS設定が非常に重要です。

BIOS設定方法

BIOSで次の項目を設定します。私はGIGABYTEメインボードを使用しましたが、他のブランドの方は類似オプションを参考に設定してください。

  1. デスクトップ起動時にBIOS/UEFI Setupに入る (通常 DELF2キー)
  2. 次の項目を有効化:

ERP (省電力関連)
- ERP設定: Disabled (無効)、省電力モードがWOL機能を妨げる場合があります。

CSMを有効化 - CSM Support: Enabled - CSM設定後、次の項目が表示される場合があります (GIGABYTEメインボードの場合): - LAN PXE ブートオプション ROM: 無効を維持 - 保存 OpROM 起動方針: レガシー - 他の PCI デバイス: レガシー

LANによる再開 / PCI-Eによる電源オン
- 一部のボードは特別な項目なしで自動でサポート → オプションが見えなくても正常に動作可能

  1. 保存して再起動

※ メーカーによってオプション名が若干異なる場合があるので、'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でも成功確認)

このように "必要な時だけ" 起きるデスクトップ環境を構築することで、スマートで効率的なサーバー管理が可能になります。