2019年1月26日土曜日

ディスプレイ・マウス・キーボードを接続せずに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を利用する(2)~SSH編

はじめに

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

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

本サイトではその方法として「VNCを用いる方法」と「SSHを用いる方法」の2つを紹介しますが、本ページは「SSHを用いる方法」を解説します。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のターミナルアプリケーションであるLXTerminal、左はRaspberry PiのPython開発環境であるIDLEです。LXTerminalやIDLEがWindows上のウインドウとして表示されているのがポイントです。

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

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


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

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

以下、順に解説していきます。

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

Tera Termのサイトよりインストールファイルをダウンロードします。最新版をダウンロードして下さい。ファイル名は例えばteraterm-4.101.exeなどです。

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

インストール後、Tera Termを起動すると、下記のようなウインドウが現れます。これは、Raspberry Piに接続するためのウインドウなのですが、ウインドウをPCに飛ばすための設定が接続前に必要ですので、ここでは図のように「キャンセル」ボタンを押します。


その後、残ったウインドウで下記のように「設定」→「SSH転送」を選択します。


すると、下図のようなウインドウが現れますので、図のように「リモートの(X)アプリケーションをローカルのXサーバに表示する」にチェックを入れ、「OK」を押します。


その後、「設定」→「設定の保存」を選択し、今の設定を保存します。


保存するファイル名や場所は変更せず、そのまま「保存」ボタンを押せば設定が保存されます。

以上でTera Termの設定は終わりですので、一旦Tera Termのウインドウを閉じます。


VcXsrvのインストールと設定

次に、VcXsrvのインストールを行います。

まず、公式サイトよりファイルをダウンロードします。なお、ダウンロードされるファイルについては注意が必要で、こちらのダウンロードサイトより、自分に適したバージョンを選択してダウンロードする必要がある場合があります。

Windows 7以降をご利用の場合、最新版をダウンロードしますが、Windowsが64bit用か32bit用かで異なるファイルをダウンロードする必要があります。執筆時の場合、バージョン1.20.1.4の下記のようなファイルでした。
  • Windows 7以降(64bit)をご利用の場合:vcxsrv-64.1.20.1.4.installer.exe
  • Windows 7以降(32bit)をご利用の場合:vcxsrv.1.20.1.4.installer.exe
ファイル名に「debug」が入っているファイルは選ばないでください。

Windows XPをご利用の場合、VcXsrvの最新版ではXPは既にサポートされていませんので、旧バージョン1.14.2.1に該当する以下をダウンロードします。ただし、私はXPでの動作は確認していませんのでご注意ください。
  • Windows XP(64bit)をご利用の場合:vcxsrv-64.1.14.2.1.installer.exe
  • Windows XP(32bit)をご利用の場合:vcxsrv.1.14.2.1.installer.exe
ダウンロードが終わったら、デフォルトの設定でインストールします。インストール時に警告が出ますので、「詳細情報」リンクをクリックしてから実行します。

インストールが終了すると、デスクトップにXLaunchと書かれたアイコンが現れます。


このアイコンをダブルクリックして起動してみましょう。幾つかウインドウで設定を求められますが、デフォルトのままで構いません。すなわち、
  • 「Multiple windows」にチェックが入った状態で「次へ」
  • 「Start no client」にチェックが入った状態で「次へ」
  • 「Clipboard」、「Primary Selection」、「Native opengl」にチェックが入った状態で「次へ」
  • 「完了」をクリックする前に「Save configuration」を押すと、そこまでの設定が保存できますので、場所を選んで保存しましょう。デスクトップ上でも構いません。「config.xlaunch」というファイルが保存されます
  • 最後に「完了」でXが起動されます

なお、保存された「config.xlaunch」をダブルクリックすると、その時の設定でXが起動されますので、次回からは「config.xlaunch」をダブルクリックしてXを起動するようにしましょう。

なお、「config.xlaunch」をダブルクリックしてXを起動できることを確認したら、デスクトップ上のXLaunchのアイコンは削除してしまっても構いません。

初回起動時に、下記のようにファイアウォールへのアクセス許可を求める警告が現れますが、そのまま「アクセスを許可する」ボタンをクリックします。チェックボックスの状態は環境により異なりますので、デフォルトのままで構いません。

なお、サードパーティ製のウイルス対策ソフトなどをインストールしている場合、そのソフトウェアのファイアウォール機能に対してVcXsrvへのアクセス許可を行う必要があるかもしれません。しかし、私はそのようなソフトウェアを持っておらず、その設定方法についての質問には答えられませんのでご了承ください。ここではWindows標準のファイアウォール機能のみを用いている場合について解説しています。



さて、VcXsrvが起動した状態では下図のようにタスクトレイに「X」というアイコンが現れます。以下で行うRaspberry Piへの接続時は、必ずこの「X」というアイコンが表示された状態で行ってください。

デフォルトではVcXsrvの起動は自動では行われませんので、Windowsを再起動するたびに手動でVcXsrvを起動する必要があります。


Raspberry Piでの準備

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

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


これでsshが有効になり、以下の手順に進むことができるのですが、古い Raspberry Pi OS では、このままではRaspberry Piの起動時に下記のようにパスワードを変更するよう警告がデスクトップに出ることがあります。


これは、ユーザーpiのパスワードをデフォルトである「raspberry」のままにしておくと、外部から誰でもログインできてしまいセキュリティ上危険があるので、自分にしかわからないパスワードに変更するよう促されているのです。

先ほどと同様に「RaspberryPiの設定」アプリケーションでパスワードを変更するとこの警告は消えます。なお、現在は OS を初めて起動する際にユーザー名とパスワードの変更を促されるようになっていますので上記の警告は出ないはずです。

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」と記入する:RaspbianのバージョンがJessie以降であり、WindowsにiTunesがインストールされている必要がある(iTunesに含まれるBonjourというソフトウェアが必要なため)。これは本書の付録Eで解説されています。接続できない場合、WindowsからiTunesとBonjourを一旦アンインストールし、再びiTunesをインストールし直すと改善する場合があります。
  • Raspberry PiのIPアドレスを固定し、毎回そのIPアドレスを記入する:「Raspberry PiのIPアドレスを固定する」にその方法がまとめられています

さて、「IPアドレス」または「raspberrypi.local」を「ホスト」欄に記述して「OK」を押すと、下記のようにユーザー名とパスワードが求められます。古い Raspberry Pi OS ではこれらのデフォルト値は下記のようでした。
  • ユーザー名:pi
  • パスワード:raspberry
現在では、ユーザー名とパスワードはOS を初めて起動する際に自分で決定するようになっていますので、そこで設定した値を入力します。 入力したら「OK」を押します。


なお、初回起動時に、上記プロセスの途中で下図のようなセキュリティ警告が現れますが、そのまま「続行」をクリックしてください。



最終的に下図のような状態になります。Raspberry PiでLXTerminalを起動した状態に似ていますね。これが、Windows上のターミナルソフトウェアTera TermでRaspberry Piに接続した状態になります。


このTera Term上でRaspberry Piのコマンドを実行してみます。例えば、LXTerminalを起動するためのコマンド「lxterminal」(すべて小文字であることに注意)を実行した様子が下図になります。末尾に「&」をつけて「lxterminal &」とすると、そのコマンドの実行後、同じTera Termでさらに別のコマンドを実行できるようになります。

別ウインドウでLXTerminalが起動していることがわかります。これは、VcXservをあらかじめ動作させたことの効果です。


さらに、このLXTerminal上で「idle」コマンドでPythonの開発環境IDLEを起動したのが下図です。もちろん「idle &」でも構いません。さらに、TeraTerm から直接 idle を起動しても構いません。なお、現在の OS では、idle はインストールされておらず、thonny が起動できますね。このように、ターミナルからアプリを起動して利用できる、というのがポイントです。

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

日本語入力は?

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

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

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

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

上記の方法でWindowsからRaspberry Piのアプリケーションを実行できるようになったのですが、管理者権限でウインドウのあるGUIアプリケーションを実行しようとすると、エラーが出て実行に失敗します。例えば管理者権限でのテキストエディタの起動「sudo mousepad」(古い OS では「sudo leafpad」)などです(本書ではこれをしばしば用いました)。

本ページの方法でGUIアプリケーションを管理者権限で実行するには、例えばmousepadの場合、下記のコマンドで実行しなければなりません。
XAUTHORITY=/home/$USER/.Xauthority sudo mousepad
これを毎回実行するのは非常に面倒ですね。

下記の手順に従うと、この長い実行コマンドを簡略化できますので、試してみると良いでしょう。

まず、.bashrcという設定ファイルをテキストエディタmousepadで開きます。ターミナルで下記を実行するのでした。
mousepad .bashrc
なお、古い OS ではテキストエディタとしてmousepadではなくleafpadを用います。
leafpad .bashrc
このファイルの末尾に、下記の1行を追加します。これは「XAUTHORITY=/home/$USER/.Xauthority sudo」という長い命令を「xsudo」で置き換える、という設定です。
alias xsudo="XAUTHORITY=/home/$USER/.Xauthority sudo"
追加したらファイルを保存してテキストエディタを閉じます。

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

その後、ターミナル(Tera TermでもLXTerminalでも可)にて、
xsudo mousepad
を実行すると、管理者権限のテキストエディタがWindows上に開く、というわけです。なお、古い OS では
xsudo leafpad
です。コマンドがかなり簡略化されたことがわかるでしょうか。

なお、この方法が必要なのは、GUIアプリケーションを管理者権限で実行する場合のみです。例えば、シャットダウンコマンド「sudo poweroff」は管理者権限ですが、GUIがないのでこれまで通りの実行方法でエラーはでません。

さらなる発展

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

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

実際、よりLinuxに慣れている方は、上記のようにRaspberry PiのGUIアプリケーションをWindows上に表示して用いる、ということはほとんど行いません。

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

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

ターミナル内のみでファイルを編集できるアプリケーションとして良く知られているのは、
  • nano(起動したら、終了するにはCtrl-x)
  • vi
  • emacs
などです。viやemacsは、利用法の解説で一冊の本が書けるくらい奥が深いものなので、初めての方が試すならnanoでしょうか。

二つ目の「ファイルの操作」についてはamazonなどの書店で「Linux コマンド」などのキーワードで検索すると、参考書が多数見つかるでしょう。 ブルーバックスでもLinuxの入門書が出ましたね。とてもわかりやすいので、本書の読者の方にはお勧めです。

三つ目の「プログラムの実行」については本書付録Cに少し解説があります。
なお、本書では「ブラウザで補足ページを開いてコマンドなどをコピーしてターミナルで貼り付け」という方法を覚えると演習が楽になります。 今回の場合のように TeraTerm で Raspberry Pi にログインしている場合、このブラウザとして Raspberry Pi 上のブラウザを用いる理由はほとんどありません。
Windows 上のブラウザで本書の補足ページを開き、コマンドを (Ctrl-c などで)コピーして TeraTerm へ貼り付ければ良いのです。 TeraTerm へのコマンドの貼り付けは Alt+v またはマウスの右ボタンをクリック、です。この手法を用いると、TeraTerm でのコマンドの実行がかなり楽になるでしょう。

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

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

XQuartzのインストールと起動

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

ダウンロード後はdmgファイルをダブルクリック→現れたpkgファイルをダブルクリック、という流れでインストールを行います。

インストール後は下記のようにアプリケーション→ユーティリティに「XQuartz」アイコンが現れます。また、本ページで多用する「ターミナル」も存在するのがわかるでしょう。


XQuartzをダブルクリックして起動すると、下記のようにドックにXQuartzのアイコンが現れます。下記でRaspberry Piに接続するときは、このアイコンが現れているときに行います(ただし、必要な時にXQuartzが自動的に起動するようですので、手動での起動は必ずしも必要ないかもしれません)。


なお、XQuartzを手動で起動すると、下記のような「xterm」というアプリケーションも同時に起動するのですが、これは用いませんので閉じてしまって構いません。以上で、XQuartzのインストールと起動は完了です。


sshの設定

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

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

まず、OS X上で「アプリケーション→ユーティリティ→ターミナル」を起動しましょう。そして、下図のようにターミナル上で
sudo nano /etc/ssh_config
を実行しましょう。すると、OS Xにログインする際のパスワードを聞かれますので、入力してください。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。

パスワードの入力に成功すると、下図のようにターミナル上でテキストエディタnanoが管理者権限で起動します。矢印キーでカーソルを移動できますので、操作はそれほど難しくないでしょう。

そして、下図のように「#    ForwardX11 no」という行を見つけ、その下に
ForwardX11 yes
という行を一行追記します。


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

OS XからRaspberry Piへの接続

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

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

準備ができたら、OS X上で「アプリケーション→ユーティリティ→ターミナル」を起動し、下図のように
ssh pi@raspberrypi.local
と入力してEnterキーを押しましょう。

なお、これは「raspberrypi.localというホストにユーザーpiでログインする」という意味になります。IPアドレスで指定したい場合、例えば「ssh pi@192.168.1.3」などとなります。


すると、パスワードの入力を求められますので、ユーザーpiのパスワード(デフォルトで「raspberry」)を入力してEnterキーを押します。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。

パスワードの入力に成功すると、下図のようにログインに成功します。


あとは自由にアプリケーションを起動してみましょう。下図は、Windowsで行ったように
  • ターミナルからlxterminalを起動
  • lxterminalからidleを起動
を実行した様子です。

なお、管理者権限でGUIアプリケーションの実行するとそのままではエラーが出ますので、本ページ中ほどにある「管理者権限でGUIアプリケーションを実行する際の注意」を参照してください。同様に、よく使うアプリケーションのコマンド名も本ページ中ほどで紹介しています。


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アドレスが割り当てられていれば成功です。