Raspberry Pi 3 Model Bの初期セットアップのまとめ

# 概要

Raspberry Pi 3を購入したので、そのセットアップ内容を備忘の為にまとめました。
将来的には電子工作で何かしら面白いことをやってみたいのですがネタが思付かないので、現時点ではOSのセットアップまでとなっています。

**環境**

* Raspberry Pi 3 Model B Rev 1.2
* RASPBIAN STRETCH LITE Version September 2017

**参考**

* [DOCUMENTATION > INSTALLATION] (https://www.raspberrypi.org/documentation/installation/)
* [[Ubuntu] apt-get まとめ] (https://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c)

# 準備

## OSのイメージファイルのダウンロード

[ダウンロードページ] (https://www.raspberrypi.org/downloads/raspbian/)よりOSのイメージファイルをダウンロードします。
ダウンロードしたのはRASPBIAN STRETCH LITEのVersion September 2017です。

> Version:September 2017
> Release date:2017-09-07
> Kernel version:4.9

## OSイメージファイルをmicroSDカードへ書き込む

書き込みには[Etcher] (https://etcher.io/)というツールを使用しました。
Windows版のインストーラーをダウンロードしてインストールします。
インストールが終わったらPCにmicroSDカードを繋げてEtcherを起動します。

OSイメージファイルを選択しmicroSDカードが繋がっているドライブを指定して書き込みを行います。

![e2.png](https://qiita-image-store.s3.amazonaws.com/0/22772/3fcd4345-0785-39c4-6450-a906d5cef4e3.png)


# セットアップ

本体にキーボード、モニター、LANケーブルを繋げておきます。
RaspberryPiにmicroSDカードを差し込み電源ゲーブルを繋げるとOSが起動します。
無事起動するとログインプロンプトが表示されるので初期ユーザーでログインします。

* 初期ユーザー: pi
* 初期パスワード: raspberry

## パッケージのアップデート

インストールされているパッケージを更新します。

```bash
$ sudo apt-get update
$ sudo apt-get upgrade -y
```

### vimのインストール

```bash
$ sudo apt-get install -y vim
```

アップデートが終わったらリブートします。

```bash
$ sudo reboot
```

## ファームウェアのアップデート

```bash
$ sudo rpi-update
```

アップデートが終わったらリブートします。

## 初期設定

raspi-configで初期設定を行います。
テキストベースのメニュー画面が表示されるので下記の設定を行います。

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

**ファイルシステムの拡張**

* `7 Advanced Options` ->
    * `A1 Expand Filesystem` -> OK -> ルートメニューに戻る ->
        * Finish -> Would you like to reboot now? -> YES

ここで一旦リブートします。

**piユーザーのパスワード変更**

* `1 Change User Password` -> OK
    * 新しいパスワードの入力 -> OK

**ロケール**

* `4 Localisation Options` ->
    * `I1 Change Locale` -> en_US.UTF-8、jp_JP.UTF-8にチェック -> OK
        * `Default local for the system environment:` -> en_GB.UTF-8 -> OK

* デフォルトのロケールをjp_JP.UTF-8にするとコンソール上で文字化けするので変えないようにしています。

**タイムゾーン**

* `4 Localisation Options` ->
    * `I2 Change Timezone` ->
        * `Geographic area:` Asia ->
        * `Time zone:` Tokyo -> OK

**キーボードレイアウト**

* `4 Localisation Options` ->
    * `I3 Change Keyboard Layout` ->
        * `Keyboard model`: Generic 105-key (Intl) PC ->
        * `Keyboard layout`: Other -> 
        * `Country of origin for the keyboard:` Japanese ->
        * `Keyboard layout`: Japanese (OADG 109A) ->
        * `Key to function as AltGr:` The default for the keyboard layout ->
        * `Compose key:` No Compose key -> OK

**SSHの有効化**

* `5 Interfacing Options` ->
    * `P2 SSH` -> YES -> OK

以上の設定を行いメニューのFinishを選択して終了します。
ここで一旦リブートします。

## rootのパスワード変更

rootユーザーにスイッチしてパスワードを変えます。

```
$ sudo su
# passwd
```

## ユーザーの追加

Windowsのターミナルから接続するためのユーザーを追加します。

```bash
$ sudo useradd -g pi -G sudo -m -s /bin/bash rubytomato
$ sudo passwd rubytomato
```

.profileに下記の行を追加してロケールを変更します。

```bash
$ sudo su - rubytomato
```

```text
export LANG=ja_JP.UTF-8
```

## ipv6の無効化

/etc/sysctl.confに下記の行を追加します。

```text
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
```

設定を反映させます。

```bash
$ sudo sysctl -p
```

## DHCPの設定

本体に固定IPを割り当てます。
/etc/dhcpcd.confの下記の設定を変更します。

```text
# Example static IP configuration:
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
```

dhcpcdを再起動します。

```bash
$ sudo systemctl restart dhcpcd
$ sudo systemctl daemon-reload
```

## SSHの設定

sshでログインできるユーザーを制限します。
/etc/ssh/sshd_configに下記の行を追加します。

```text
AllowUsers rubytomato@192.168.0.*
```

sshを再起動します。

```bash
$ sudo systemctl restart ssh
```

Windows側からターミナルまたはWSLのbashで接続できるか確認します。

```bat
$ ssh rubytomato@192.168.0.10
```

# 補足

## OSのバージョンを確認する

```bash
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
```

## パッケージダウンロードのミラーサイトを変更する

/etc/apt/sources.listを編集してミラーサイトを日本国内のサイトに変更します。
1行目をコメントアウトして、最後の2行を追加しました。

```text
#deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi

deb http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian stretch main contrib non-free
deb http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/ stretch main contrib non-free
```

設定を反映します。

```bash
$ sudo apt-get dist-upgrade
```

最新の情報は[Raspbian Repository Mirrors] (http://www.raspbian.org/RaspbianMirrors)で確認できます。

## ntpdateのインストール

```bash
$ sudo apt-get install -y ntpdate
```

インストールが終わったらNTPサーバーを指定して時刻合わせを行います。

```bash
$ sudo ntpdate ntp.nict.jp
```

この例では[ＮＩＣＴ公開ＮＴＰサービス] (http://jjy.nict.go.jp/tsp/PubNtp/index.html)を使用しています。