Raspberry Piインストール


おもちゃとしてRaspberry Piを入手したのでセットアップをしてみました。

## 準備したもの

- Raspberry Pi本体 (Model B)
- Skeleton Box For Raspberry Pi
- 32GB SDカード
- Micro USBケーブル (0.2m)
- USB電源アダプタ
- LANケーブル (0.1m)
- HDMIケーブル (1.5m)

モニタとキーボードは自宅の物を使い回すのは割愛として、新規(在庫も含むけど)にRaspberry Pi用に用意したのはこのくらい。

## OSインストール (SDカードの準備)

仕事でRHELを使うことはあるのですが、普段自宅ではMacばかりなので、余りOSの種類についてはコダワリが無く…

せっかくなのでRaspbianを使ってみることにします。

参考：[MacでRaspberry Pi用のOSをSDにインストールするメモ](http://n.pentest.ninja/?p=31101)

1. 本家の[Downloadページ](http://www.raspberrypi.org/downloads/)からRaspbianのイメージをダウンロード。
2. Mac 用の書き込みソフト[RPi-sd card builder](http://alltheware.wordpress.com/2012/12/11/easiest-way-sd-card-setup/)を使って、SDカードに書き込み。
3. 書き込み終了後のSDカードをRaspberry Pi本体に突っ込む

参考ページを見ながらサクサク進めました。

## 初期設定

起動して初期設定ですが、まずは前提として自宅内での運用ポリシー(?)を。

- 有線LAN/固定IPを設定する (物理的には無線ルータの隣に置く)
- 自宅のルータが壁になってくれると信じて、セキュリティは最低限で済ませて良い
- 何かあったら後で考える
- キーボード&モニタは普段は繋げない (ssh運用)

正直なところ余り何も考えていませんｗ

参考：[Raspberry Pi の初期設定](http://openrtm.org/openrtm/ja/node/266)


初期設定時のみ、キーボード&モニタは接続しておきます。

1. Raspberry Pi本体に、SDカード/キーボード(USB)/モニタ(HDMI)/LANケーブルを接続し、電源(Micro USB)を繋げる。
2. `raspi-config`が表示されるので、`Expand Filesystem`と`Internationalisatoin Options`->`Change Locale`,`Change Timezone`,`Change Keyboard Layout`と`Adbanced Options`->`Update`を実施してから`Finish`
3. ログインプロンプトでユーザ:`pi` パスワード:`raspberry`でログイン。

localeは`ja_JP.UTF-8`を選びました。

細かい設定は、コマンドやら設定ファイルを書き換えたりで進めます。

### パスワードの変更

忘れないうちに…。

```bash:pi&rootのパスワード設定
$ passwd
pi 用にパスワードを変更中
現在のUNIXパスワード:
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
$ sudo passwd
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
```


### キーボードレイアウト変更


実は直ぐにIP設定しようと思ったのだけど、コメントアウトしようとして`Shift-3`で`£`が入力されてしまったので…

設定したつもりが、何故かUKレイアウトのままだった?(^_^;)

参考：[Changing the default keyboard layout from “gb” to “us” in Raspbian “wheezy” for Raspberry Pi](http://www.koaung.com/post/53011441735/changing-the-default-keyboard-layout-from-gb-to-us)


```bash:UKレイアウトからUSレイアウトに
$ cd /etc/default/
$ sudo cp -p keyboard keyboard.orig
$ sudo vi keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="hhk"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"
$ diff keyboard.orig keyboard
6c6
< XKBLAYOUT="gb"
---
> XKBLAYOUT="us"
```

設定変更して`reboot`したら反映されました。


### 固定IPアドレス設定

参考：[固定IPアドレスの設定](http://www.hiramine.com/physicalcomputing/raspberrypi/setup_staticip.html)

ここを抜ければ後は基本`ssh`接続でOKにできます。

```bash:IP設定変更
$ cd /etc/network
$ sudo cp -p interfaces interfaces.orig
$ sudo vi interfaces
auto lo

iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1

#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
$ diff interfaces.orig interfaces
4c4,8
< iface eth0 inet dhcp
---
> #iface eth0 inet dhcp
> iface eth0 inet static
> address 192.168.1.200
> netmask 255.255.255.0
> gateway 192.168.1.1
6,9c10,13
< allow-hotplug wlan0
< iface wlan0 inet manual
< wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
< iface default inet dhcp
---
> #allow-hotplug wlan0
> #iface wlan0 inet manual
> #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
> #iface default inet dhcp
```

初期状態ではdhcpでIPアドレスを取得していたので、static指定に変更して、IPアドレス/ネットマスク/GWアドレスを追記します。

無線インタフェースも使用しないので記載は全部コメントアウト。

/etc/resolv.confはdhcpで記載されていたのだと思うけど、192.168.1.1が設定されていたのでそのまま弄っていません。

### ここで一端再起動

一通りの設定はできたと思うので、ここで再起動して全ての設定を反映させます。

```bash:再起動
$ sudo reboot
```

## 設定状況確認＆最新化

設定変更は出来ているので、リモートから`ssh`で接続して確認＆最新化を行います。

ここから先はキーボード＆モニタは使わないけど、イザという時のために繋げたままで残してあります。

### リモートアクセス確認

モニタ上で立ち上がったことを確認して、手元(Mac)から`Terminal.app`を使って`ssh`で接続します。

```bash:リモートから接続
$ ssh pi@192.168.1.200
The authenticity of host '192.168.1.200 (192.18.1.200)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connectiong (yes/no)? yes
pi@192.168.1.200's password:
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l
(略)
pi@raspberrypi ~ $
```

無事にログインできたので、軽くネットワーク回りの確認など

```bash:ネットワーク回り確認
pi@raspberrypi ~ $ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
pi@raspberrypi ~ $ ip route
default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200
pi@raspberrypi ~ $ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+xxx.xxxx.xxxxx  xxx.xxx.xxx.xxx  2 u    6  128  377   22.773   17.990   1.934
*xxx.xxxx.xxxxx  xxx.xxx.xxx.xxx  2 u   66  128  377   13.263   18.877   1.866
+xxx.xxxx.xxxxx  xxx.xxx.xxx.xxx  3 u   56  128  377   13.044   17.566   1.990
-xxx.xxxx.xxxxx  xxx.xxx.xxx.xxx  3 u   33  128  377   13.149   23.265   1.959
```

IPアドレス関連はよさそうだし、ntpも何か設定されて同期できていそうなのでまぁいいか。

### 最新化

Raspbianのパッケージ管理は`apt`らしいので、最新化します。

```bash:aptで更新
pi@raspberrypi ~ $  sudo apt-get update
ヒット http://repository.wolfram.com stable Release.gpg
ヒット http://raspberrypi.collabora.com wheezy Release.gpg                                                                
ヒット http://repository.wolfram.com stable Release                        
(略)
パッケージリストを読み込んでいます... 完了pi@raspberrypi ~ $ sudo apt-get upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
(略)
アップグレード: 64 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
106 MB のアーカイブを取得する必要があります。
この操作後に 8,957 kB のディスク容量が解放されます。
続行しますか [Y/n]? y
(略)
pi@raspberrypi ~ $ sudo reboot

Broadcast message from root@raspberrypi (pts/0) (xxxxxxxxxxx):
The system is going down for reboot NOW!
pi@raspberrypi ~ $ exit
```

この辺りまで進んだところで、キーボードとモニターは外してしまいました。

さほど待たずに立ち上がるので、再度`ssh`で接続さえすれば直ぐに遊べる状態にｗ