2019年1月26日土曜日

ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(2)~SSH編

はじめに

Raspberry Pi は名刺サイズの超小型コンピュータですが、ディスプレイを接続して利用すると Raspberry Pi の省スペース性が犠牲になるという問題があります。
また、低価格で人気の Raspberry Pi Zero (以下 Pi Zero) 系の機種はメモリが少なく、ディスプレイを接続してデスクトップを利用するのが年々厳しくなっているという問題があります。

これらの問題に対し、本ページでは「Raspberry Piにディスプレイ・マウス・キーボードを接続せずに利用する」ことを目指します。

2024年8月時点で、その方法として以下の3つの方法があります。上に記したものほど、昔からある手法です。 本ページは「SSHを用いる方法」を解説します。Raspberry Pi 上のデスクトップを利用しなくて済むので、メモリの少ない Pi Zero 系の機種に適しています。
また、Linuxの上級者に好まれる方法でもあり、マスターして損のない手法であると言えます。

具体的には、下記のように一つのネットワークにRaspberry PiとPCが属しており、PCからRaspberry Piを利用する、というスタイルになります。
この図だけ見ると、本書の9章や10章で行ったように「PC のブラウザから Raspberry Pi の回路にアクセスする」方法とあまり変わらないように思えるかもしれません。

9章や10章と異なるのは、Raspberry Pi にディスプレイ、マウス、キーボードを一切接続せず、「プログラムの作成」、「プログラムの実行」、「Raspberry Pi のシャットダウン」などをすべてPCから行うことが可能だ、という点です。

この際、PC のデスクトップの外観は下図のようになります。左上のアプリケーションは Tera Term という Windows 用のターミナルアプリケーション、右上は Raspberry Pi の Python 開発環境である Thonny、左下はファイルマネージャであり、 Thonny やファイルマネージャが Windows 上のウインドウとして表示されているのがポイントです。

以下、この動作を実現する方法を解説していきます。

なお、Windowsに対する解説を最初に行い、macOSに対する解説はページ末尾で行います。

必要なツールのインストールと設定(Windows編)

上図の動作をWindowsで実現するためには、下記の2つのアプリケーションをインストールする必要があります。
  • Tera Term(ターミナル)
  • VcXsrv(Xサーバー)
Tera Termは、Windows から Raspberry Pi にログインするために利用するターミナルアプリケーションです。VcXsrv は、上図のように Raspberry Pi のアプリケーションを Windows 上に表示するために必要なアプリケーションで、X サーバーと呼ばれることもあります。
以下、順に解説していきます。

Tera Termのインストールと設定

Tera Termのサイトよりインストールファイルをダウンロードします。最新版をダウンロードして下さい。2024年8月における最新版のファイル名は teraterm-5.2.exe でした。

ダウンロード後はファイルをダブルクリックしてインストールします。デフォルトの設定のままインストールを終えて構いません。

インストール後、Tera Term を起動すると、下記のようなウインドウが現れます。これは、Raspberry Pi に接続するためのウインドウなのですが、ウインドウを PC に表示するための設定が接続前に必要ですので、ここでは図のように「キャンセル」ボタンを押します。
その後、残ったウインドウで下記のように「設定」→「SSH転送」を選択します。
すると、下図のようなウインドウが現れますので、図のように「リモートのXアプリケーションをローカルのXサーバに表示する」にチェックを入れ、「OK」を押します。
その後、「設定」→「設定の保存」を選択し、今の設定を保存します。
保存するファイル名や場所は変更せず、そのまま「保存」ボタンを押せば設定が保存されます。
以上の設定は、初回のみの実行でよく、次回からは実行する必要がありません。
以上でTera Termの設定は終わりですので、一旦Tera Termのウインドウを閉じます。

VcXsrvのインストールと設定

次に、VcXsrvのインストールを行います。X サーバーと呼ばれる機能を Windows 上に実現するソフトウェアです。

まず、公式サイトよりファイルをダウンロードします。
ダウンロードするファイル名は、vcxsrv-64.X.X.X.X.installer.exe の形式のものを選びましょう。64ビット版のリリースファイルです。
ただし、2024年8月現在、最新版はファイルにウィルスが含まれていると Windows Defender に誤検出され、ファイルがダウンロードされませんでした。
Windows Defender を使っているとこのような誤検出の問題がときどき起こります。
そのような場合、一つ前の古いバージョンをダウンロードするなどすると良いでしょう。私の場合、vcxsrv-64.21.1.13.0.installer.exe ではなく、vcxsrv-64.21.1.10.0.installer.exe をダウンロードしました。

さて、インストール用のファイルのダウンロードが終わったら、デフォルトの設定でインストールします。インストール時に青い画面の警告が出た場合、「詳細情報」リンクをクリックしてから実行します。

インストールが終了すると、デスクトップに下図のように XLaunch と書かれたアイコンが現れます。
このアイコンをダブルクリックして X サーバーを起動してみましょう。幾つかウインドウで設定を求められますが、デフォルトのままで構いません。すなわち、
  • 「Multiple windows」にチェックが入った状態で「次へ」
  • 「Start no client」にチェックが入った状態で「次へ」
  • 「Clipboard」、「Primary Selection」、「Native opengl」にチェックが入った状態で「次へ」
  • 「完了」をクリックする前に「Save configuration」を押すと、そこまでの設定が保存できますので、場所を選んで保存しましょう。デスクトップ上でも構いません。「config.xlaunch」というファイルが保存されます
  • 最後に「完了」で X サーバーが起動されます
初回起動時に、下記のようにファイアウォールへのアクセス許可を求める警告が現れますが、そのまま「許可」ボタンをクリックします。 なお、サードパーティ製のウイルス対策ソフトなどをインストールしている場合、そのソフトウェアのファイアウォール機能に対してVcXsrvへのアクセス許可を行う必要があるかもしれません。しかし、私はそのようなソフトウェアを持っておらず、その設定方法についての質問には答えられませんのでご了承ください。ここではWindows標準のファイアウォール機能のみを用いている場合について解説しています。
さて、X サーバーが起動した状態では下図のようにタスクトレイに「X」というアイコンが現れます。以下で行うRaspberry Piへの接続時は、必ずこの「X」というアイコンが表示された状態で行ってください。
なお、デフォルトでは X サーバーの起動は自動では行われませんので、Windows を再起動するたびに手動で起動する必要があります。
そのような場合、初回起動時に保存した「config.xlaunch」をダブルクリックすると、その時の設定で X サーバーが起動されますので、次回からは「XLaunch」ではなく「config.xlaunch」をダブルクリックして X サーバーを起動するようにしましょう。
なお、「config.xlaunch」をダブルクリックしてXを起動できることを確認したら、デスクトップ上の XLaunch のアイコンは削除してしまっても構いません。

Raspberry Piでの準備

現在の Raspberry Pi OS では、デフォルトで ssh というソフトウェアが無効になっていますので、これをあらかじめ有効にしておく必要があります。

Raspberry Pi のデスクトップ左上にあるメニューから「設定」→「RaspberryPiの設定」と進み、下図のように「インターフェイス」タブの「SSH」を有効にしてください。これでsshが有効になります。

Windows から Raspberry Pi への接続

以上の準備が終わったら、Raspberry Pi へ接続してみましょう。あらかじめ Raspberry Pi を起動しておきます。慣れないうちは、これまで通り Raspberry Pi にディスプレイ、キーボード、マウスを接続しておいてもよいでしょう。

その状況で、Windows で Tera Term を起動し、Raspberry Pi に接続します。

下図のように、Tera Term の「新しい接続」ウインドウの「ホスト」欄に、Raspberry Pi の IP アドレスを記入して「OK」を押します。
なお、本書10章で注意したように、ここで Raspberry Pi に接続するためには、IPアドレスを知る必要があります。そのためには、Raspberry Piに ディスプレイとキーボードを接続しておく必要があり、本末転倒です。

この問題を解決するためには、以下の2つの方法が有効です。興味のある方はトライしてみてください。
  • 「ホスト」欄に、IP アドレスではなく「raspberrypi.local」と記入する:Windows に iTunes がインストールされている必要がある(iTunes に含まれる Bonjour というソフトウェアが必要なため)。iTunesのページを少しスクロールしたところにある「ほかのバージョンをお探しですか?」項目の「Windows」項目をクリックしてファイルをダウンロードする。Miscrosoft Store 版の iTunes ではダメなようです。
  • Raspberry Pi の IP アドレスを固定し、毎回その IP アドレスを記入する:「Raspberry Pi の IP アドレスを固定する」にその方法がまとめられています
さて、「IP アドレス」または「raspberrypi.local」を「ホスト」欄に記述して「OK」を押すと、 初回起動時にのみ、下図のようなセキュリティ警告が現れますが、そのまま「続行」をクリックしてください。
下記のようにユーザー名とパスワードが求められます。Raspberry Pi OS のインストール時に 決定したユーザー名とパスワードを入力します。図中の「kanamaru」は私の場合の例です。入力したら「OK」を押します。
最終的に下図のような状態になります。Raspberry Pi で LXTerminal を起動した状態に似ていますね。これが、Windows 上のターミナルソフトウェア Tera Term で Raspberry Pi に接続した状態になります。
この Tera Term 上で Raspberry Pi のコマンドを実行してみます。例えば、Thonny を起動するためのコマンド「thonny」(すべて小文字であることに注意)を実行した様子が下図になります。末尾に「&」をつけて「thonny &」とすると、そのコマンドの実行後、同じ Tera Term でさらに別のコマンドを実行できるようになります。

別ウインドウでLXTerminal が起動していることがわかります。これは、X サーバーである Vcxsrv をあらかじめ実行しておいたことの効果です。

なお、ターミナルから Thonny を起動すると、図に示されているように警告やメッセージがたくさん表示されますが、気にする必要はありません。
さらに、この Tera Term 上で「pcmanfm &」コマンドでファイルマネージャ起動したのが下図です。

以上の例から想像できるように、よく使うアプリケーションのコマンド名を知っておくと便利です。本書に関連するのは下記のアプリやコマンドです。
  • Thonny:thonny
  • ファイルマネージャ:pcmanfm
  • テキストエディタ:mousepad
  • 設定アプリケーション:rc_gui
  • Raspberry Pi のシャットダウン:sudo poweroff
  • Raspberry Pi の再起動:sudo reboot
  • ブラウザ(chromium):chromium-browser (ただし、「さらなる発展」で後述するように Raspberry Pi 上でブラウザを使う理由はほとんどありません)

日本語入力は?

以上の方法では、テキストエディタなどに日本語を直接入力する方法がないように思えます。

ただし、Windows アプリから文字をコピーして Raspberry Pi のアプリケーションに貼り付けることはできますので、Windows のメモ帳などで日本語を書いて Raspberry Pi のアプリケーションに貼り付けるという手はあります。

もし、よりスマートな方法をご存知の方はお知らせ頂けると幸いです。

管理者権限で GUI アプリケーションを実行する際の注意

上記の方法で Windowsから Raspberry Pi のアプリケーションを実行できるようになったのですが、管理者権限でウインドウのある GUI アプリケーションを実行しようとすると、エラーが出て実行に失敗します。例えば管理者権限でのテキストエディタの起動「sudo mousepad」などです(本書ではこれをしばしば用いました)。
本ページの方法で GUI アプリケーションを管理者権限で実行するには、例えば mousepad の場合、下記のコマンドで実行しなければなりません。
XAUTHORITY=/home/$USER/.Xauthority sudo mousepad
これを毎回実行するのは非常に面倒ですね。
下記の手順に従うと、この長い実行コマンドを簡略化できますので、試してみると良いでしょう。
まず、.bashrcという設定ファイルをテキストエディタmousepadで開きます。ターミナルで下記を実行するのでした。
mousepad .bashrc
このファイルの末尾に、下記の1行を追加します。これは「XAUTHORITY=/home/$USER/.Xauthority sudo」という長い命令を「xsudo」で置き換える、という設定です。
alias xsudo="XAUTHORITY=/home/$USER/.Xauthority sudo"
追加したらファイルを保存してテキストエディタを閉じます。

この設定を有効にするには、Raspberry Pi を再起動してしまうのが簡単です。

その後、Tera Term にて、
xsudo mousepad
を実行すると、管理者権限のテキストエディタがWindows上に開く、というわけです。
なお、この方法が必要なのは、GUIアプリケーションを管理者権限で実行する場合のみです。例えば、シャットダウンコマンド「sudo poweroff」は管理者権限ですが、GUI がないのでこれまで通りの実行方法でエラーはでません。

さらなる発展

以上で、Raspberry Piにディスプレイ、マウス、キーボードを接続せずに運用できるようになりました。

しかし、実際に使ってみると、Raspberry Pi 上の GUI アプリケーションの動作がやや緩慢であることに不満を覚える方が多いかもしれません。これは、GUI の描画をネットワーク経由で行っていることが原因です。

実際のところ、より Linux に慣れている上級者の方で、上記のように Raspberry Pi の GUI アプリケーションを Windows 上に表示して用いている、という方は多くはないと思います。

彼らがどうしているかというと、Raspberry Pi 上で行う全ての処理を、上記のターミナルソフトウェア Tera Term 上で行ってしまうのです。Tera Term は Raspberry Pi とコマンド(文字)のやりとりしかしませんから、ネットワーク経由でも動作が軽快なわけです。

しかし、そのためには、例えば下記のような操作をすべてターミナル上で行えなければいけません。
  • ファイルの編集(プログラムや設定ファイルの記述)
  • ファイルの操作(ファイルの削除、ファイルの移動、ファイル名の変更など)
  • プログラムの実行
一つ目の「ファイルの編集」について、本書では mousepad というアプリケーションを用いましたが、これはターミナル外で動作するGUIアプリケーションなので、ターミナル上で動作するという条件を満たしません。

ターミナル内のみでファイルを編集できるアプリケーションとして良く知られているのは、
  • nano(起動したら、終了するにはCtrl-X)
  • vi
  • emacs
などです。vi や emacs は、利用法の解説で一冊の本が書けるくらい奥が深いものなので、初めての方が試すならnanoでしょうか。
二つ目の「ファイルの操作」についてはamazonなどの書店で「Linux コマンド」などのキーワードで検索すると、参考書が多数見つかるでしょう。
三つ目の「プログラムの実行」については本書付録Cに少し解説があります。
なお、本書では「ブラウザで補足ページを開いてコマンドなどをコピーしてターミナルで貼り付け」という方法を覚えると演習が楽になります。 今回の場合のように Tera Term で Raspberry Pi にログインしている場合、このブラウザとして Raspberry Pi 上のブラウザを用いる理由はほとんどありません。
Windows 上のブラウザで本書の補足ページを開き、コマンドを (Ctrl-C などで)コピーして Tera Term へ貼り付ければ良いのです。 Tera Term へのコマンドの貼り付けは Alt+V またはマウスの右ボタンをクリック、です。この手法を用いると、Tera Term でのコマンドの実行がかなり楽になるでしょう。

必要なツールのインストールと設定(macOS 編)

さてここからは、macOS で同じことを行う方法を記していきます。私は M1 チップ搭載の MacBookPro (Sonoma) で行いましたが、他のバージョンでも同様に動作すると思います。Windowsと同様、
  • ターミナル
  • Xサーバー
の2つが必要になります。macOS は「アプリケーション / ユーティリティ / ターミナル」としてターミナルが既に含まれていますので、Xサーバーのインストールから行います。

XQuartzのインストールと起動

ここでは、macOS 用の X サーバーである XQuartz をインストールします。XQuartz の公式サイトよりファイルをダウンロードします。執筆時は XQuartz-2.8.5.dmg が最新版でした。

ダウンロード後はインストールを行ってください。

インストール後は下記のようにアプリケーション→ユーティリティに「XQuartz」アイコンが現れます。また、本ページで多用する「ターミナル」も存在するのがわかるでしょう。
XQuartz をダブルクリックして起動すると、下記のようにドックに XQuartz のアイコンが現れます。下記で Raspberry Pi に接続するときは、このアイコンが現れているときに行います。実際には、次回からは macOS が起動するときに同時に XQuartz も自動的に起動するようです。
なお、XQuartz を手動で起動すると、下記のような「xterm」というアプリケーションも同時に起動するのですが、これは用いませんので閉じてしまって構いません。以上で、XQuartz のインストールと起動は完了です。

sshの設定

次に、Raspberry Piに接続してGUIアプリケーションを表示するための設定を行います。

macOS 上にある /etc/ssh/ssh_config という設定ファイルを管理者権限で編集する必要があります。ここでは nano というテキストエディタで行います。

まず、macOS 上で「アプリケーション→ユーティリティ→ターミナル」を起動しましょう。そして、下図のようにターミナル上で
sudo nano /etc/ssh/ssh_config
を実行しましょう。すると、macOS にログインする際のパスワードを聞かれますので、入力してください。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。
パスワードの入力に成功すると、下図のようにターミナル上でテキストエディタnanoが管理者権限で起動します。矢印キーでカーソルを移動できますので、操作はそれほど難しくないでしょう。

そして、下図のように「#    ForwardX11 no」という行を見つけ、その下に
ForwardX11 yes
という行を一行追記します。
追記が終わったら、保存してnanoを閉じます。以下の流れで行いましょう。
  • Ctrl-X(Ctrl キーを押しながら X キー)を入力
  • 変更を保存するか?(Save modified buffer?)と聞かれるので「y」を入力
  • ファイル名(File Name to Write)を聞かれるので、変更せずそのままEnterを入力
以上で変更が保存されnanoが終了するはずです。

macOS からRaspberry Piへの接続

以上で準備が整いましたので、macOS から Raspberry Pi に接続しましょう。

なお、Windows 編で注意したように、ssh というソフトウェアを Raspberry P i上であらかじめ有効にしておく必要があります。Windows 編の「Raspberry Pi での準備」を参考に、Raspberry Pi 上で ssh を有効にしてから先に進んでください。

準備ができたら、macOS 上で「アプリケーション→ユーティリティ→ターミナル」を起動し、下図のように
ssh kanamaru@raspberrypi.local
と入力してEnterキーを押しましょう。もちろん、「kanamaru」の部分は皆さんが Raspberry Pi OS のインストール時に決めた自分の ID で置き換えてください。

なお、これは「raspberrypi.local というホストにユーザー kanamaru でログインする」という意味になります。IPアドレスで指定したい場合、例えば「ssh kanamaru@192.168.1.3」などとなります。
まず、「本当に接続するか?」と聞かれますので、「yes」とタイプして Enter キーを押します。
次に、パスワードの入力を求められますので、Raspberry Pi OS のインストール時に決めたパスワードを入力します。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。
パスワードの入力に成功すると、下図のようにログインに成功します。
あとは自由にアプリケーションを起動してみましょう。下図は、Windowsで行ったように
  • ターミナルから「thonny &」により Thonny を起動
  • ターミナルから「pcmanfm &」によりファイルマネージャを起動
を実行した様子です。
なお、管理者権限でGUIアプリケーションの実行するとそのままではエラーが出ますので、本ページ中ほどにある「管理者権限でGUIアプリケーションを実行する際の注意」を参照してください。同様に、よく使うアプリケーションのコマンド名も本ページ中ほどで紹介しています。

ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(1)~VNC編

1. はじめに

Raspberry Piは名刺サイズの超小型コンピュータですが、ディスプレイを接続して利用するとRaspberry Piの省スペース性が犠牲になるという問題があります。

そこで、本ページではタイトルにあります通り、「Raspberry Piにディスプレイ・マウス・キーボードを接続せずに利用する」ことを目指します。

本サイトではその方法として「VNCを用いる方法」と「SSHを用いる方法」の2つを紹介しますが、本ページは「VNCを用いる方法」を解説します。Linuxのコマンド操作にはまだ慣れていない、という方にはわかりやすい方法です。

具体的には、下記のように一つのネットワークにRaspberry PiとPCが属しており、PCからRaspberry Piを利用する、というスタイルになります。


この図だけ見ると、本書の9章や10章で行ったように「PCのブラウザからRaspberry Piの回路にアクセスする」方法とあまり変わらないように思えるかもしれません。

9章や10章と異なるのは、Raspberry Piにディスプレイ、マウス、キーボードを一切接続せず、「プログラムの作成」、「プログラムの実行」、「Raspberry Piのシャットダウン」などをすべてPCから行う、ということです。

この際、PCのデスクトップの外観は下図のようになります。Windowsのデスクトップの上にウインドウがあり、その中にRaspberry Piのデスクトップが表示されていますね。

以下、この動作を実現する方法を解説していきます。Windowsを用いて解説しますが、macOSでも同じことが可能であると思います。


2. Raspberry Piでの準備

まず、当面はRaspberry Piにディスプレイ、マウス、キーボードを接続して設定を行っていきます。

メニューの「設定」→「Raspberry Piの設定」→「『インターフェイス』タブ」のVNCと言う項目の「有効」をチェックし、「OK」ボタンを押して「Raspberry Piの設定」を終了してください。


そうすると、下図のようにRaspberry Piのデスクトップの右上に、VNCが起動していることを示すアイコンが現れます。


この状態にすることで、外部のPCからVNC接続が可能になります。

3. WindowsなどのPCでの設定

次に、WindowsやmacOSのようなPCのブラウザでVNC Viewerのダウンロードサイトに移動します。

そして、WindowsまたはmacOS用のVNC Viewerをダウンロードしてください。執筆時に、Windowsの場合「VNC-Viewer-6.19.107-Windows.exe」というファイルがダウンロードされました。

ダウンロードが完了したらダブルクリックしてインストールを行います。ほぼデフォルトの設定通りにインストールして良いのですが、念のため注釈を加えていきます。

言語は、下記のようにEnglishのままで構いません。


License Agreementの画面が出たら、ライセンスを確認した上で「I accept the terms in the License Agreement」にチェックを入れてから「Next」をクリックします。


インストールの設定ですが、「Desktop Shortcut」の部分をクリックして、「Will be installed on local hard drive」を選択しましょう。デスクトップにVNCのアイコンが現れるようになります。


あとは設定の変更なくボタンをクリックしていくとインストールが始まり、下図のようなアイコンが保存されます。


このアイコンをダブルクリックしてVNCを起動すると、まず下図のような確認画面が現れますので、「GOT IT」ボタンをクリックします。「Send anonymous usage data to help imporve VNC Viewer(VNC Viewerの改善のために匿名の利用データを送る)」のチェックはお好みで外しても構いません。


そうすると、接続先を指定する画面が現れます。下図の下線部に、Raspberry PiのIPアドレスを記入して接続するわけです。


IPアドレスとは、ネットワーク接続時に割り振られるアドレスで、x.x.x.x の形式をしているのでした(xはそれぞれ0から255の数字)。Raspberry PiのIPアドレスを知る方法は、本書の9章で解説しました。

しかし、本ページの目的は「ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する」ことですから、その方法は使えません。

この「どのアドレスに接続すればよいかわからない」問題を解決するには、以下の2つの方法があります。
  • 赤線部にIPアドレスではなく「raspberrypi.local」と記入する:RaspbianのバージョンがJessie以降であり、WindowsにiTunesがインストールされている必要がある(iTunesに含まれるBonjourというソフトウェアが必要なため)。これは本書の付録Eで解説されています。接続できない場合、WindowsからiTunesとBonjourを一旦アンインストールし、再びiTunesをインストールし直すと改善する場合があります。
  • Raspberry PiのIPアドレスを固定し、赤線部に毎回そのIPアドレスを記入する:「Raspberry PiのIPアドレスを固定する」にその方法がまとめられています
iTunesをインストール済の方はこのうちの1つめ、すなわち上図赤線図に「raspberrypi.local」と記入するのが簡単です。

ただし、私が試したところ(環境のためかソフトウェアのためか)、「raspberrypi.local」と記述してもなかなか接続に成功しないことがありました。何回に一回かは成功するという状態です。同じ問題に遭遇した方は、上の選択肢の2つめ、すなわち「IPアドレスを固定する」方法を用いた方が安定して接続できると思います。

さて、上図赤線部に「raspberrypi.local」または「Raspberry PiのIPアドレス」を記入してEnterキーを押します。Raspberry Piで動作しているVNC Serverへの接続に成功すると、下図のようなWindowsが開きますので、「Continue」ボタンをクリックします。


すると、下図のような画面が現れますので、ユーザー名とパスワードを記し、「OK」ボタンをクリックします。 なお、ユーザー名とパスワードは、古い OS ではデフォルトで「pi」と「raspberry」でしたが、現在ではこれらは OS の初回起動時に自分で決定するようになっていますので、そこで設定した値を入力します。


接続に成功すると、下図のようにWindows上にRaspberry Piの画面が現れます。

この時点ではまだRaspberry Piにディスプレイを接続した状態だと思いますが、そのディスプレイを複製したウインドウになっているはずです。

このとき、下図の赤い矢印部に黒い横線があることに着目してください。


その近くにマウスを移動すると、下図のように設定アイコンが現れます。左端の「全画面表示」と右端の「接続終了」は知っておくと便利です。


さて、これでVNC接続できることがわかりましたので、次の目標は以下を実現することになります。

  • Raspberry Piの電源を切り、ディスプレイ、マウス、キーボードを取り外した状態で起動する
  • その状態でWindowsなどのPCからVNC接続する

しかし、そのまま実行すると、Windows上でVNC接続したRaspberry Piの画面が非常に狭い(解像度が低い)状態になってしまいます。

それを避けるためには、Raspberry Piの電源を切る前に、あらかじめ解像度を大きく設定しておく必要があります。下図のように「Raspberry Piの設定」アプリケーションで「システム」→「解像度を設定」で解像度をDMTの1280x720くらいにしておくと良いと思います。なお、最近の Raspberry Pi OS では、設定アプリケーションの「ディスプレイ」タブ→「ヘッドレス解像度 (Headless Resolution)」の設定が該当すると思います。




上記のどの設定も存在しない場合、以下のようにターミナル上で raspi-config コマンドを実行して設定することになります。
  1. ターミナル上でコマンド「 sudo raspi-config 」を実行し、設定画面を開く
  2. 「↓」キーを一回押して「2. Display Options」にフォーカスを合わせ、「Enter」
  3. 「↓」キーにより、「D1 Resolution」または「D5 VNC Resolution」にフォーカスがあわせ「Enter」
  4. 「↑」および「↓」キーを押し、設定したい解像度のフォーカスを合わせる
  5. 「TAB」キーを一回押し、「了解」または「Select」にフォーカスを合わせ、「Enter」
  6. 最初の画面に戻ったら、「TAB」キーを二回押し、「Finish」にフォーカスを合わせ、「Enter」
以上の解像度の設定をした後、上の目標を試してみましょう。

なお、うまく接続できるようになった後、Raspberry Piの電源を切りたい場合は、VNC内のRaspberry Piでメニューからシャットダウン(あるはコマンドで「sudo poweroff」)を実行してください。VNCの接続を切断しただけではRaspberry Piの電源は切れませんのでご注意ください。

もし起動したRaspberry PiにVNC Viewerで接続できないという場合、上で解説した「『raspberrypi.local』と記述してもなかなか接続に成功しない」という問題に当たっているかもしれません。

その場合、IPアドレスでの接続に切り替えてみると良いかもしれません。そのためには、再びRaspberry Piにディスプレイ・マウス・キーボードをつなぎ直すことになりますね。

安定して接続できる環境が整うまで苦労するかもしれませんが、安定すると便利に使える方法です。

Raspberry PiのIPアドレスを固定する

はじめに

本書の9章および10章では、下図のようにRaspberry PiとPC(またはスマートフォン)とをルーター機器に接続したネットワークを構成し、PC(またはスマートフォン)からRaspberry Piにアクセスしました。

その際、Raspberry Piに振られるIPアドレスはルーター機器から自動的に割り当てれるものを利用しました。

例えば、下の図ではRaspberry PiのIPアドレスが「192.168.10.3」、PCのIPアドレスが「192.168.10.2」と示されています。「IPアドレスが自動的に割り当てられる」ということは、このIPアドレスが逆になることや、「192.168.10.4」以降のIPアドレスが割り当てられることもある、ということを意味します。

そのため、10章でRaspberry Piを搭載したキャタピラ式模型を作成した際、どのようなIPアドレスがRaspberry Piに割り当てられたかを知る方法が必要でした。本書ではLCDをキャタピラ式模型に搭載し、そこにIPアドレスを表示することでその問題を解決しました。

しかし、Raspberry PiのIPアドレスがルーターから自動的に割り当てられるものではなく、最初から固定されたものであったら、IPアドレスを知るための工夫は不要になります。

本ページではそれを実現するために必要な予備知識と、具体的な方法について解説します。


どのようなIPアドレスに固定すれば良いかを知ろう

Raspberry PiのIPアドレスを固定したい場合、まずはどのようなIPアドレスを利用してよいのかを知るところから始めます。そのためには、お使いのルーター機器の設定を確認する必要があります。

何故でしょうか。例えば、Raspberry Piに「192.168.10.2」というIPアドレスを固定アドレスとして(勝手に)割り当てたとします。しかし、「192.168.10.2」というIPアドレスはWifiルーターによって管理されていますので、そのIPアドレスがPCに割り当てられることがあり得ます。

すると、ネットワーク内に同じIPアドレスの機器が2台存在することになり、ネットワークが正常に機能しなくなります。

そのため、固定アドレスとして利用するためには、Wifiルーターにより自動的に割り当てられるアドレスを避けなければいけないわけです。

以下、本ページでは、高度な解説をさけるため、家庭用の一般的なルーター機器のデフォルトの設定に基づいて解説を進めます。例としてNECとBuffaloのルーター機器を取り上げます。

学校や職場のような環境の場合、本ページの解説が当てはまらないことがありますので、詳細はネットワーク管理者にお尋ねください。

1. NEC Aterm WG600HPの場合

まず、WifiルーターであるNEC Aterm WG600HPを例に解説します。NEC社のWifiルーターであれば、似た手順で設定を確認できると思います。

まず、上の図のようにRaspberry Piに192.168.10.3のようなIPアドレスが自動的に割り当てられているとします。このアドレスは、メーカーや機種によって異なりますので、適切に読み替えてください。

このとき、実はルーター機器(のLAN側)にもIPアドレスが割り当てられています。多くの家庭用ルーター機器のデフォルト設定では、Raspberry PiのIPアドレスの3つめのピリオドの右側の数値を「1」に置き換えたIPアドレスとなります。すなわち、上図では「192.168.10.1」です。
(繰り返しますが、学校や職場などでは必ずしもそうはなっておりませんのでご注意ください)

そのIPアドレスに対してブラウザでアクセスすると、ルーター機器の設定画面に入ることができます。上図の状況の場合、ブラウザのアドレス欄に「 http://192.168.10.1/ 」を記入します。

NEC Aterm WG600HPの場合、ユーザーadminに対し、購入時の初回設定で決めたパスワードを入力する必要があります。詳細はルーター機器の説明書をご覧ください。本ページでは、ルーター機器の一般的な設定方法についてのご質問には回答できません。

設定画面において、下図のように「詳細設定」→「LAN側設定」のページを見ると、ここで知りたい情報が記されています。

まず、「IPアドレス」欄に「192.168.10.1」と記されています。これがこのルーターのIPアドレスです。機種によって異なることも多いでしょう。

その横に記されている「24」という数字は、「このネットワークでは192.168.10.0~192.168.10.255のIPアドレスが使える」、ということを示すネットマスクと呼ばれる数値に関連するのですが、ここでの解説は省略します。ほとんどの機種で「24」となっているのではないでしょうか。

さらに、赤い四角で囲われた以下の情報に着目してください。
  • アドレス割当パターン:自動指定
  • 割当先頭アドレス:(指定なし)
  • 割当数:32
最初の2つの項目によって「PCやRaspberry Piに割り当てられるIPアドレスは192.168.10.2を先頭とする」ということが示されています。これは、設定ページ上の「?(ヘルプ)」マークをクリックすることでわかります。

さらに3つ目の項目も合わせると、「PCやRaspberry Piに割り当てられるIPアドレスは192.168.10.2~192.168.10.33の32個」であることがわかります。

以上をまとめると、このネットワークにおけるアドレスの利用のされ方は下図のようになります。 192.168.10.0と192.168.10.255はそれぞれネットワークアドレス、ブロードキャストアドレスと呼ばれる特別なアドレスなので利用できません。また、192.168.10.1はルーターのIPアドレス、192.168.10.2~192.168.10.33はルーターから割り当てられるアドレスなのでやはり利用できません。

その結果、このルーターでは、固定するIPアドレスとして利用可能なのは192.168.10.34以降であることがわかりました。
なお、上のルーターの設定画面で設定を変更すると、ルーターによって割り当てられるIPアドレスの先頭アドレスを後方にずらすことも可能です。そうすると192.168.10.2などの若いIPアドレスを固定IPアドレス用として利用可能になりますが、ルーターの設定変更が必要になりますので、適用は自己責任でお願いします。

2. Buffalo WHR-1166DHP2の場合

次に、BuffaloのWifiルーター WHR-1166DHP2の場合の解説を行います。Buffalo社のルーターならば、似たような手順で設定を確認できるでしょう。

NEC社のWifiルーターで解説したのと同様に、ルーターのIPアドレスを知る必要があります。WHR-1166DHP2の場合、Raspberry PiやPCにはデフォルトで192.168.11.XというIPアドレスが振られていました。そのため、ルーターのIPアドレスは192.168.11.1と考えられます。

そこで、PCのブラウザで、アドレス欄に「 http://192.168.11.1/ 」を記入し、ルーターにアクセスします。

WHR-1166DHP2の場合、ユーザーadminに対し、出荷時のパスワードを入力する必要があります。詳細はルーター機器の説明書をご覧ください。本ページでは、ルーター機器の一般的な設定方法についてのご質問には回答できません。

設定画面において、「詳細設定」→「LAN」→「LAN」と辿ると、下図のように知りたい情報が記されています。

まず、「LAN側IPアドレス」欄に「192.168.11.1」と記されています。これがこのルーターの(LAN側の)IPアドレスです。機種によって異なることも多いでしょう。

その下の「255.255.255.0」という数字はネットマスクと呼ばれ、「このネットワークでは192.168.11.0~192.168.11.255のIPアドレスが使える」、ということを示します。NECのルーターで書かれていた「/24」と同じ意味です。多くのルーターでこの値となっているでしょう。

「割り当てIPアドレス」に書かれているように『「192.168.11.2」から64個』がこのWifiルーターにより自動的に割り当てられるIPアドレスです。

以上をまとめると、このネットワークにおけるアドレスの利用のされ方は下図のようになります。 192.168.11.0と192.168.11.255はそれぞれネットワークアドレス、ブロードキャストアドレスと呼ばれる特別なアドレスなので利用できません。また、192.168.11.1はルーターのIPアドレス、192.168.11.2~192.168.11.65はルーターから割り当てられるアドレスなのでやはり利用できません。

その結果、このルーターでは、固定するIPアドレスとして利用可能なのは192.168.11.66以降であることがわかりました。

IPアドレスを固定する

さて、以上で固定するIPアドレスを決めることができました。ここから、実際に設定を行っていきましょう。NECのルーターの例で示したように、192.168.10.34に固定する場合を例に解説します。

まず、ターミナル上で下記のコマンドを実行し、設定ファイル /etc/dhcpcd.conf を管理者権限で編集します。
  • sudo leafpad /etc/dhcpcd.conf
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
  • sudo mousepad /etc/dhcpcd.conf
このファイルの末尾に、下記のような4行を追加します。
interface wlan0
static ip_address=192.168.10.34/24
static routers=192.168.10.1
static domain_name_servers=192.168.10.1
これらの行は、環境に応じて変更が必要ですので、順に解説します。
  • 1行目:無線LANについての設定であることを示します。有線LANの場合、「wlan0」を「eth0」に変更してください。
  • 2行目:「192.168.10.34」がRaspberry Piに固定するIPアドレスを表します。
  • 2行目:「/24」はNECのルーターの解説で少し触れたように、利用可能なIPアドレスの範囲を指定するための数値です。多くのルーターのデフォルト状態では、「/24」のままで良いでしょう。
  • 3行目と4行目:ここはルーターのIPアドレスを記します。
以上を記述した後ファイルを保存し、Raspberry Piを再起動してください。指定したIPアドレスが割り当てられていれば成功です。