IoTitでRaspberry PiにRaspbianを書き込む

はじめまして。
最近Raspberry Piを使う機会があったので、備忘録がてら記事にしておきます。

今回の記事では、IoTitを使用したRaspberry PiへのRaspbianの書き込みを行います。


# 使用したもの
1. MacBook Pro（macOS Mojave 10.14.6）
1. Raspberry Pi 3 Model B+
1. microSDカード
1. SDカードリーダー


# IoTitとは
XSHELLによって開発されたオープンソースのデバイスフラッシュツールです。

[公式ページ](https://camp.isaax.io/ja/tips-ja/raspberry-pi/iotit-news-release)には下記のように説明されています。
>IoTitとは、SBCを初期化しOSのインストールから各種設定までを一度に行うOSPです。
以下、機能の一覧です。
- OSのインストール
- メモリーへの書き込み
- user / pwd 設定
- インターネット接続設定
- sshのon/off設定
- wi-fiの設定
- IPアドレスの設定
※2019年2月で対応しているSBCは、NanoPi NEO, Raspberry Pi, Intel Edison, BeagleBoneの4種です。

今回はこのIoTitを使用して、ラズパイにOSを書き込んでいきます。


# IoTitのインストール

[github](https://github.com/xshellinc/iotit)に従いインストールしていきます。

### VM VirtualBox と Extension Pack のインストール
IoTitにはVirtualBoxとVirtualBoxのExtension Packが必要なので、先にこれらをインストールします。

VirtualBoxは[Oracle VM VirtualBox](https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html)からご自身のOSに合ったものをダウンロードし、インストールしてください。
インストールが終わったら、VirtualBoxの[Extension Pack](https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html#extpack)もインストールしましょう。

### IoTitのインストール
macでhomebrewを使用している方は下記コマンドでインストールできます。
homebrewのインストール方法は[こちら](https://brew.sh/index_ja)。

```Bash
$ brew tap xshellinc/iotit && brew install iotit
```

windowsやlinuxの方は、[IoTitのバイナリ一覧](https://github.com/xshellinc/iotit/releases)にあるバイナリからインストールするのが良さそうです。

```Bash
$ iotit -v
# iotit version 0.4.7
```
このようにバージョンが表示されればインストール完了です。


# IoTitの実行
実行の前に、PCにmicroSDを接続します。
**間違ったメディアを選択するとそのメディア内が初期化されてしまうため、OSを書き込みたいメディアのみを接続することをオススメします。**

IoTitは対話型コマンドです。
表示された選択肢に対して適切なものを選択してきます。
選択肢を間違えた場合や中断したい場合は`Ctrl+C`で中断できます。

```Bash
$ iotit
```

### virtual machine(VM)の準備

##### 1. シングルボードコンピューター（SBC）の選択
実行すると最初に対応しているSBC一覧が表示されます。

```
   [1] Raspberry Pi
   [2] Espressif ESP
   [3] Intel® Edison
   [4] Nano Pi
   [5] Beaglebone
   [6] Toradex Colibri iMX6
   [7] ASUS Tinker Board
   [8] DragonBoard 410c
   [9] Custom board
[?] Select device type: 1
```
今回はRaspberry Piなので`1`を入力します。

##### 2. OSの選択
次にRaspberry PiにどのOSをインストールするか選択します。

```
   [1] Raspbian Lite
   [2] Raspbian with PIXEL
[?] Please select an image: 2
```
今回はデスクトップ版を使用したいので`2`を入力します。
するとVMの準備とOSのダウンロードが始まります。

### カスタム設定
OSイメージのダウンロードが終了したら中身の設定に入ります。

```
[?] Would you like to configure your board? (y/yes, n/no): yes
```
上記のように聞かれるので、
IPやホストネームなどの詳細設定を行いたい場合は`yes`を入力します。

##### 1. カメラ
まずカメラを有効にするか聞かれます。

```
[?] Would you like to enable camera interface? (y/yes, n/no): yes
```
今回はカメラを使いたいので`yes`を入力します。


##### 2. DNS
次にDNSを設定するか聞かれます。

```
[?] Add Google DNS as a secondary NameServer (y/yes, n/no): no
```
今回はDNSの設定はいらないので`no`を入力します。


##### 3. ホストネーム
次にhostnameを変更するか聞かれます。
デフォルトのホストネームは`raspberrypi`です。

```
[+] Default hostname:  raspberrypi
[?] Do you want to change default hostname? (y/yes, n/no): no
```
今回はデフォルトのままで良いので`no`を入力します。


##### 4. IPアドレス
次に固定IPを設定するかを聞かれます。

```
[?] Would you like to assign static IP address for your device? (y/yes, n/no): no
```
今回はIPを固定させる必要はないので`no`を入力します。


##### 5. キーボードレイアウト

```
[+] Default keyboard layout: us
[?] Change default keyboard layout? (y/yes, n/no): no
```
デフォルトはUSキーボードです。
今回はこのままで良いので`no`を入力します。


##### 6. 言語

```
[+] Default language:  en_US.UTF-8
[?] Change default language? (y/yes, n/no): no
```
言語も英語のままで良いので`no`を入力します。


##### 7. SSH

次にSSHを有効にするか聞かれます。

```
[?] Would you like to enable SSH server? (y/yes, n/no): yes
[+] Enabled SSH server.
```
SSHは有効にした方が良いと思います。
ですので`yes`を入力します。


##### 8. WiFi
次にWiFiの設定をするか聞かれます。

```
[?] Would you like to configure your Wi-Fi? (y/yes, n/no): yes
[?] WIFI SSID name: WIFI_SSID
[?] WIFI password: ***********
```
WiFiも設定しておいた方がいいと思います。
`yes`と入力し、SSIDとパスワードを入力しました。


これで一通りの設定は終わりです。

```
[+] Image configured
[?] Proceed to image flashing? (y/yes, n/no): yes
```
問題ないか聞かれるので、大丈夫であれば`yes`と入力します。


### メディア書き出し

どのメディアに書き込むのか聞かれます。

```
[+] Copying files: \ 
[+] Listing available disks...
[+] Available mounts: 
   [1] STORAGE DEVICE - /dev/disk2
[?] Select mount to format: 1
[?] Are you sure?  (y/yes, n/no): yes
```
メディアが1つだけ表示されていることを確認し、`1`を入力します。
2つ以上表示された場合は、初期化するもの以外を抜いてやり直す等、間違えないようにしましょう。
最後に書き込んでokか聞かれるので、`yes`と入力します。

`Password`の入力が求められたらPCのパスワードを入力しましょう。
OSの書き出しが始まるので、コーヒーでも飲みながら気長に待ちましょう。

```
[+] Writing /var/folders/hj/pm_tb0b54pv8hm9v1893r4_426tjb9/T/2018-04-18-raspbian-stretch.img to /dev/disk2
[+] You may need to enter your OS X user password
[+] Enter Password: ****************
```

書き込みが終わるとメディアを取り出すように言われるので、
安全な方法でメディアをアンマウントしましょう。

最後にIoTitのAAが表示され、SSH用のユーザー名とパスワードが表示されるのでメモっておきましょう。

`ssh username: pi password: raspberry`

# 起動してみる
取り出したmicroSDをRaspberry Piに挿入し、電源を入れましょう。
無事デスクトップが表示されれば完了です！

![ラズパイデスクトップ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555646/7ea0e482-d7ce-2650-3c70-2316e0fa9d22.png)

最後に、一応`apt`を最新にしておきましょう。
僕の環境では`upgrade`にお2時間弱かかりました。気長に待ちましょう。

```Bash
$ sudo apt update
$ sudo apt upgrade
```

今回はここまでです！

## 参考

- [【IoT入門】初めてのRaspberry Piセットアップ編](https://camp.isaax.io/ja/tips-ja/raspberry-pi/raspberry-pi-and-iotit)