LoginSignup
12
23

More than 5 years have passed since last update.

Macで楽々RaspberryPi キーボード・ディプレーなしにラズパイを使う

Last updated at Posted at 2019-04-07

はじめに

 私は、ラズパイに関しては雑誌に何度も記事を掲載しているほど使い込んでいるのですが、何を隠そうディスプレーもキーボードも持っていません。
ラズパイは、本体は3000円程度と安価なのですが、キーボードとディスプレイをそろえるとなると、費用的な負担もそれなりだし、大きさ的にもかざばってしまい、結構その点のハードルが高いと思います。
 しかし、パソコンがMacだとイーサケーブルとイーサアダプタだけでGUIを含めて使えるようになるのです。その手順をきれいにまとめた記事は意外とないので、自分の備忘録を兼ねて手順をアップしておきます。

アーキテクチャ

 「アーキテクチャ」というほどおおげさなものではないのですが、どういう仕組みでキーボードもディスプレーもいらなくできるかを概念的に示します。

物理接続レベル

raspi-1.png

 上の図が物理接続レベルでのラズパイとMACの関係です。
ラズパイとMAC間はイーサネットでピア接続(スイッチなしにケーブルだけで直接つなぐ)します。Macはイーサアダプタを持っていないので、Mac側でサンダーボルトかUSB接続のイーサネットアダプタは必要です。ケーブルと、このアダプタが今回説明するラズパイの使い方を行う際、必要なハードウェアとなります。それ以外は一切不要です。普段Macを使っている人ならさすがにイーサのアダプタぐらいは持っているかと思います。そういう人はほとんど追加投資なしにラズパイが使えることになります。
 Macから先は、普通の使い方通りWiFi接続でインターネットにつながっていることも前提です。

IP接続レベル

raspi-2.png

 では、IPレベルではどのようになっているのか示したのが上の図です。ラズパイとMac間はDHCPでつながっています。MacはNATサーバーの役割もになっており、ラズパイからインターネット接続要求があった場合、Mac経由でそのリクエストは対応されます。
 このような動きをするのに唯一必要な設定は、MAC側で「インターネット共有」を行うことになります。具体的な手順は後ほど説明します。

XWindowsレベル

raspi-3.png

 IP層までつながったとして、ディスプレーもキーボードもなしでラズパイのGUIアプリを使うためにはXWindowsが使える必要があります。この課題に対応するのがVNCプロトコルです。
 ここで、一つ注意すべきことがあります。
ラズパイには、デフォルトでReal VNCサーバーが導入済みです。またMacにはOSに最初からVNCクライアント機能が含まれています。普通に考えるとソフトの導入なしにVNCプロトコルでラズパイ・MAC間がつながりそうなのですが、ラズパイ側のReal VNCにクセがある関係でこのまま接続することはできません。
 ネット上によく出ている情報で「ラズパイにTigerVNCサーバーを導入すべし」というものがありますが、この情報は間違っています。確かにTigerVNCにするとMac側はOSで使えるVNCクライアントとつながるのですが、ラズパイ側で使えないアプリ(例えばMatehmeticaとか)がでてしまうのです。
 正しい対応は、Mac側にReal VNCクライアントを導入することとなります。これから説明する手順はこの方針に沿ったものとなります。

おまけ 名前解決

 私が基盤系をやっていた20年くらい前は、IP的に接続できてもその後でhostsやDNSの設定をしないと、ホストを名前で参照できないという問題がありました。
 しかし、今や便利な時代になって、mDNSというプロトコルを使うと、hostsファイルやDNSの設定なしに相手先サーバーをホスト名で参照可能です。幸いにしてラズパイもMACもこのmDNSのプロトコルに対応しているので、IP的に接続さえできてしまえば、接続相手のラズパイは自動的にraspberrypi.localという名前で参照可能になります。これもラズパイ使うならPCはMACがお勧めである理由の一つです。

買い物編

 それでは、実際に必要なものをそろえるところから説明します。

ラズパイ本体とマイクロSDカード

IMG_1796.jpg

 当たり前ですが、この2つは必須です。
 ラズパイ本体に関しては、写真のようにケースを買った方が持ち運びに便利だと思います。
 マイクロSDカードは選択がちょっと難しいです。私が1度やってしまった初歩的なミスとして、マイクロでないSDカードを買ってしまい、パソコンには入るのですが、ラズパイで使えなくて泣いたことがあります。上の写真のように本体が小さくなっているタイプである必要があります。
 SDカードのスペックを決める属性としてCLASSと呼ばれる伝送速度の仕様と、容量があります。
伝送速度はCLASS 10にした方がいいようです。容量は初めて試してみるなら8GBで十分、いろいろな用途で使い込みたいなら16GBという感じでしょうか?
 あと、上の仕様を満たしていてもメーカーにより相性の問題がいろいろあるみたいです。私はいつも東芝を使うことにしています。このあたりの話はネットでいろいろ調べている人がいるみたいなので、そちらで研究することをお勧めします。

イーサネットアダプタ、ケーブル

IMG_1802.jpg

 写真に写っているのはサンダーボルト接続の純正アダプタです。私はもう一つ、サードパーティ製のUSB接続アダプタも持っていてこちらでも普通に使えています。
 私が基盤系の仕事をしていた20年前はイーサケーブルにもストレートクロスというものがあり、用途で使い分ける必要があっていつもカバンには2種類持ち運んでいたのですが、今は自動的にスイッチしてくれるので、そういう必要はなくなりました。イーサケーブルにも規格があり、私が普段使っているのはカテゴリ6という一番品質のいいものです。カテゴリ6だと、ケーブルが太くて曲がりにくく持ち運びに不便なものが多いのですが、写真のものはケーブルが柔らかいところが気にいっています。(ケーブルの印字を見てみたらエレコム製のようです)

電源アダプタ、ケーブル

IMG_1798.jpg

 こちらに関しては特に語るところもないので解説は省略します。

導入編

 材料が全部そろったらいよいよ導入です。MAC側の準備から始めます。

ラズパイOSダウンロード

 最初にラズパイOSのダウンロードをします。
ダウンロードサイトにアクセスします。

スクリーンショット 2019-04-07 10.24.37.png

上のトップ画面でRaspbianを選びます。

スクリーンショット 2019-04-07 10.27.34.png

 次の画面では、左上の「Raspbian Stretch with desktop and recommended software」(ソフト全部入りという意味)を選択します。ダウンロードファイルは2019年4月7日時点では2018-11-13-raspbian-stretch-full.zipという名前でした。

Real VNCクライアント導入

 使うことになるのは一番最後なのですが、ラズパイOSのダウンロードには相当時間がかかるはずなので、待っている間に次の作業を行っておきます。
Real VNCダウンロードサイト

 こちらはあっという間にダウンロードが終わるはずですので、ダウンロードしたdmgファイルをダブルクリックし、下記のガイドに従ってアプリをアプリケーションフォルダーにdrag & dropするだけで、導入は完了です。

スクリーンショット 2019-04-07 10.37.46.png

SDカードのフォーマット

 ダウンロード中のラズパイOSをSDカードにコピーするのですが、その前にSDカードのフォーマットをしておく必要があります。
 まず、MacにSDカードを挿入します。挿入後の様子は私のMacの場合だと次の写真のような感じです。

IMG_1799.jpg

 次に「アプリケーション」->「ユーティリティー」の配下の「ディスクユーティリティ」を起動します。
スクリーンショット 2019-04-07 11.29.51.png

 上の図のように「APPLE SD Card Reader Media」が選択されていることを確認した上で(注意:選択先を間違えると大変なことになってしまいますので十分注意してください)、画面上部の「消去」アイコンを選択します・

スクリーンショット 2019-04-07 11.03.55.png

上のようなパネルが出たら、

名前: RASPI
フォーマット: MS-DOS(FAT)
方式: マスター・ブート・レコード

を入力・選択し、「消去」ボタンをクリックします。

(再度注意 対象が自分のハードディスクでなく、SD Cardであることを確認してください)

 フォーマットが無事終わると、下のような画面がでてくるはずですので、指示に従い「完了」ボタンをクリックします。

スクリーンショット 2019-04-07 11.04.14.png

ラズパイOSの導入

 他のことをやっているうちにラズパイOSのダウンロードも終わったことかと思います。最初に始めたラズパイOSのダウンロードが完了したら、それをSD Cardにコピーします。コピーはMacの場合ddコマンドが一番簡単です。次の例を参考にddコマンドを実行してください。

zipファイルの解凍

 まず、先ほどダウンロードしたファイルを解凍します。方法はFinderからダブルクリックでも、unzipコマンドでもいいです。

ターミナルをひらく

 ターミナルアプリを開いて、カレントディレクトリはファイルをダウンロードした場所にしてください。
lsコマンドの実行結果は下記のように、解凍後のラズパイOSイメージファイルが含まれているはずです。

$ ls -lt
total 14211072
-rwxrwxrwx@ 1 makaishi  staff  1978611497  4  7 11:53 2018-11-13-raspbian-stretch-full.zip
-rwxrwxrwx@ 1 makaishi  staff  5297405952 11 13 14:24 2018-11-13-raspbian-stretch-full.img

デバイス名の確認

 dfコマンドを実行し、SD Cardのデバイス名を確認します。/Volumes/RASPIのあるところがSD Cardのデバイスです。下の例だと、/dev/disk2になります。うしろのs1は取った名前で考えます。

$ df
Filesystem    512-blocks      Used  Available Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   489825072 422363096   59851376    88% 1943807 9223372036852832000    0%   /
devfs                394       394          0   100%     682                   0  100%   /dev
/dev/disk1s4   489825072   6291552   59851376    10%       5 9223372036854775802    0%   /private/var/vm
map -hosts             0         0          0   100%       0                   0  100%   /net
map auto_home          0         0          0   100%       0                   0  100%   /home
/dev/disk2s1    15184192      4928   15179264     1%       0                   0  100%   /Volumes/RASPI

ディスクのumount

 ローレベルのddコマンドでコピーするので、コピー時には対象ディスクはOSから見えない状態にします。そのため次のコマンドを発行してください。デバイス名は環境によって変わりますので、上の結果次第で/dev/disk3などと読み替えてください。

$ diskutil umountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

OSファイルのコピー

 次の例を参考にOSファイルのコピーを行います。コマンド実行はルート権限が必要なので、sudoコマンドで実行します。
 ここでもofデバイス番号を間違えると大変なことになりますので注意して下さい。

if=の後には入力ファイル名を指定します。
of=の後には、先ほど調べたデバイス名の頭に'r'をつけます。
conv=syncのオプションを忘れないようにしてください。これをつけないと、コピー途中でエラーになってしまうことがあります。

$ sudo dd bs=1m if=2018-11-13-raspbian-stretch-full.img of=/dev/rdisk2 conv=sync

 このコマンドは途中経過を全然出してくれないですが、ctrl+Tで状況を表示してくれるので、それで適宜確認をしてみてください。

ssh ファイルの作成(重要)

 これからラズパイOSを起動して初期設定を行うに際して一番最初はsshコマンドでラズパイに入ります。しかし、最新のラズパイOSはデフォルトでリモートからのsshアクセスを認めていません。これを可能にするのが次のコマンドとなります。

 上のddコマンドが正常に終わると、/Volumes/boot ディレクトリがMac側から見えるようになっているはずです。
その点を確認した上で、次のコマンドを実行します。

$ touch /Volumes/boot/ssh

 このおまじないが終わったら、umountコマンドで、bootディレクトリをOSから見えないようにします。

$ sudo umount /Volumes/boot
$ diskutil umountDisk /dev/disk2

 2つめのコマンドが正常終了したら、SD Cardを安全に抜き取ることができます。

ラズパイの初期起動

 これでラズパイを初期起動するための準備はすべて整いました。まず、先ほどMacから抜き取ったSD Cardをラズパイに入れます。入れる場所は下の写真を参考にしてください。

IMG_1800.jpg

 上の写真は挿入途中の状態です。SD Cardは一番奥まで押し込んだ状態にします。
 カード挿入が終わったら、電源を入れ、イーサネットはパソコン(Mac)とピア接続にします(ハブを経由せず、直接つなぐ方法です)。全部つなぎ終わった状態の写真が下のものになります。

IMG_1801.jpg

Mac側のネットワーク設定

 いよいよラズパイにログインするのですが、その前にMac側で設定が必要です。それは冒頭のアーキテクチャのところで説明したMacをNATサーバーとして機能させるための設定です。

スクリーンショット 2019-04-07 12.31.47.png

 まず、Macの「システム環境設定」を選んで、その中から「共有」のアイコンをダブルクリックします。

スクリーンショット 2019-04-07 13.28.58.png

(1) 「共有する接続経路」にはどのインターフェースでインターネットに接続するかを指定します。冒頭のアーキテクチャの図のケースの場合「Wi-Fi」になります。

(2) 「相手側のコンピュータのポート」は、Mac側から見た場合、どのインターフェイスからNAT先につながるかを指定します。今のケースでは「Thunderbolt Ethernet」になります。

(3) (1)と(2)の設定が終わったら「インターネット共有」のチェックをつけます。下のような画面がでてくるので、「開始」で答えます。

スクリーンショット 2019-04-07 13.29.07.png

 正しく設定ができたら、システム環境設定の画面を閉じます。

ラズパイへ最初のログイン

 これで全部の準備は整いました。すべての設定が正しければ、sshコマンドでログインができるはずです。
先ほど開いたターミナルから次のコマンドを実行してみてください。

$ ssh pi@raspberrypi.local

 もし、パスワードを聞かれたら接続に成功しています。初期パスワードraspberryを入力してログインしてください。
 なぜ、いきなりraspberrypi.localという名前でつながるかについては、アーキテクチャのところで説明しておきました。

 下記のようなメッセージが出る場合もあります。これは、違うRASPI OSに同じMACから接続したことがある場合のメッセージです。

$ ssh pi@raspberrypi.local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi.local has changed,
and the key for the corresponding IP address fe80::62c8:c501:d5b1:8d0e%bridge100
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:0gX3UzG8gNlBiljncte9n65Vgi+sVE5RO0868mScqt8.
Please contact your system administrator.
Add correct host key in /Users/makaishi/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/makaishi/.ssh/known_hosts:2
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
pi@raspberrypi.local: Permission denied (publickey,password).

 この場合、次のようにエディタでknown_hostsファイルを開いて、raspberrypi.localのエントリを削除すると、ssh接続できるようになります。

$ vi ~/.ssh/known_hosts

ラズパイ初期設定

 ラズパイ初期設定のお作法で、次の一連のコマンドを実行してOSを最新版にアップデートしてください。(ここからのコマンドは、先ほどログインに成功したsshコマンドで接続したラズパイ側のコマンドになります)
 sudo apt upgradeコマンドは導入を続けるかを聞いてきますので、yで答えます。
 最新版のモジュールはインターネット経由でダウンロードされるのですが、アーキテクチャで説明したNAT機能が有効なため、これらのコマンドが使えることになります。

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
pi@raspberrypi:~ $ sudo apt dist-upgrade

VNC接続の準備

 Real VNCサーバーはラズパイOSにデフォルトで含まれています。そこで設定を有効化するだけで使えるようになります。以下の手順にしたがって有効化してください。

pi@raspberrypi:~ $ sudo raspi-config

スクリーンショット 2019-04-07 14.19.58.png

-> 5. Interfacing Options

スクリーンショット 2019-04-07 14.20.14.png

-> P3 VNC

スクリーンショット 2019-04-07 14.20.27.png

上の画面にはYesで答えます。

スクリーンショット 2019-04-07 14.20.41.png

メインの画面に戻ったらFinishを選択します。
 日本語化手順を含め、これ以外にもラズパイとしてやっておくべき初期設定はあるのですが、それは今回の記事の本題からはずれるので省略します。他の記事などを参考にするようにして下さい。

この設定が完了したら、次のコマンドでラズパイをいったん再起動します。

pi@raspberrypi:~ $ sudo reboot

VNC接続

 ラズパイの再起動が完了したら、Mac側ですでに導入済みのReal VNCクライアントを起動します。

 下の画面が出てきたらraspberrypi.localと入力してEnterキーを押します。

スクリーンショット 2019-04-07 14.16.56.png

 ラズパイ側のVNCサーバーが有効な場合、下のような画面が出てきますので、「Continue」で答えます。
この画面が出てこない場合は、VNCサーバーの機能が有効でないことが考えられますので、ラズパイ側の設定を確認してください。

スクリーンショット 2019-04-07 14.27.35.png

続いて下のようなログイン画面がでてきます。
Username: pi
Password: raspberry
で、Remember passwordにチェックをつけて「OK」をクリックします。

スクリーンショット 2019-04-07 14.27.56.png

下のような画面がでてくれば、VNC接続に成功しています。

スクリーンショット 2019-04-07 14.34.51.png

画面設定変更

デフォルトの設定では画面の解像度が低く使いにくいので、次の設定変更を行います。

デスクトップ左上のアイコンをクリック、「Preference」->「Raspberry Pi Configuration」

スクリーンショット 2019-04-07 14.37.37.png

システムタブから「Resolution」をクリックして解像度を1024x768に変更します。

スクリーンショット 2019-04-07 14.38.29.png

リブートするかの質問にはYesで答えます。

スクリーンショット 2019-04-07 14.39.47.png

リブート後に再度VNC接続をした様子は下記のとおり。解像度が大きく、使いやすくなりました。

スクリーンショット 2019-04-07 14.44.05.png

おまけ Mathematicaの利用例

 あまりみんなに知られていないのですが、普通に買うと10万円程度する数式処理ソフトMathematicaがラズパイなら無料で利用可能です。
上の設定をすれば、Macからこんなこともできます。

メニューから「Programming」->「Mathematica」

スクリーンショット 2019-04-07 15.06.35.png

二次方程式を解いたり、三次元グラフを描いた例。

スクリーンショット 2019-04-07 15.06.12.png

おまけその2 Mathematicaの紹介記事

 実は、ラズパイマガジン2018年10月号〜2019年6月号に、「Mathematicaで学ぶ機械学習超入門」という記事を連載しています。
Mathematicaについてもっと詳しく知りたい・ラズパイで機械学習を勉強したいという方はこちらも是非よろしくお願いします。

ラズパイマガジン2018年10月号
ラズパイマガジン2018年12月号
ラズパイマガジン2019年2月号
ラズパイマガジン2019年4月号

12
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
23