Raspberry Pi を動かそう（RaspbianOS編）

本記事は Raspberry Pi に RaspbianOS をセットアップする際の手順を記した備忘録です。
なお、OS起動後の手順にデバイス固有の特筆すべき点はないので、詳細については省略しています。
<br/>**[PC]**

|    |                 |
|:----|:----------------|
|モデル|MacBook Pro (Retina, 15-inch, Mid2014)|
|OS|macOS Sierra ver 10.12.6|
|メモリ|16GB|
<br/>**[Raspberry Pi]**

|    |                 |
|:----|:----------------|
|モデル|Raspberry Pi 3 Model B (日本製)|
|SDカード|Transcend 32GB microSDHC Class10 UHS-I|
|キーボード|ELECOM TK-FCM084BK (有線)|
|マウス|ELECOM M-XGL10UB Series EX-G (有線)|
|電源|公式 Raspberry Pi3 アダプタ 5.1V/2.5A|
|ディスプレイ|公式 7'' Touchscreen Display (element14製)<br/>　- 電源は本体GPIOピン(5V)より供給。|

## (準備)有線LANへの接続について
Raspberry Pi3 には無線LANモジュールが組み込まれています。
そのため、OSセットアップ作業においても、またその後のOS設定作業においても有線LAN環境は必要ありません。

作業開始前に、使用する無線LANの「SSID」および「暗号化キー（パスワード）」を調べておきます。

## (準備)SDメモリーカードについて
購入するSDメモリーカードには一番注意を払いました。
様々なサイトで**「相性」**問題が語られており、安さにつられておかしなものを選んでしまうと結局高くついてしまうことが予想されたためです。

[Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ](http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_microsd_card_stable/)
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_microsd_card_stable/

今回は、上記のサイトを参考にTranscend製のSDメモリーカードを購入しました。
また、本稿に記載する内容ではありませんが、Windows 10 IoT Core を導入する際にも参考にさせてもらいました。
（そちらでは TOSHIBA製のSDメモリーカードを購入しました）

## Raspbian OSイメージのダウンロード
最新のOSディスクイメージファイルをダウンロードします。
ただし公式サイトは非常に重く、ダウンロードにとても長い時間がかかる恐れがあります。
日本国内のミラーサイトへアクセスして、イメージファイルをダウンロードしてください。

公式サイト
http://www.raspberrypi.org/downloads/
日本のミラーサイト
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

ダウンロードしたzipファイルを展開し、書き込み用のimgファイルを取り出しておきます。
　例．zipファイル： 2017-11-29-raspbian-stretch.zip
　　　imgファイル：2017-11-29-raspbian-stretch.img

zipファイルは2GBを下回る程度ですが、展開後のimgファイルのサイズは5GB近くあります。
展開先のディスクの空き容量には注意してください。

## SDメモリーカードの初期化（フォーマット）
OSの標準ツールでも初期化（フォーマット）は可能ですが、SDメモリーカードに最適化されていないために性能が低下する可能性があります。
そのため、下記サイトからダウンロードした「SD Card Formatter」を使って初期化（フォーマット）します。

[SD Card Formatter](https://www.sdcard.org/jp/downloads/formatter_4/)
https://www.sdcard.org/jp/downloads/formatter_4/

「InstallSD_CardFormatter0500.mpkg」のようなファイル名でダウンロードされるので、ダブルクリックしてインストーラを起動します。
その後はインストーラの指示に従ってインストールを進めます。

インストールしたSD Card Formatterを起動してSDメモリーカードをPC本体のカードスロットへ差し込むと、次のような画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/e8c247b0-6c7e-5f1d-53d9-59c9a71e039c.png)
**フォーマット**ボタンをクリックして初期化（フォーマット）を実施します。
通常はオプションを変更する必要はありませんが、完全に内容を消去してから使用したいときは**上書きフォーマット**を選択します。


## SDメモリーカードへの書き込み
**1. SDメモリーカードのディスクデバイスを調べます。**

```bash
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            499.4 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +499.0 GB   disk1
                                 Logical Volume on disk0s2
                                 Unencrypted

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:                  Apple_HFS データディスク          3.0 TB     disk2s2

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS バックアップディスク    2.0 TB     disk3s2

/dev/disk4 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.0 GB    disk4
   1:             Windows_FAT_32 RASPBIAN                32.0 GB    disk4s1
```
上記は、32GBのSDメモリーカードをカードスロットに指している場合の表示例です。
**/dev/disk4**がSDメモリーカードであることがわかります。
（サイズや初期化時に付けたラベル名などから正確に判断してください）
<br/>
**2. ディスクをアンマウントします**
SDメモリーカードのディスク（ここでは**/dev/disk4**）をアンマウントしておきます。

```bash
$ diskutil umountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
```
　
**3. ディスクイメージを書き込みます**
SDメモリーカードのディスクへ、ダウンロードしたディスクイメージ（imgファイル）を書き込みます。
Password: と表示されたら、PCの管理者ユーザのパスワードを入力します。

```bash
$ sudo dd bs=1m if=2017-11-29-raspbian-stretch.img of=/dev/disk4
Password: {管理者パスワード}
```

書き込みが完了するまで相当に時間を要しますが、**control+T**キーの押下で下記のような「書き込みの進捗状況」を表示させることができます。

```bash
4692+0 records in
4692+0 records out
4919918592 bytes transferred in 1796.092185 secs (2739235 bytes/sec)
```

書き込みが終了するとプロンプト表示に戻ります。

##### 【オプションの説明】
##### bs=1m

* 一度に読み書きするデータサイズとして「1MB」を指定しています。<br/>
原理的には大きい値を指定するほど読み書きの速度が向上していくはずですが、あまり大きな値を指定しても大きな効果は期待できません。　また、指定したサイズ分のメインメモリがコマンド実行中に占有されることには注意が必要です。<br/><br/>
しかし他にもっと重要な問題があります。<br/>
**転送処理中に読み取り元ディスクで読み取りエラーが発生した場合、転送先のディスクにて指定したサイズ分のメモリブロックが「破損状態」となり、使用できなくなってしまう点です。**<br/><br/>
たった1byteの読み取りエラーでSDメモリーカード上の大半が使用不能となるのは大問題ですので、ここでは「1MB」を指定しています。<br/>
それでも不安な方はもっと小さな値を指定していただき、莫大な転送時間と引き換えに安全を手にされた方が良いと思います。

##### if=2017-11-29-raspbian-stretch.img

* 入力ファイルとして、ダウンロードしたzipファイルを展開して取り出したイメージファイル（img）を指定します。

##### of=/dev/disk4

* 出力先となるSDメモリーカードのディスクデバイスを指定します。

<br/>
**4. ディスクを取り出します**

```bash
$ diskutil eject /dev/disk4
Disk /dev/disk4 ejected
```
書き込みが終了したら、**eject**してからSDメモリーカードをカードスロットから取り出します。

## SDメモリーカードの取り付けと Raspberry Pi の起動
![15138680532090.jpg](https://qiita-image-store.s3.amazonaws.com/0/90456/32b25861-8897-c8d3-888e-b3b54fd41051.jpeg)
上記は、[公式] 7''Touchscreen Display の上に取り付けたRaspberry Pi 3 です。
分かりづらいですが、写真中央のDSIフレキシブルフラットケーブルのコネクタ下にSDメモリーカードが挿入された状態です。

Raspberry PiのカードスロットにSDメモリーカードを挿入した後、電源を入れてください。
書き込みが成功している場合は、Raspbian OS の初期起動が始まります。

## 無線LANの設定
初期起動の後、自動的にデスクトップ画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/f471f464-8b52-517b-f2a0-42bc41a6d5de.png)

右上に表示されているネットワークアイコンをクリックすると認識しているSSIDが表示されるので、接続先のSSIDをクリックします。
「Pre Shared Key」の入力ダイアログが表示されたら、暗号化キー（パスワード）を入力して「OK」ボタンをクリックします。

無事に接続できたらネットワークアイコンの表示が切り替わります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/4839ffaa-09ef-8318-78d6-b25c68237c3a.png)


## 画面の向きを上下反転させる
「公式 7'' Touchscreen Display」へ接続している場合、デスクトップ画面全体の向きが上下反転状態となります。

[RASPBERRY PI DISPLAY TROUBLESHOOTING - MY SCREEN IS UPSIDE-DOWN!](https://www.raspberrypi.org/documentation/hardware/display/troubleshooting.md)
https://www.raspberrypi.org/documentation/hardware/display/troubleshooting.md

向きを変更するため、```boot/config.txt```の内容を修正します。

```bash
$ sudo vi /boot/config.txt
```
config.txt の最後には次の内容を追加します。

```
# Screen is upside-down
lcd_rotate=2
```
変更したファイルを保存してから、OSを再起動します。

## 言語・地域などの設定
言語や地域などを変更するため、「Raspberry Pi Configuration」画面を表示します。
メニューバー左端のラズベリーアイコンをクリックし、[Preferences]-[Raspberry Pi Configuration]をクリックします。

「Localisation」タブをクリックして、下記の画面のように設定します。
再起動後、設定した内容が反映されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/fe9ec710-edf0-db58-b8f0-ee275294a682.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/547d489c-ff4d-cf31-d4c3-6ee373837aa1.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/22e4e090-6ea2-b7ad-8da1-45efbd461160.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/90456/212276cb-6119-a8f3-076f-3b6c507268f5.png)



## OSパッケージの更新
インストール直後ですが、念のためパッケージリストとインストール済みパッケージの全てを最新状態にしておきます。

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

上記コマンドの説明については、下記のサイトに分かりやすい形で記載されています。
（このようなサイトの存在は非常にありがたいことです）

[Raspberry Pi パッケージのアップデート方法](http://my-web-site.iobb.net/~yuki/2017-07/raspberry-pi/update/)
http://my-web-site.iobb.net/~yuki/2017-07/raspberry-pi/update/

## 日本語入力パッケージの導入
Google 日本語入力のオープンソース版である「Mozc」および入力メソッドフレームワークである「iBus」を導入します。
同じ入力メソッドフレームワークである「uim」も一考しましたが、GNOMEとの親和性が上らしいので「iBus」を選択しています。

```bash
$ sudo apt-get -y install ibus-mozc
```
インストールが終了してプロンプトが表示されたら再起動します。