Raspberry Pi 2にUbuntu 14.04を入れてみた


Raspberry Pi 2 Modelを入手したのでUbuntu 14.04を入れてみた。
ここではその手順を記録する。

# Raspberry Piについて

Amazonでケース付きのを購入してみた。

## 再起動を繰り返す現象について

途中ログインまでいかずに再起動を繰り返す現象が発生した。

以下のような記事を参照してUSBアダプターを変更すると現象は収まった。
[Raspberry Pi 2 Model B をインストールしてSSH接続できるようにしてみる – CLARA ONLINE techblog](http://techblog.clara.jp/2015/02/raspberry-pi-2-model-b_install_and_ssh_connect/)

最初は、以下の記事にあるのと同じSDカード(Apotop microSDHC 32GB CL10)を使っていたので相性かと思ったが、他のSDカードに変えても現象が発生するため違ったようだった。
[Raspberry PiでSDカード相性が原因で起動エラーを繰り返す時の対処法 | 1ft-seabass.jp.MEMO](http://www.1ft-seabass.jp/memo/2015/03/31/raspberry-pi-sdcard-error/)

# UbuntuのイメージをSDカードにインストール

[ARM/RaspberryPi - Ubuntu Wiki](https://wiki.ubuntu.com/ARM/RaspberryPi)でメージのzipをダウンロードして解凍。

以下の内容に従ってインストールした。
[Installing Operating System Images - Raspberry Pi Documentation](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)

OSX環境なので以下のようにした。



```bash
# SDカードのデバイス確認(うちの環境では/dev/disk2だった)
$ diskutil list

$ diskutil unmountDisk /dev/disk[確認したデバイスの番号]

$ sudo dd bs=1M if=[ダウンロードして解凍したイメージのimgファイルパス] of=/dev/rdisk[確認したデバイスの番号]
```

# Ubuntuセットアップ

[ARM/RaspberryPi - Ubuntu Wiki](https://wiki.ubuntu.com/ARM/RaspberryPi)の手順に従って以下のようにインストールした。
ユーザ/パスワードはubuntu/ubuntuが設定されているのでそれでログイン。

## アップデート

```bash
$ sudo apt-get update
$ sudo apt-get upgrade
```

## 容量確保

初期では利用できる領域がSDカードの容量に関わらず1GBくらいなのでSDカードの容量いっぱいまで使えるようにする。

```bash
$ sudo fdisk /dev/mmcblk0
# 削除 (d, 2)
# 再作成 (n, p, 2, enter, enter)
# 終了 (w)

# 一旦再起動
$ sudo reboot

$ sudo resize2fs /dev/mmcblk0p2
```

## スワップ確保

スワップ領域がないので確保しておく(デフォルト2GB)。

```bash
$ sudo apt-get install dphys-swapfile
```

## Wifiドングル用設定

Wifiドングル使うなら入れるらしい。
今は使ってないが予定はあるので入れておく。

```bash
$ sudo apt-get install linux-firmware
```

## デスクトップ環境設定

デスクトップ環境も欲しいので入れておく。
軽そうなlxdeにしておく。

```bash
# ログイン画面がGUIになると起動がやや遅くなるのでstratxで起動できるようにしておく
# (ログイン画面がGUIでいい場合はlubuntu-desktopを入れるだけで良い)
$ sudo apt-get install lxde

$ vi ~/.xinitrc # 以下を記述
exec startlxde

$ sudo apt-get install xinit
```

## ssh設定

```bash
$ sudo apt-get install openssh-server
```

## xorg設定

```bash
$ sudo apt-get install xserver-xorg-video-fbturbo

$ sudo vi /etc/X11/xorg.conf # 以下を記述
Section "Device"
    Identifier "Raspberry Pi FBDEV"
    Driver "fbturbo"
    Option "fbdev" "/dev/fb0"
    Option "SwapbuffersWait" "true"
EndSection

$ sudo apt-get install libraspberrypi-bin libraspberrypi-dev
$ sudo ln -s /usr /opt/vc
$ sudo apt-get install libraspberrypi-bin-nonfree
```

### libegl1-mesa-devやlibgles2-mesa-devのインストールが失敗する場合

libraspberrypi-devを入れているとlibegl1-mesa-devやlibgles2-mesa-devが入らなかった。
※ ros-indigo-navigationというパッケージがapt-get installで入らなくて依存関係を見ていったらこの2つのパッケージに依存していた。
その場合、[Raspberry Pi • View topic - Ubuntu 14.04 (trusty) Raspberry Pi 2 image](https://www.raspberrypi.org/forums/viewtopic.php?f=56&t=100553&p=840115)を参考にして以下のようにすることで入れられた。

```bash
$ sudo apt-get download libegl1-mesa-dev
$ sudo apt-get download libgles2-mesa-dev

$ sudo dpkg -i --force-overwrite libegl1-mesa-dev_*.deb
# => エラーになる
$ sudo dpkg -i --force-overwrite libgles2-mesa-dev_*.deb
# => エラーになる

$ sudo apt-get install -f
```

## シリアルコンソール有効化

利用する予定はないがとりあえず。

```bash
$ sudo vi /boot/cmdline.txt # 以下のように設定
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootwait

$ sudo vi /etc/init/ttyAMA0.conf # 以下のように記述
start on stopped rc or RUNLEVEL=[12345]
stop on runlevel [!12345]

respawn
exec /sbin/getty -L 115200 ttyAMA0 vt102
```

## 言語設定

```bash
$ sudo apt-get install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
```

## タイムゾーンの設定

```bash
$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```