Raspberry Pi のセットアップ!モニター、キーボードなしでMacからSSH

/




Raspberry Pi Zero WH(以下ラズパイと略す)に専用のRaspbian OSをインストールした時の手順をメモしておく。ラズパイ側にはモニターやキーボードは装着せず、MacのターミナルからSSHを使ってリモート操作できるようにした。



Raspbian OSイメージのダウンロード


ラズパイに入れるOSイメージをこちらからダウンロードする。

ラズパイ側にモニターを搭載する予定はないので、GUIは使うことはないだろう。CUIのみで良いのでRaspbian Buster Liteを選んだ。
ダウンロードしたzipファイルを解凍すると2019-07-10-raspbian-buster-lite.imgのようなimgファイルが得られるので適当な作業ディレクトリへ移しておく。


SDカードの場所を確認する


Raspberry PiにセットするSDカードはMicro SDカードだ。容量は32GBもあれば十分だ。


SDカードにOSイメージを書き込むため、MacにSDカードをセットする。SDカードをセットしたら、diskutilコマンドでSDカードの場所を確認する。私の環境ではdisk2がSDカードになっていた。
※ 人それぞれSDカードの場所は異なるので注意しよう。もし間違って進めてしまうとMacのディスクも消去しかねないので!✋

$ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         251.0 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         250.7 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +250.7 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            176.5 GB   disk1s1
   2:                APFS Volume Preboot                 46.4 MB    disk1s2
   3:                APFS Volume Recovery                509.7 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk2
   1:             Windows_FAT_32 NO NAME                 31.0 GB    disk2s1



OSを焼く


ddコマンドでOSイメージをSDカードに焼くために、SDカードをMacにさした状態でいったんアンマウントする必要がある。
diskutil unmountDisk /dev/disk2

imgファイルを書き込むために次のコマンドを実行する。rdisk2のrbs=1mをつけることで100速く書き込む事ができるようだ。

sudo dd if=2019-07-10-raspbian-buster-lite.img of=/dev/rdisk2 bs=1m

Ctrl+Tを押せば進捗状況がかくにんできる。私のMac環境では2分程度で書き込むことが出来た。


SSHの設定を書き込む


SDカードにRasbian OSを書き込むことが出来たら、SDカードのディレクトリへ移動しよう。/dev/disk2ではなく/Volumes/boot/がSDカードのディレクトリだ。
$ cd /Volumes/boot/

ラズパイをMacターミナルからsshでリモート操作できるようにするため、touch ssh で空のsshファイルを作成する。


WiFiの設定


次に vi wpa_supplicant.confを実行して新規ファイルを作成しつつ以下の内容を書き込む。ただしWifiのSSIDWifiのパスワード は自分の環境のものに書き換えること。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
 
network={
 ssid="WifiのSSID"
 psk="Wifiのパスワード"
 key_mgmt=WPA-PSK
}

これでSDカードの設定はおしまい。ターミナルを閉じて、デスクトップに表示されているbootアイコンを選択してcmd + Eで安全に取り出そう。おっと、先にbootディレクトリから移動しておかないとEjectできないので注意だ!

今後WiFi環境が変わったらwpa_supplicant.confの設定を書き換えればよいだろう。


SSHで接続


SDカードを差しこんだらラズパイのPWR INの端子にUSBで電源供給をする。

しばらくすると自動でWiFi接続されるているはず。しかしラズパイのIPアドレスがわからないので、自分の使っているルーターの管理画面から接続状態を確認する必要がある。ルーター画面は人それぞれ違うので説明は省く。
私の環境では次のようになっていた。

IPアドレス ホスト名
192.168.100.145 raspberrypi

またラズパイのログインの初期設定は次のようになっている。

ユーザー名 パスワード
pi raspberry

以上の情報からsshでラズパイへでログインしてみよう。

$ ssh pi@192.168.100.145

パスワードにはraspberryを入力する。

ターミナル表示が次のように変わっていればSSHでラズパイにアクセス成功だ!
pi@raspberrypi:~ $ pwd
/home/pi

リモート操作を終了したいときはexitすれば良い。

今後のためにパスワードを変えておくことにする。
$ sudo passwd pi

基本的な設定は以上である。


おまけ #1 Vimで矢印キーが使えない


ラズパイに最初から入っているVimは vim-tiny という最小構成版のようで矢印キーが使えないらしい。

現在のVimをいったんアンインストールする。

$ sudo apt-get --purge remove vim-common vim-tiny

再度Vimをインストールすることで矢印キーが使えるようになった。

$ sudo apt-get install vim



おまけ #2 ホスト名の変更


sshでログインする時にIPアドレスでログインするのは面倒だ。IPアドレスが変わる場合もあり得るだろう。そこでラズパイをホスト名でSSHアクセス出来るようにしてみる。

ラズパイにログインしたら sudo vi /etc/hosts でホストファイルを編集する。
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       2 #←ここを書き換えた

そしてさらにsudo vi /etc/hostnameのホスト名も上記と同じものに変更する。

2というのがラズパイのホスト名だ。一文字だがこれでも立派なホスト名になる。

sudo rebootでラズパイを再起動する。

しばらくしたら、今度は先ほど設定したホスト名でログインしてみよう。ただしホスト名に続けて.localをつけなければならないことに注意しよう。
ssh pi@2.local

これでログインがとても楽になった!


おまけ #3 サンプルプログラムを試す


サンプルプログラムが用意されていたので実行してみる。

cd /opt/vc/src/hello_piでフォルダを移動し、./rebuild.shを実行する。

$ cat README

Building on Pi
++++++++++++++

To build the test apps on the pi, first build the libs:
make -C libs/ilclient
make -C libs/vgfont

then by entering each test app directory and run make. E.g.
  cd hello_world
  make
  ./hello_world.bin

Running ./rebuild.sh will rebuild the all libs and and apps.


Building on a different PC
++++++++++++++++++++++++++

If you want to build the samples on a different machine (cross-compile) then set:
SDKSTAGE=<path/to/firmware-directory> and CC=<path/to/cross-compiler>
before running make.

READMEによればhello_worldディレクトリへ移動し、./hello_world.binで実行可能なバイナリが出来上がっているという。
やってみよう。

$ cd hello_world
$ ./hello_world.bin
Hello world!

Hello world!に成功した!

冗談はさておき、他にもサンプルがたくさん収納されている。バリバリC言語といった感じの難しいコードがあったので機会があれば触れてみたい。


参考


* Oh no! A command line interface!
* Raspberry Pi の vi で矢印キーが使えるようにする
* Raspbian
* Raspberry PiでAvahi を使ってホスト名でアクセスする
* Renaming your Raspberry Pi - the 'hostname'




関連記事


* Raspberry Pi のセットアップ!モニター、キーボードなしでMacからSSH
* I2C通信でADコンバータの値を読み込む (Raspberry Pi zero)
* Raspberry Pi をAirPlayサーバーにしてオーディオ環境を快適にする!
* ラズパイオーディオシステムの省エネ化
* スピーカーエンクロージャー製作 (ALTEC 604-8H)
* ヘルムホルツ共鳴とバスレフポート設計
* 10日で作る!倒立振子ロボット
* I made a Self Balancing Robot in 10 days!
* はじめてのステッピングモーター (Raspberry Pi zero)