Raspberry Pi 3 Model B+にWireless＆HeadlessでLinuxをインストールする。

#きっかけ

Raspberry Pi 3 Model B+を遊ぼうとしたけどデスクトップ周りは既にWireless化されていてLANポートなんて無いし、ルーターまで行けばLANポートはあるけどモニタがありません。というかルーターの周りには空調設備が無いので、設定している最中に寒さで凍え死んでしまいます。

ということで、RaspberryPiに繋がる線は電源のみというWireless&Headlessな環境でRaspberry Pi 3 Model B+をインストールする事になりました。

#必要なもの
RaspberryPi3B+
Windows10PC
OSイメージ[Raspbian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/)
OSイメージをSDカードに書き込むソフト[etcher portable](https://www.balena.io/etcher/)
PING打ってMACアドレスを調べるソフト[NetEnum](https://www.e-realize.com/netenum5.html)
SSHで接続するソフト[RLogin](http://nanno.dip.jp/softlib/man/rlogin/)

#手順
##OSのインストール
###OSイメージの書き込み
HeadlessなのでOSイメージはLiteを選択しましょう。
etcher portableを起動してOSイメージ`2018-11-13-raspbian-stretch-lite.img`を選択し、SDカードを選択し、`Flash！`で書き込みを行います。
![キャプチャsel.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/7df9c4bb-42b3-2eb9-71ae-f9ac517d159f.png)

##OSインストーラーの設定
`ssh`と`wpa_supplicant.conf`の２つのファイルをboot直下に作ります。
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/4c049ec8-0c9e-90d9-b26d-6637cb9f7465.png)

###Headless:SSH接続を許可
SDカードのインストーラー領域に`ssh`という名前の空ファイルを作ります。

###Wireless:無線LAN接続を許可
SDカードのインストーラー領域に`wpa_supplicant.conf`という名前のファイルを作ります。
ファイルの中身は無線LANのSSIDが`SSID_nomap`、SSIDのパスワードが`SSIDpassword`の場合は以下のようになります。

```wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
  ssid="SSID_nomap"
  psk="SSIDpassword"
  scan_ssid=1
}
```
###アクセスポイントのSSID確認と設定
繋ぎたい無線LANのSSIDを確認して、ステルスモードを解除しておきます。（BaffaloだとANY接続？を許可するみたいな設定）
`scan_ssid=1`にするとステルスのままで大丈夫なはずですが、インストール時には失敗することがあるのでステルス解除しておきましょう。
DHCPを使って居ない場合はDHCPを有効にしておきます。これも初回時にIP固定する方法がないためです。

###RaspberryPi電源投入
SDカードをPCから取り出しRaspberryPiに差し込んだ後、RaspberryPiに電源を投入します。
そうするとPWRランプが赤・ACTランプが緑に光り、数分するとACTランプが消える事でインストール完了の合図となります。
初回はインストーラーが走るので時間が掛かりますが、2回目からは数秒で終わります。

## SSHによる接続

###接続先IPを検索

> Windows10でもmDNSが使えると聞いたのですが使えなかったので、このような形で検索します。

`NetEnum`を起動してメニューの`検索`を選び、DHCPのIP範囲を指定して`検索`ボタンを押します。
![キャプチャNetEnum.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/f78936e7-b06a-7aff-2792-b72fa8e3404f.png)
ベンダー名に`Raspberry Pi Foundation`と出るので、それが目的のIPアドレスになります。
今回は`10.98.78.140`です。

###SSHで接続
`RLogin`を起動して`ファイル(F)`>`サーバに接続(N)`>`新規(N)`をクリックして設定します。
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/f2cd7533-8cf4-d1c9-e1f2-1c1c75da8184.png)
エントリーコメントに`raspberrypi`
プロトコルに`ssh`
ServerAddressに先ほど調べた`10.98.78.140`、
UserNameは`pi`、
Passwordは`raspberry`に設定して、`OK`＆'OK'をクリックします。
下のような画面が出たら成功となります。
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/b01409a4-108b-336e-3856-c396d07dc0f6.png)

###パスワード変更
上の画面で"piユーザーのパスワードを変えろ"と言われていますので変えます。
RLoginの画面で下のコマンドを打つと

```sh
$ sudo raspi-config
```
下の画面が出るので、１番を選んでパスワードを変更します。
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/109103/876e553a-ea83-2f45-c3ac-0051bdeb7df8.png)
パスワードを変更したら`RLogin`のパスワードも忘れずに変更しておきましょう。

他に設定しておいた方が良いと思うのは4.Locationと8.updateくらいでしょうか。
どうせ近いうちにAnsibleとかで設定するようになると思いますのであまり深く入らなくてもよいと思います。

###IPアドレス固定化
RLoginで以下のコマンド打ってファイルを編集します。

```sh
$ sudo nano /etc/dhcpcd.conf
```

ファイルの最後に以下の設定を加えてIPアドレスを固定化します。
次回からはRaspberryPiへの接続アドレスが`10.98.78.5`になるのでRLoginのServerAddressも変更しておきましょう。

```/etc/dhcpcd.conf
interface wlan0
static ip_address=10.98.78.5/24
static routers=10.98.78.1
static domain_name_servers=10.98.78.1
```

#おしまい。
これで最低限のインストール作業は終わりです。
電源1本で完結するのは本当に手軽になりました。

Enjoy Raspberry Pi!