Raspberry Pi 3を買ってMacを使ってWiFi接続とSSHの接続するまで

ラズパイ初心者のメモです。
以下をした時のメモ

+ 商品と周辺機器の購入
+ SDカードにOSの書き込み
+ 起動
+ SSH設定
+ WiFi設定

# 買ったもの

自分は秋葉原に行って色々現地調達してきました。
通販でも売っているので買う場所はどこでも良いかと思います。

+ RaspberryPi3。WiFiついてるしとりあえず新しいものの方が良いだろうということで。。。
+ MicroUSBケーブルの充電器(2A)。本当は2.5A推奨らしいですが、あまり2.5Aの電源がないので大体の人は2A使っているみたいですよーと店員さんは言ってました
+ RaspberryPi3のケース。これはまあ買わなくても良いのですが、基盤をそのまま置くのは個人的に怖かったので購入。
+ USBケーブル接続のキーボード
+ USBケーブル接続のマウス
+ MicroSDカード8Gbyte。クラス10。必要に応じてアダプタも
+ HDMIケーブル

# 既にあったので買わなくて良かったもの

+ HDMI入力を受け付けるディスプレイ。自分の場合、テレビがHDMI入力を受け付けていたので別途買う必要はありませんでした

# SDカードにRASPBIAN(OS)をコピーする

以下を参考にさせて頂きました。

[Raspberry Pi 2にRASPBIAN JESSIEをインストールする for Mac OSX](http://qiita.com/moutend/items/7ede458aec97056dfd5e)

まずはダウンロードページから最新のRASPBIANのイメージ(ラズベリーパイ用のOS)を取得します。

```bash
# 最新のRASPBIANを取得
$wget https://downloads.raspberrypi.org/raspbian_latest

# SHA1でファイルを確認 
$openssl sha1 2016-03-18-raspbian-jessie.zip
SHA1(2016-03-18-raspbian-jessie.zip)= db41f2a8c6236c0ca9150fe4db2017c09e7871fb

# 解凍
$unzip 2016-03-18-raspbian-jessie.zip
```

MacにSDカードを挿してからマウント先を確認します。

```bash
$diskutil list
```

次にSDカードをFAT32でフォーマットします。
以下はSDカードのマウント先が`/dev/disk3`という想定

```bash
$ diskutil eraseDisk FAT32 RPI /dev/disk3
```

フォーマット後、SDカードをアンマウントします。(ddコマンドでの書き込みのため)

```bash
$diskutil unmountDisk /dev/disk3
```

最後に`dd`コマンドでSDカードにイメージを書き込みます。
幾つかのブログや記事では`bs=1024m`のオプションを指定して実行する記載がありましたが、自分の環境(OSX El Capitan 10.11.4)で上記ブロックサイズ指定をするとMacが落ちるという事象が2度発生したので`bs=1m`で指定して実施しました。

```bash
$sudo dd bs=1m if=2016-03-18-raspbian-jessie.img of=/dev/rdisk3
```

# Raspberry Pi3の起動

OSイメージを書き込んだMicroSDカードをラズパイに挿入し、その他周辺機器(ケーブル、マウス)を接続後、MicroUSBの充電器を差します。

すると以下のように起動できます。

![CetodtBWAAQJpxq.jpg](https://qiita-image-store.s3.amazonaws.com/0/20193/382478b4-602f-ae96-ed9f-94542dc63874.jpeg "CetodtBWAAQJpxq.jpg")


ネットワークについて自分の場合、最初はLANケーブルでラズパイとルーターに接続し、インターネットへ接続できることを確認しました。

# MacからSSHで接続する

ラズパイ上でTerminalアプリを起動してIPアドレスを確認します。

```bash
$ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:88:37:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.11/24 brd 192.168.11.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::843a:39fb:1338:440d/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
    link/ether b8:27:eb:dd:62:ab brd ff:ff:ff:ff:ff:ff
    inet6 fe80::ba27:ebff:fedd:62ab/64 scope link
       valid_lft forever preferred_lft forever
```

次にSSHを有効にします。設定は`raspi-config`コマンドから実施できます。

```bash
$sudo raspi-config
```

以下のようにターミナルから設定できます。

![Screen Shot 2016-03-29 at 9.29.09 PM.png](https://qiita-image-store.s3.amazonaws.com/0/20193/275f664d-96c0-c026-7850-791158237c65.png "Screen Shot 2016-03-29 at 9.29.09 PM.png")

「9 Advance Options」->「A4 SSH」->「Enable」

これでsshdのサービスが起動しているはずなので同じネットワーク内のMacから`ip addr`コマンドで確認したIPアドレスでSSH接続できるか確認してみます。なお、初期ユーザー名は **pi** 、初期パスワードは **raspberry** となっております。

```bash
$ssh pi@192.168.11.11
```

これでssh接続できるかと思います。
あとは認証を公開鍵にしたり、hostname設定などをするとより簡単にログインできるようになるので必要に応じて適宜設定します。
（こちらでは割愛)

# WiFi接続する

以下参考にさせて頂きました。

[raspberry pi2 で 無線 LAN 設定まで](http://qiita.com/hotchpotch/items/dfcb9bd02baf67223eb0)

まず、wlanのネットワークインターフェースが認識されているか確認。

```bash
$ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:88:37:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.11/24 brd 192.168.11.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::843a:39fb:1338:440d/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
    link/ether b8:27:eb:dd:62:ab brd ff:ff:ff:ff:ff:ff
    inet6 fe80::ba27:ebff:fedd:62ab/64 scope link
       valid_lft forever preferred_lft forever
```

wlan0というのがWiFi用のネットワークインターフェースですね。
SSIDやパスフレーズなどを設定していないので当然IPアドレスは取得できていません。
CLIから上記を設定します。
以下コマンドのSSIDとPASSPHRASEの部分は自宅などのSSIDと対応するパスフレーズを設定してください。

```bash
$sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'
```

以下のように生パスワードがコメントアウトで記載されるので削除しましょう。

```bash
$sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="hoge-fuga"
	#psk="xxxxxx"
	psk=eca950...
}
```

シャットダウンしてLANケーブルを抜き、起動後、自動でWiFiによるネットワーク設定がされるか確認します。

```bash
# シャットダウン
$sudo shutdown -h now

# LANケーブルを抜く

# 電源を入れてラズパイを起動

# wlan0の箇所でIPアドレスが取得できるか確認
$ip addr
(一部略)
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:dd:62:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.12/24 brd 192.168.11.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fedd:62ab/64 scope link
       valid_lft forever preferred_lft forever
```

設定がうまくできていれば、DHCPによって任意のIPアドレスが設定されているかと思います。

Macから同じIPアドレスで接続したいのでネットワーク情報を固定化します。
IPアドレスなどの設定は自分の環境のものを設定してください。

```file:/etc/network/interfaces
...
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.11.12
netmask 255.255.255.0
gateway 192.168.11.0
...
```

再起動し、同じIPアドレスが設定され、Macから同じようにSSHログインなどできればOKです。

これでWiFi接続ができて電源がある場所であればどこにでも置けますね!

お疲れさまでした!