RaspberryPiでディープラーニング 〜OSインストール編〜

# RaspberryPiについて

今回は `RaspberryPi3 Model B+` を利用します。
<img width="1136" alt=" 2019-10-26 13.14.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/d19cd7d5-8b2d-3806-c031-0d5dab2d8830.png">

## RaspberryPi3 Model B+のスペックについて

| 項目       |       性能 |
|:-----------------:|:------------------:|
| SoC              |Broadcom BCM2837B0|
| CPU              |1.4GHz クアッドコア Cortex-A53（ARMv8、64bit）|
| GPU              |デュアルコア VideoCore IV® 400MHz（3D 300MHz）<br>OpenGL ES 2.0対応、ハードウェアOpenVG対応、1080p30 H.264 high-profileデコード<br>1Gピクセル/秒、1.5Gテクセル/秒、24GFLOPS|
| メモリー            |1GB DDR2 450MHz 低電圧 SDRAM|
| 電源              |Micro USB Bソケット 5V2.5A / 2.54mm ピンヘッダー / PoE（要オプションPoE HAT）|
| 消費電力（本製品単体） |アイドル：約2.3W、ストレス：約6W|

# RaspberryPiの初期設定について

## 1. OSのダウンロードについて

[こちら](https://www.raspberrypi.org/downloads/)のサイトからダウンロードを行います。

今回は、`NOOBS`を利用します。
画像の左側の`Offline and network install`の`Dounload ZIP`をクリックします。
サイズが大きいので環境によっては、だいぶ時間がかかる可能性があります。
<img width="947" alt=" 2019-10-26 9.09.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/7b6d9fe1-4463-1c24-6060-9cb798db8b97.png">

### 別のインストールパッケージについて
- NOOBS ： Raspbian等の簡単なインストーラー
- Raspbian ：Raspberry Piの公式オペレーティングシステム
- Raspberry Pi Desktop ： Raspberry Piの環境をWindowsやMacで構築するための物  
※Ubuntu MATEやWindows10 IoTなどのサードパーティー製のOSもインストールすることが可能

## 2.SDカードのフォーマット
macとWindowsで操作が異なります。
※使用するSDカードは64GBを想定しています。

- mac  
ディスクユーティリティで`消去`→`フォーマット(MS-DOS)`を行う
- Windows  
[SD Memory Card Formatter](https://www.sdcard.org/downloads/formatter/)を利用し、内容を削除します。  
[guiformat.exeのダウンロード](http://www.ridgecrop.demon.co.uk/guiformat.exe)を行い、ツールを起動します。  
SDカードのドライブを指定し、開始します。

## 3.OSイメージをSDカードに書き込み
ダウンロードしたNOOBSのZIPファイルを解凍します。
解凍した`NOOBS_vX_X_X`直下の全てのファイルをSDカードへコピペします。

## 4. 設定ファイルの編集
VNCインストール用の設定およびsshの設定を行います。

### VNCインストールの設定
VNCとは、リモートディスクトップ機能でWindowsやMac上で画面を表示できる機能です。
SDカードの「recovery.cmdline」ファイルを編集します。
デフォルトでは、ディスプレイやキーボードを接続した状態でインストールを行う`quiet`が指定されているので、`vncinstall`に変更する。
※ **ディスプレイやキーボードを利用してインストールを行う方は変更不要**です。

```recovery.cmdline(旧)
runinstaller quiet ramdisk_size=32768 root=/dev/ram0 init=/init vt.cur_default=1 elevator=deadline sdhci.debug_quirks2=4
```

```recovery.cmdline(新)
runinstaller vncinstall ramdisk_size=32768 root=/dev/ram0 init=/init vt.cur_default=1 elevator=deadline sdhci.debug_quirks2=4
```

### sshの接続を有効にする
SDカードの「os」 → 「Raspbian_Full」 → 「partition_setup.sh」を編集します。
デフォルトでは、sshが無効になっているため、`umount /tmp/1`の直前で`echo "ssh" >/tmp/1/ssh`を追加する。

```partition_setup.sh(旧)
　　　　・
　　　　・
　　　　・
    sed -i '1 s|.*|& sdhci.debug_quirks2=4|' /tmp/1/cmdline.txt
  fi
fi

umount /tmp/1

```

```partition_setup.sh(新)
　　　　・
　　　　・
　　　　・
    sed -i '1 s|.*|& sdhci.debug_quirks2=4|' /tmp/1/cmdline.txt
  fi
fi

echo "ssh" >/tmp/1/ssh

umount /tmp/1

```

## 5. RaspberryPiの電源投入
イーサーネットケーブルを接続し、RaspberryPiの電源を投入します。

### ※ディスプレイやキーボードを利用してインストールをする方  
ディスプレイやキーボードを接続し、電源を入れてください。
手順は、[9.OSのインストール](# 9.OSのインストール)まで飛ばしてください！


## 6.VNC Viewerのダウンロード
[Real VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/)をダウンロードする

## 7.RaspberryPiのIPアドレスを検索する
自分のIPアドレスを確認する。

- コマンドで下記の文を実行する  
Windows : `ipconfig`  
Mac : `ifconfig`

基本的には、順番にIPアドレスを割り振るため、下記のアドレスの次のアドレスへの接続を試みる。
Windows : IPv4アドレスのアドレス 
Mac : 「en0:（繋がっているネットワーク）」の「inet」のアドレス

## 8.Real VNC Viewerによる接続
上記手順で確認したアドレスに対してアクセスを試みる

正常に接続できると、下記のような画面が現れる。
<img width="797" alt=" 2019-10-26 12.57.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/f965f7a9-73ce-05e4-19b5-9e389e6dddda.png">

## 9.OSのインストール
`Raspbian Full`を選択し、Languageを`Japanese`に変更し、キーボードも`jp`になっている事を確認する。
※NOOBSを利用する事で、複数のOSを導入する事が可能だが、今回は「Raspbian」のみとする。

上部の`Install(i)`ボタンを押下し、インストールを開始する。
メモリーカードの書き込み速度にもよるが、少し時間がかかります。

## 10.インストールの完了
下記のような画面が表示されるとインストールは完了です。
<img width="799" alt=" 2019-10-26 13.15.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/bfbd7c0c-0469-0788-2c9e-d144c8aba8a8.png">
OKボタンを押すと、「Raspbian」が起動します。
ブートするOSの選択画面が出た場合は、`Raspbian`を選択してください。
※ RaspbianのVNC設定は行なっていないため、VNC接続はここで終了します。
※ **ディスプレイやキーボードを利用している方 は、再起動後、GUIが表示されていると思いますので、[初期設定の最終工程](#初期設定の最終工程)まで飛ばして頂いて構いません。**

## 11.RaspbianのVNC設定について
ssh接続を用いてVNC設定を変更します。
先ほどのIPアドレスを利用してsshの接続を行います。

デフォルトのユーザ名とパスフレーズは以下のように設定されています。
・ユーザ名 : `pi`
・パスフレーズ : `raspberry`

- macの場合  
sshがデフォルトで使用できるため、ターミナルを使用します。  
`ssh pi@168.192.XX.X`で接続し、passwordを聞かれた場合は、上記のパスフレーズを入力します。
- Windowsの場合  
「Tera Term」等のssh接続ツールを使用します。
ユーザ名やパスフレーズの入力を求められた場合は、上記の物を利用します。

### 接続が完了しているか確認を行う
`ls`コマンドや`pwd`コマンドを実行して、表示されれば、接続は完了しています。

## 12.起動時にVNCのサーバを有効にする設定を行う
1. `sudo raspi-config`を実行
2. 表示されたメニューの`5 Interfacing Options`を選択  
<img width="861" alt=" 2019-10-26 13.45.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/355185d5-06d7-16e0-86d8-d477332bf8ed.png">
3. `P3 VNC`を選択  
<img width="858" alt=" 2019-10-26 13.47.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/85832aaa-f9cf-9381-a8d8-96ce8e8eec21.png">
4. 起動時にVNCサーバを有効にするために、「はい」を選択  
※選択肢は「tab」又は「矢印キー」で変更可能です。  
<img width="441" alt=" 2019-10-26 13.48.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/d673ef48-09ef-80de-e98d-9acc2a7383d2.png">
5. メニューに戻り、「tab」キーで「Finish」を選択 
<img width="860" alt=" 2019-10-26 13.51.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/8ecf5fa1-d919-7708-d2ef-74649295e47b.png">
6. `sudo reboot`を実行  

## 12.VNC接続の確認
[8.Real VNC Viewerによる接続](#8.Real VNC Viewerによる接続)と同様に「Real VNC Viewer」を利用し、接続を確認します。
認証情報を聞かれた場合は、下記ユーザ名・パスフレーズを利用しましょう。
・ユーザ名 : `pi`
・パスフレーズ : `raspberry`

正常に接続できていた場合は、GUIが表示されているかと思います。

# 初期設定の最終工程
## はじめに出ている「Warning」について
認証情報が初期設定のままという警告です。
「OK」を押して問題ありません。
## 「Welcome」メニューについて
自身の情報を入力しましょう。
パスワードの更新を求められますので、入力しましょう。
アップデートも行なっておきましょう。
※ここでも時間がかかります。

# 初期設定終了
これで、初期設定は終了となります。
とても長い時間お疲れ様です。
記事も長くなってしまいました。