謝辞
こちらの記事を書くにあたり、下記の Qiita を非常に参考にさせて頂きました。
- Raspberry Pi Zero(W)のセットアップ
http://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573
この記事は上記などの記事をもとに、自分なりの手順で行った備忘録も兼ねて書いています。
対象
- RaspberryPi Zero W を入手したは良いがまず何をすれば良いかわからない人 (自分)
- mac を普段使っていて、セットアップするためだけにモニタやキーボードをつなげたくない人 (自分)
ゴール
- RaspberryPi ZeroW に Raspbian をインストールし、公開鍵で SSH 接続出来るようにする
物理的に準備するもの
- RaspberryPi ZeroW 本体
- セットアップに使う mac
- 適当な容量の microSD カード
- microSD リーダー・ライター
- ZeroW と mac をつなぐ microUSB ケーブル
- SSID とパスワードがわかっている 無線 LAN 環境
作業の流れ
- Raspbian のイメージをダウンロードする
- dd コマンドで microSD に書き込む
- mac のターミナルから SSH できるようにする
- ZeroW に microSD を挿して起動する
- SSH で ZeroW に入り無線 LAN のセットアップを行う
- raspi-config で microSD の領域をフルに使えるようにする
- vim をインストールする
- 無線 LAN IP アドレスを固定にする
- .ssh/config に設定を追加する
- 公開鍵で SSH に入れるようにする
- ついでに nginx とかインストールしてみる
Raspbian のイメージをダウンロードする
https://www.raspberrypi.org/downloads/raspbian/ から RASPBIAN JESSIE LITE の ZIP 版をダウンロードし、解凍します。拡張子が img のファイルができるはずです。
このファイルを次の手順で microSD に書き込むのでダウンロードした場所は覚えておきましょう。
dd コマンドで microSD に書き込む
- microSD をリーダー・ライタにセットして mac とつなげます
- ディスクユーティリティを起動して接続されている disk の情報を確認します
- microSD がマウントされていたら、アンマウントします
- ターミナルを起動しダウンロードしたイメージをファイルがあるディレクトリに移動します
- ディスクの情報を参考にして下記のコマンドを実行します
※ dd コマンドを使う際には if(転送元) と of(転送先) を間違えないように気をつけてください。意図せずファイルやディスクが破壊されても責任は負いかねます
[mac]
sudo dd bs=1m if=[転送元のイメージファイル] of=[転送先のデバイス] conv=sync
- ダウンロードしたイメージファイルが 2017-07-05-raspbian-jessie-lite.img
- ディスクユーティリティで確認した microSD の情報が disk2
というケースの場合は、下記のようになります。
[mac]
sudo dd bs=1m if=2017-07-05-raspbian-jessie-lite.img of=/dev/rdisk2 conv=sync
ここまでの手順で作成した microSD でひとまず起動は出来るようになります。次に mac から SSH で接続するための準備をします。
mac のターミナルから SSH できるようにする
-
イメージを書き込んだ microSD を改めて mac に接続します。boot というのが見えているはずです。
-
ターミナルを起動して boot に移動します。
例:[mac] cd /Volumes/boot
-
[RasPi] touch ssh
と入力します -
cmdline.txt
を開きrootwait
のあとに[RasPi] modules-load=dwc2,g_ether
と追記します。
下記は cmdline.txt 全文です。見やすさのため改行していますが実際には一文です。
[RasPi] dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=3de82442-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether
-
config.txt の最後に
dtoverlay=dwc2
と追記します。[RasPi] echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt
これで mac のターミナルから接続できる準備が整いました。
ZeroW に microSD を挿して起動する
ようやく ZeroW 本体の出番です。
先程までの手順で作成した microSD を ZeroW にセットして、mac と ケーブルで接続します。
ZeroW には 電源用の USB ポートと、I/F としての USB ポートがありますが、I/F の方につなぎます。
緑色の LED がチカチカしはじめますので1,2分くらい待ちましょう。
LED の点滅が落ち着いたら起動が完了しているはずです。
なお USB ハブなどを経由していると電力が足りなくなる可能性もあるので、その場合は mac と直接接続してみてください。
SSH で ZeroW に入り無線 LAN のセットアップを行う
ここまでの時点ではまだ ZeroW は 無線LAN などにはつながっていません。
ですが bonjour のおかげで mac から SSH で入ることはできます。
ターミナルから下記のコマンドで SSH で入れます。
[mac]
ssh pi@raspberrypi.local
初期パスワードは
raspberry
です。
SSH で無事に入れたらまずは 無線LAN のセットアップをしましょう。
アクセスポイントの SSID と パスワード を用意して下記のコマンドを実行します。
([SSID] と [PASSWD] は自身の環境のものに置き換えてください)
[RasPi]
sudo sh -c 'wpa_passphrase "[SSID]" "[PASSWD]" >> /etc/wpa_supplicant/wpa_supplicant.conf'
sudo wpa_cli reconfigure
上記のコマンドが成功したら
Selected interface 'wlan0'
OK
と表示されるはずです。
ここまでできたらすでに無線 LAN でネットにつながっているはずなので、適当に ping でも打って通るか確認すると良いでしょう。
raspi-config で microSD の領域をフルに使えるようにする
dd コマンドでイメージを書き込んだ場合は、基本的にもとのイメージがそのままディスクの領域になっているので、今のままでは microSD の領域が全て使えるようになっているわけではありません。
フルに使えるようにするには
[RasPi]
sudo raspi-config
を実行して
Advanced Option -> Expand Filesystem
を選択します。
その後、再起動するとすべての領域が使えるようになります。
再起動は
[RasPi]
sudo reboot
です。
raspi-config コマンドでは Locale の設定なども行えますので、必要に応じて設定してください。
vim をインストールする
vim をインストールするのは必須ではありませんが、個人的にはこの段階でやってしまったほうが、以降の手順の設定ファイルの書き換えがやりやすいので、この段階でインストールします。
[RasPi]
sudo apt-get update
sudo apt-get install -y vim
.vimrc という設定ファイルを作成し、下記のように記述します。
とはいえ単なる設定ファイルなのでご自由に。
set nocompatible
set backspace=indent,eol,start
無線 LAN IP アドレスを固定にする
IP アドレスを固定にするには
[RasPi]
/etc/network/interfaces
というファイルを編集します。
※ mac アドレスに応じてルーター側で設定する場合はこの項目の処理は不要です。
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
という箇所があるので下記のように編集します。
192.168.1.101
や 192.168.1.1
の部分は自身の環境に合わせて設定してください。
allow-hotplug wlan0
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
編集したあと、再起度します。
[RasPi]
sudo reboot
※ 自分の環境ではなぜか ifdown ifup ではフリーズしてしまいましたので、やむを得ず再起動しています。
再起動後は上記の設定の場合
[mac]
ssh pi@192.168.1.101
で SSH 接続が可能になります。
ここまでくれば、mac とつながっている USB ケーブルも不要になりますので電源を確保して外してしまいましょう。
.ssh/config に設定を追加する
公開鍵の設定のまえに、毎回 [mac] ssh pi@192.168.1.101
と打つのは面倒なので./ssh/config
に設定を追加します。
mac でホームディレクトリに行き[mac] .ssh/config
ファイルに下記の記述を追加します。
.ssh/config
がなければ作成します。
Host raspi0
HostName 192.168.1.101
User pi
これで以後は
[mac]
ssh raspi0
と入力すると
[mac]
ssh pi@192.168.1.101
と同じ事になります。
公開鍵で SSH に入れるようにする
mac のターミナルから ssh raspi0
で ZeroW に入ったあと、公開鍵の設定をしておくファイルを準備します。
※ 公開鍵の作成方法は割愛しますが ~/.ssh/id_rsa.pub
という公開鍵ファイルが作成されているものとします。
[RasPi]
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
このあと mac のターミナルに戻り
[mac]
cat ~/.ssh/id_rsa.pub | ssh raspi0 'cat >> .ssh/authorized_keys'
と実行すると、公開鍵の設定は完了です。
以後はパスワード無しで ssh raspi0
で SSH できるようになります。
ついでに nginx とかインストールしてみる
[RasPi]
sudo apt-get install -y nginx
ひとまず、これだけでOKです。
インストールが完了したらブラウザからhttp://192.168.1.101/
にアクセスすると、nginx の初期画面が見えるはずです。
最後に
ここまでの作業は外部に公開する際の定番的な作業はなにもしていないので、必要に応じて SSH のパスワードログインを禁止するとか、ちゃんとユーザーをつくるとかしてください。(そして教えてください)
これでひとまずベースとなる感じの設定は完了です。お疲れ様でした!
これからまともに使えるように勉強します!