Model B+を複数セットアップしていて手順が安定してきた。
RPi2やIntel Edisonなどで陳腐化しつつある気がするが書いておく。
必要なもの
以下はRPiを設置する台数分だけ必要。
- Raspberry Pi Model B+
- microSDカード
- USB Wi-fiアダプタ
- USB microB電源アダプタ
以下はセットアップ時のみ必要。
-
microSDカードリーダー
-
HDMIケーブル
-
モニタ
-
USBキーボード
OSイメージ作成
参考:Qiita - Raspberry Pi に入門してみた。
Mac OS XでRaspbianのディスクを作成する場合。
Mac BookにmicroSDカードを挿入してRaspbianなどとrenameしておく。
SDカードがどこにマウントされているか確認する。
$ df | grep Raspbian
ここでは/dev/disk3s1
であるとしておく。以下でマウントを解除する。
$ sudo diskutil unmount /Volumes/Raspbian
Raspbianのイメージをダウンロードしておく。
dd
コマンドでディスク作成する。引数は先ほど調べた値に対して/dev/rdisk3
となることに注意。
$ cd /path/to/raspbian_img
$ ls
$ sudo dd bs=1m if="./2015-01-31-raspbian.img" of="/dev/rdisk3"
10分ほど待ち、書き込み終了したら
$ sudo diskutil unmount /dev/disk3s1
でマウント解除してMacBookから外す。
OSインストール
書き込んだmicroSD、HDMIケーブル(+モニタ)とWiFiアダプタをRPiに挿入した後、電源アダプタを接続すると青いセットアップ画面がモニタに現れる。
設定を適宜変更する。
- 1 expand file system
- 4 internationalization > I3 keyboard > 104 > Other > English(US) > English(US)。そのあとはデフォルト。※gbになってしまった場合はこちらのようにして直す
- 8 advanced options > A4 SSH > Enable
終わったらfinishしてreboot。
WiFi設定
モニタとキーボードを接続した状態でpi
ユーザーでログインする。PWはraspberry
となっているが後で変える。
SSIDとWiFi PWをwpa_passphrase
コマンドに渡して設定ファイルを作り、WiFi設定に合わせてファイルを編集して読み込む。
$ sudo su -
# cd /etc/wpa_supplicant
# cp -p wpa_supplicant.conf wpa_supplicant.conf.bak
# wpa_passphrase $SSID $PASS >> wpa_supplicant.conf
# vi wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
#update_config=1
network={
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
scan_ssid=1
ssid="<SSID>"
#psk="<PASS>"
psk=<CIPHERED_PASS>
}
# vi /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
# ifdown wlan0
# ifup wlan0
IPアドレスがとれた(bound to
...)ことを確認する。ここからはSSH接続してリモートで設定する。(そのうちChef化したい)
ログイン設定
Wi-Fi上の端末(ここではMacBookを使っている)でSSH設定してログイン、PWを変更する。
$ vi ~/.ssh/config
Host pi1
HostName XXX.XX.X.XXX
User pi
Host pi2
HostName XXX.XX.X.XXX
User pi
$ ssh pi1
$ passwd
公開鍵などは適宜設定する。
ホスト名変更
デフォルトでホスト名が軒並みraspberrypi
でオペミスしそうなので、適宜変更する。
$ sudo su -
# HOST=pi1
# echo $HOST > /etc/hostname
# /etc/init.d/hostname.sh
# sed -i /etc/hosts -e s/raspberrypi/$HOST/g
再度ログインするとホスト名が変わる
ディスク書き込みを減らす
廉価なmicroSDカードを使ったせいか壊れたことがあったので、
ややトリッキーだが大量の書き込みを行うときはメモリで書き込みを行うようにする。
参考:Broken Corrupted Raspberry Pi SD Card
-
fsck
: mountのたび=再起動のたびに行う
$ sudo tune2fs -c 1 /dev/mmcblk0p2
- 書き込みが多いディレクトリをtmpfsにする
$ mount -l
$ sudo vi /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
none /var/run tmpfs size=1M,noatime 00
none /var/log tmpfs size=1500M,noatime 00
none /var/tmp tmpfs size=1M,noatime 00
none /tmp tmpfs size=10M,noatime 00
$ sudo mount -a
$ mount -l
- スワップを減らす
$ sudo dphys-swapfile swapoff
$ sudo dphys-swapfile uninstall
$ sudo update-rc.d dphys-swapfile remove
- X11を削除する
$ sudo apt-get purge --auto-remove 'libx11-.*'
2,3分待ってDo you want to continue [Y/n]?
と聞かれるので、Yと答えて15-30分程度待つ。
- 再起動
$ sudo reboot
書き込み回数は以下で確認できるようだ。
$ sudo tune2fs -l /dev/mmcblk0p2 |grep Lifetime
Lifetime writes: 4841 MB
モジュール
ここからはアプリケーション依存の設定なので必要に応じて。
pythonを使う場合
$ sudo apt-get update
$ sudo apt-get install python-pip
$ sudo apt-get install python-dev
$ sudo pip install netifaces
GPIO(デジタル入出力)を使う場合
$ cd
$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.38.tar.gz
$ tar zxvf bcm2835-1.38.tar.gz
$ cd bcm2835-1.38/
$ ./configure
$ make
$ sudo make check
$ sudo make install
- wiringPi
$ cd
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi/
$ ./build
fluentdやAWSを使う場合
$ sudo aptitude install ruby-dev
$ cd
$ vi .gemrc
gem: --no-ri --no-rdoc --user-install
$ gem install rake
$ gem install bundler
$ gem install fluentd # 8+ minutes
$ gem install aws-sdk --version 1.55.0
25分ほど待つ
$ cd
$ echo 'export PATH=$HOME/.gem/ruby/1.9.1/bin:$PATH' >> .bashrc
$ exec $SHELL
$ cd
$ git clone https://github.com/imaifactory/fluent-plugin-kinesis.git
$ cd fluent-plugin-kinesis
$ rake build
fluent-plugin-kinesis 0.0.1 built to pkg/fluent-plugin-kinesis-0.0.1.gem.
$ gem install pkg/fluent-plugin-kinesis-0.0.1.gem
DHTのライブラリを使う場合
参考:Raspberry PiからAmazon Kinesisへデータを上げる
$ cd
$ git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
$ cd Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver_Python
$ sudo python setup.py install