Raspbian初期セットアップの備忘録


Mac用。RaspbianでもChefが使えるので``knife-solo``を実行するまでのメモ。

## RaspbianをSDカードに焼く

1. [Download](http://www.raspberrypi.org/downloads/)からRaspbianイメージをダウンロードする
 * ``.zip``の場合は``.img``ファイルに展開しておく
1. SDカードを指す
1. ``df -h``でSDカードのディスク名をチェックする
 * ``/dev/diskNsX``がディスク名なら ``/dev/rdiskN`` がrawディスク名となる
 * 例えば ``/dev/disk1s1`` なら  ``/dev/rdisk1``
1. ``dd``コマンドでイメージを焼く

**Macがインストールされたハードドライブを間違えて更新しないように指定するディスクは注意して確認すること**

実行例: SDカードが``/dev/disk2s1``で``~/Download/2015-05-05-raspbian-wheezy.img``を焼く場合

```bash:Terminal(OSX)
cd ~/Downloads
sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=2015-05-05-raspbian-wheezy.img of=/dev/rdisk2
sudo diskutil eject /dev/disk2s1
```

## raspi-config

最初の起動時に``raspi-config``が起動する。しない場合はTerminalから ``sudo raspi-config``を実行する。任意のタイミングで``raspi-config``は呼び出せる。

設定後、rebootを促されたら再起動する。

### パーティションの拡張

初期イメージのままだと2GBまでしか使えないのでSDカードをフルに利用するためにパーティションの拡張を実行する。

* Expand Filesystem

### 日本仕向け設定 

日本語フォントがないと``ja_JP.UTF-8``で文字化けするのでLocaleの設定はPCからリモートで繋いでからでも良いかもしれない。

* Internationalisation Options > Change Locale > ja_JP.UTF-8
* Internationalisation Options > Change Timezone > Asia > Tokyo
* Internationalisation Options > Change Keyboard Layout > Generic 101-key PC > Other > Japanese > Japanese > The default for the keyboard layout > No compose key

### ホスト名設定

ホスト名を変更しておく、デフォルトだとraspberrypiなので複数台管理するとややこしくなる。

* Advanced Options > A2 Hostname > ``rpi01``


## 無線LANの設定

優先LANを使うのであれば必要なし、USB無線LANアダプタ使う場合は無線LANの設定をする。

```bash:(Raspbian)
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
```

```/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="YOUR_SSID"
    psk="YOUR_PASSWORD"
    # 0: default, 1: stealth
    scan_ssid=0
}
```

``YOUR_SSID``や``YOUR_PASSWORD``を置き換えて、ステルスSSIDなら``scan_ssid``を``1``に設定するなど。

```bash:(Raspbian)
sudo reboot
```

## IPアドレスのチェック

リブート後、Username: ``pi`` Password: ``raspberry`` でログインし、IPアドレスを調べる。

```bash:(Raspbian)
ifconfig
```

実行するコマンドをコピペしていきたいのでIPアドレスがわかったらPCからsshで接続する。(``192.168.1.30``を置き換えて読む)

```bash:Terminal(OSX)
ssh pi@192.168.1.30
```


## パッケージを更新

パッケージを更新。時間がかかるのでしばし待つ。

```bash:(Raspbian)
sudo apt-get update
sudo apt-get upgrade
```

## vimを使う

nanoが使いこなせないので **/usr/bin/vim.tiny** を使う。

```bash:(Raspbian)
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.tiny
```

## ユーザの作成

電気工作で遊ぶだけなら``pi``ユーザのままでいいけど、外部公開するサーバの場合は以下のような対応を行うのが良いと思われる。(``<youraccount>``のところを自分のアカウント名に置き換えて読む)

* ``pi``ユーザで``passwd``コマンドを実行し``pi``ユーザのパスワードを変更しておく
* ``sudo passwd``コマンドを実行し``root``のパスワードを変更しておく
* ``sudo adduser <youraccount>``でユーザを追加する
* ``sudo visudo``で``<youraccount>  ALL=(ALL) NOPASSWD: ALL``を最後に追加する
 * Chef Soloを使うため パスワード無し``sudo``を実行できるようにしておく

```
#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
<youraccount>  ALL=(ALL) NOPASSWD: ALL
```

## sshの設定

sshの公開鍵を送りつける。(``ssh-copy-id``はHomebrewからインストールできる)

```bash:Terminal(OSX)
ssh-copy-id 192.168.1.30
```

追加できたらパスワードなしでssh出来るかチェック。

```bash:Terminal(OSX)
ssh 192.168.1.30
```

ログインできたら``sudo vi /etc/ssh/sshd_config``で編集してrootのログインとパスワード認証を無効にしておく。外部公開するサーバならポートも変更しておく。

```bash:/etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no
...
#PasswordAuthentication yes
PasswordAuthentication no
```

一番最後に以下を追加してLAN内からはパスワード認証を許可しておく。

```bash:/etc/ssh/sshd_config
Match Address 192.168.*.*
  PasswordAuthentication yes
```

ssh再起動

```bash:(Raspbian)
sudo /etc/init.d/ssh restart
```

## Chefでセットアップ

chef-soloでセットアップしたい人向け。

jessieではRaspbian側に``ruby2.1-dev``を入れておかないと``knife solo prepare``でchefがインストールされなかった、以下で``ruby2.1-dev``をインストールする。

```bash:(Raspbian)
sudo apt-get install ruby2.1-dev
```

Ruby 2.2.2以上が必要なRack 2.0がインストールされるようになり``knife solo prepare``でchefがインストールされない場合、自分でchefをインストールする。

```bash:(Raspbian)
sudo gem i rack -v 1.6.4 --no-ri --no-rdoc
sudo gem i chef --no-ri --no-rdoc
```


あとはChefのレシピ書いてMacから``knife-solo``で頑張る。

```bash:Terminal(OSX)
knife solo prepare 192.168.1.30
knife solo cook 192.168.1.30
```

ChefでPlatformを使って分岐する場合、Raspbianは以下のような値を持つ。

|key|value|
|:-----------|:-----------|
|platform|raspbian|
|platform_family|debian|

## その他

* [VNCのセットアップ](http://qiita.com/makoto_kw/items/75a60123617a1697943f)
* [Camera Moduleのセットアップ](http://qiita.com/makoto_kw/items/1ca22b9277d5ce12f31a)