はじめに
- 家の外でもデスクトップPCの環境で開発したい。
- sshでログインできればいい
- でも、デスクトップPCをずっと起動しておくと電気代がもったいないから、その都度起動できるようにしたい
上記の要望・問題点を解決したいと思って、この記事で紹介する環境を構築しました。
やること
- ラズパイにWakeOnLanをインストールする
- デスクトップPCをWakeOnLanで起動できるように設定する
- iPhone(or ノートPC)でラズパイにログインしてWakeOnLanを実行する
- 起動したデスクトップPCにログインする
前提知識
- ssh
- 基本的なLinuxコマンド
上記二つの超基本的な知識があれば、誰でもできる内容です。
取り扱わない内容
- Lnuxのインストール方法
- WakeOnLanの詳しい仕組み
- ssh, vpnの説明
- ラズパイのこと
- Windows, MacOSでの方法
構成
スイッチングハブ以外の機器がVPNに接続されています。
各種バージョン
ラズパイ
本体: Raspberry Pi 3 Model B+
OS: 下記
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
デスクトップPC
OS: openSUSE
❯ cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.6"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.6"
PRETTY_NAME="openSUSE Leap 15.6"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.6"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"
WakeOnLanの簡単な説明
起動させる側と起動する側のPCを用意します。
それぞれ同じLANの有線に接続している状態です。
起動させる側は起動する側のMacアドレスを指定し、LAN経由で起動させるための信号(マジックパケット)を送信します。
起動する側のPCはマジックパケットを受信したら起動します。
この仕組みを使ってラズパイ経由でデスクトップPCを起動させていきます。
ラズパイにWakeOnLanをインストールする
sshでも直接でもラズパイにログインします。
Raspberry Pi OSはDebian系(というかDebianそのもの?)なのでパッケージマネージャはapt
です。
よって、下記コマンドでwakeonlan
をインストールします。
sudo apt install wakeonlan
wakeonlan実行時は以下のようにコマンドの後にデスクトップPCのMacアドレスをつけるとマジックパケットを送信できます。
wakeonlan <Macアドレス>
とりあえず、ラズパイ側の準備はこれだけです。
WakeOnLanの仕組みについては、下記サイトにて説明されています。
デスクトップPCをWakeOnLanで起動できるようにする
ハードウェア側の設定はBIOS/UEFIによって異なるので自分のPCに合わせて設定してください。
WakeOnLanに対応していない機器もあるかもです。
ハードウェアだけでなく、OS側でも設定が必要です。
sshでも直接でも、まずデスクトップPCにログインします。
そして、ethtoolというネットワークインターフェースの確認・設定ができるツールをインストールします。
今回使用しているOSはopenSUSEなので、zypper
コマンドを使用します。
sudo zypper install ethtool
下記コマンドで現在のネットワークインターフェースの状況を確認します。
$ sudo ethtool eth0
Settings for eth0:
~~~省略~~~
Supports Wake-on: pumbg
Wake-on: d
~~~省略~~~
このWake-on
の部分がd
であるとWakeOnLanが使えないので下記コマンドでg
に変更します。
sudo ethtool -s eth0 wol g
ただ、上記のみであると再起動時に設定が戻ってしまうのでcron
を設定することで再起動時にもう一度g
にさせるようにする
sudo crontab -e -u root
このコマンドでcronの設定ファイルがエディタによって開かれるので、下記を追記して保存する
@reboot /usr/bin/ethtool -s eth0 wol g
@reboot
は再起動時に実行を意味し、/usr/bin/ethtool
はethtool
コマンドを絶対パスでしていしています。
この設定をすると再起動時に毎回Wake-on
をg
に設定するコマンドが実行されます。
また、WakeOnLan時にこのPCのMacアドレスが必要になるので調べておきます。
ip addr
コマンドの出力でlink/etherの
そして電源をオフにします。
以下が参考にしたサイトです。
iPhoneでラズパイにログインしてWakeOnLanを実行する
iPhoneにsshクライアントをインストールします。
私が使っているのはTermius
というサービスです。
それを使ってラズパイにログインします。
上記の環境でWakeOnLanを実行します。
~ $ wakeonlan <Macアドレス>
Sending magic packet to 255.255.255.255:9 with <Macアドレス>
その後デスクトップPCが起動されログインできるようになります。
これで完了です!
補足
- 使用しているVPNのサービスはTailscaleです。
- デスクトップPCの電源オフとログアウトは以下のコマンドを実行しています。
sudo shutdown -h now && exit
さいごに
今回はラズパイ経由でデスクトップPCを起動する方法を紹介しました。
アレクサにWakeOnLanのスキルがあり、アレクサ経由でもデスクトップを起動できるらしいので試してみたいです。