Ubuntu Weekly Recipe

第364回 Raspberry Pi 2でDockerとownCloudを動かす

この記事を読むのに必要な時間:およそ 5.5 分

Raspberry Pi 2をサーバーとして動かすとなると,やはりコンテナ型仮想化を使えると便利です。そこで今回はRaspberry Pi 2上でDockerを使う方法を紹介します。

よりUbuntuらしいインストールイメージ

先月の第362回では,Raspberry Pi 2にUbuntuをインストールする方法として,Snappyのカーネルやinitramfsと,Ubuntu Coreのルートファイルシステムを組み合わせて使う方法を紹介しました。この方法は手元でカーネルやinitramfsのビルドは必要ないものの,カーネルのアップグレードは手作業でbootパーティションを変更しなくてはいけない,カーネルのコンフィグがUbuntuのそれと微妙に異なるなど,いろいろと不便な点も存在していました。

そんな中,この記事と前後してCanonicalのRyan FinnieがRaspberry Pi 2のカーネルやファームウェアをパッケージング,PPAで公開し,さらにインストール済みイメージを配布しています。こちらのイメージはカーネルも含めてパッケージ管理システムで管理できるので,より「Ubuntuらしい」イメージになっています注1)⁠配布イメージはrawのイメージファイルなので,SDカードにddするだけと,とてもお手軽です。

注1)
ルートファイルシステム側の作りに違いはありませんので,自分専用のインストールイメージを作りたい場合は,第362回の内容も参考になるでしょう。

今回はまず最初に,Ryan Finnieのイメージを使ってRaspberry Pi 2にUbuntuをインストールする方法を紹介します。

イメージのインストール

4GB以上のmicroSDHCカードを用意してください。インストール済みのイメージをダウンロードし,展開します。最新のイメージのURLはWikiを参考にしてください。

$ wget http://www.finnie.org/software/raspberrypi/2015-02-19-ubuntu-trusty.zip
$ unzip 2015-02-19-ubuntu-trusty.zip

imgファイルとbmapファイルの2つのファイルが現れるはずです。bmapファイルはrawのイメージファイルの使用しているブロックを記録したファイルで,ddの代わりにbmaptoolコマンドを利用すると,イメージの書き込み時間を高速化できます。たとえばmicroSDHCカードが/dev/sdbだとすると,次のように実行します。

$ sudo apt install bmap-tools
$ sudo bmaptool copy --bmap 2015-02-19-ubuntu-trusty.bmap 2015-02-19-ubuntu-trusty.img /dev/sdb

もちろん,従来のddでもかまいません。

$ sudo dd if=2015-02-19-ubuntu-trusty.img of=/dev/sdb bs=1M

この時点で第362回の「ルートファイルシステムの作成」まで終わっている状態です。ただし,openssh-serverとavahi-daemonはインストールされていませんので,そのままだとUSBキーボード&HDMIディスプレイがないと操作できません。そこで「ルートファイルシステムの作成」と同様にchrootして上記のパッケージをインストールしておいてください。

ちなみにetc/resolv.confのみ操作が異なります。

362回の方法
$ sudo mount -o bind /etc/resolv.conf etc/resolv.conf
...
$ sudo umount etc/resolv.conf

今回の方法
$ sudo mkdir run/resolvconf
$ sudo mount -o bind /etc/resolv.conf run/resolvconf/resolv.conf
...
$ sudo umount run/resolvconf/resolv.conf
$ sudo rm -rf run/resolvconf

ルートパーティションの拡張

microSDHCカードをRaspberry Pi 2に接続し起動します。今回のイメージのホスト名は「ubuntu」になっているので,⁠ssh ubuntu@ubuntu.local」で接続してください。ユーザー名とパスワードはどちらも「ubuntu」です。

この状態で「df」コマンドを実行すると,microSDHCカードのサイズに関わらずルートパーティションのサイズは約1.8GBになっているはずです。そこでsshログインできたら,最初にルートパーティションをmicroSDHCカードのサイズに合わせて拡張します。

$ sudo fdisk /dev/mmcblk0
(中略)
Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (133120-15556607, default 133120):
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-15556607, default 15556607):
Using default value 15556607

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
$ reboot

上記ではパーティションテーブルから第2パーティション(=ルートパーティション)の情報を一度削除し,末尾のセクタをデフォルト値(つまり空き領域一杯)に変更しています。この状態で一度再起動してパーティションテーブルを再読み込みさせ,最後にext4ファイルシステムをresize2fsコマンドで拡張します。

$ sudo resize2fs /dev/mmcblk0p2

あとは第362回の「ベースシステムのインストール」と同じようにアップグレードやメタパッケージを導入してください。今回は「Ubuntuサーバーのインストール」までを行ったとして話を進めます。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入