今月の頭にRaspberry Pi 2の発売が開始しました。この新モデルの大きな特徴の1つが、
Raspberry Pi 2について
Raspberry Pi 2の発売開始から2週間ほど経過し、
従来のRaspberry PiはARMv6世代であるARM11ファミリーのCPUを搭載していました。しかしながらUbuntuの公式リポジトリで提供しているバイナリパッケージはARMv7世代以降をターゲットにしているため、
実際既にRaspberry Piの公式サイトでは、
Snappyイメージが公開されているとはいうものの、
そこで今回は、
Ubuntuを動かすために必要なもの
最初にUbuntuを動かすために必要になりそうなものをリストアップしていきましょう。必ずしもすべて用意する必要はありません。用途に合わせて、
- Raspberry Pi 2本体
- これがなくては始まりません。ただしなくても
「Raspberry Pi 2用のイメージを作る」 ことは可能です。 - 片方がMicro-BオスのUSBケーブル
- 給電用です。Micro-Bオス側をRaspberry Pi 2側に接続します。もう片方は、
5V2AのACアダプターなどに接続しましょう。 - 8GバイトのmicroSDHCカード
- Ubuntuをインストールします。サーバー用途なら4Gバイトでもかまいませんが、
デスクトップ環境を動かすとなると最低でも8Gバイトはないと心許ないです。またデスクトップ環境を動かすならClass 10にしておいたほうが良いでしょう。 - LANケーブル
- Raspberry Pi 2で使用します。ネットワークにつながずにスタンドアローンで起動するなら不要です。
- HDMIケーブル
- Raspberry Pi 2をディスプレイに接続するために使います。Raspberry Pi 2側はタイプAの
(一般的なサイズの) コネクタを使用しています。サーバー用途であれば不要ですが、 最初のうちはカーネルの起動ログを確認するを確認するために、 用意しておいたほうが便利です。 - HDMIディスプレイ
- 上記HDMIケーブルをつなぐために使います。
- USBキーボード・
マウス - 直接、
デスクトップ環境を利用したい場合は必要です。サーバー用途やリモートデスクトップにするなら不要です。 - LinuxがインストールされたPC
- イメージを作成するために使います。zipファイルとtar.
gzファイルが展開できてchrootできてカーネルがLinuxならUbuntuでなくてもかまいません。 - microSDHCカードリーダー
- PCで作成したイメージをmicroSDHCカードに書き込むために必要です。
- USBシリアルケーブル
- シリアルコンソールを取得したい場合は必要になります。FTDI製のチップが載っているものがよく使われているようです。基本的に不要です。
Ubuntuの起動ディスクを作成する
必要なハードウェアが揃ったところで、
- ブートローダー
- カーネルイメージ
- カーネルモジュールの組み込まれたInitramfs
- Device Tree Blob
- Ubuntuのルートファイルシステム
Raspberry Pi 2はBootROMからSDカードの先頭パーティションにあるstart.
Raspberry Pi 2のカーネルはソースコードがGitHub上に公開されています。Ubuntuでこのカーネルを使うためには、
「Device Tree」
ルートファイルシステムは
microSDHCカードのフォーマット
まずはmicroSDHCカードをフォーマットし、
PCにmicroSDHCカードを接続します。dmesgなどでmicroSDHCカードのデバイスファイル名を確認してください。ここでは
$ export RASPI_SD=/dev/sdb $ sudo parted -s ${RASPI_SD} mklabel msdos $ sudo parted -s ${RASPI_SD} unit B mkpart primary fat32 4194304 71303167 $ sudo parted -s ${RASPI_SD} unit B mkpart primary ext4 71303168 100% $ sudo parted -s ${RASPI_SD} set 1 boot on $ sudo mkfs.fat ${RASPI_SD}1 $ sudo mkfs.ext4 -L root ${RASPI_SD}2
Ubuntuであれば、
ブートパーティションの作成
ブートパーティションにはカーネルやブートローダーなどを配置します。今回はSnappyイメージのブートパーティションを流用することにしましょう。Snappyのイメージをダウンロードして、
$ wget -O pi-snappy.zip http://downloads.raspberrypi.org/ubuntu_latest $ unzip pi-snappy.zip
展開されたpi-snappy.
$ parted pi-snappy.img unit B print 警告: 管理者権限がありません。パーミッションに注意してください。 モデル: (file) ディスク /home/shibata/temp/raspi/pi-snappy.img: 3000000000B セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194304B 71303167B 67108864B primary fat32 boot, lba 2 71303168B 1145044991B 1073741824B primary ext4 3 1145044992B 2218786815B 1073741824B primary ext4 4 2218786816B 2998927359B 780140544B primary ext4
ここでは先頭パーティションだけ必要なので、
$ sudo mount -o loop,offset=4194304,sizelimit=67108864 pi-snappy.img /mnt $ sudo cp -r /mnt/* /media/ubuntu/boot $ sudo umount /mnt
カーネルの起動オプションはcmdline.
dwc_otg.lpm_enable=0 console=ttyAMA0,115200
root=/dev/disk/by-label/system-a
init=/lib/systemd/systemd ro panic=-1 fixrtc elevator=deadline rootwait
これを次のように変更します。こちらも一行で記述してください。
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 boot=local
root=/dev/mmcblk0p2 rootfstype=ext4 rw panic=-1 fixrtc elevator=deadline rootwait
まず
次に
「root=/dev/
「init=/lib/
最後にルートファイルシステムは書き込み可能なので
ルートファイルシステムの作成
次にルートファイルシステムを作成します。前述したとおり、
$ wget http://cdimage.ubuntu.com/ubuntu-core/releases/14.04.1/release/ubuntu-core-14.04.1-core-armhf.tar.gz $ sudo tar xvf ubuntu-core-14.04.1-core-armhf.tar.gz -C /media/ubuntu/root/
さらにRaspberry Pi 2用のカーネルモジュールもルートファイルシステムに展開しましょう。こちらもカーネルイメージと同じく、
$ sudo mount -o loop,offset=71303168,sizelimit=1073741824 pi-snappy.img /mnt $ sudo cp -a /mnt/lib/modules /media/ubuntu/root/lib/ $ sudo umount /mnt
このファイルシステムは最小構成なので、
$ sudo apt install qemu-user-static $ cd /media/ubuntu/root $ sudo cp /usr/bin/qemu-arm-static usr/bin $ sudo mount -t proc proc proc $ sudo mount --rbind /dev dev $ sudo mount --rbind /sys sys $ sudo mount -o bind /etc/resolv.conf etc/resolv.conf $ sudo chroot . /bin/bash # adduser ubuntu # addgroup ubuntu sudo # echo "raspi2" > /etc/hostname # echo "127.0.1.1 raspi2" > /etc/hosts # echo "auto eth0" > /etc/network/interfaces.d/eth0 # echo "iface eth0 inet dhcp" >> /etc/network/interfaces.d/eth0 # sed -i "s/^# \(.*trusty.*verse.*\)/\1/g" /etc/apt/sources.list # apt install openssh-server avahi-daemon # exit $ sudo umount etc/resolv.conf $ sudo umount -l sys $ sudo umount -l dev $ sudo umount proc $ sudo rm usr/bin/qemu-arm-static
途中でopenssh-serverとavahi-daemonをインストールしているのは、
ここまででルートファイルシステムの基本設定は完了です。Xubuntuのインストールなどの残りの作業についてはデバイスを起動後に実行することにします。
ちなみにこの状態で、
Raspberry Pi 2で起動する
microSDHCを用意できたので、
最終的にログインプロンプトが表示されたら、
電源投入直後、
木苺が表示されるものの、
他のRaspberry Pi 2で使用したUbuntuインストール済みのmicroSDHCカードを流用する場合、
その他、
ベースシステムのインストール
Raspberry Pi 2が無事起動したら、
openssh-serverとavahi-daemonをインストールしている状況であれば、
$ avahi-resolve -n raspi2.local raspi2.local 192.168.0.5 ← Raspberry Pi 2のIPアドレスが表示される $ ssh ubuntu@raspi2.local
ホスト名やアカウント、
まずはシステムを最新状態に更新したあと、
$ sudo apt update $ sudo apt upgrade $ sudo apt install ubuntu-standard
これによりBusyBoxの機能強化版やfileやed、
ちなみに日時は起動時にntpdateコマンドによって補正されます。ネットワークに接続していない場合は、
Ubuntuサーバーのインストール
デスクトップ環境は不要でUbuntuサーバー環境にしたい場合は、
$ sudo apt install server^
タイムゾーンやロケール設定を日本にしたい場合は、
$ echo "Asia/Tokyo" | sudo tee /etc/timezone $ sudo dpkg-reconfigure -f noninteractive tzdata $ sudo locale-gen ja_JP.UTF-8 $ sudo dpkg-reconfigure -f noninteractive locales
あとは普通のUbuntuサーバーですのでこれまでと同様に自由に設定してください。
Xubuntuのインストール
Xubuntuをインストールする場合は、
$ sudo apt install xubuntu-desktop language-pack-ja $ sudo reboot
Unity環境にしたい場合はubuntu-desktop、
Xubuntuをインストールしたら一度再起動します。あとは普通の起動画面とともに、
Xubuntuの設定そのものは第324回の
$ sudo apt install fcitx fcitx-mozc fcitx-libs-qt5 fcitx-frontend-qt5 mozc-utils-gui
インストーラーを経由していないため、
ヘッドフォンジャックから音を鳴らしたい場合は、
$ sudo modprobe snd_bcm2835
これでサウンド再生されるようであれば、
そこそこの速度で動くXubuntu
使用感は個人によってかなりばらつきがあるものの、

ちなみにFirefox/