開発者でも何でもない素人によるサイト

Raspberry Pi 2の外付けHDD(SSD)にUbuntuServer(16.04)をインストール

  • このエントリーをはてなブックマークに追加

概要

Raspberry Piで、公式のUbuntuServer(16.04)をインストールします。

Raspbianと同じDebian系で、パッケージ管理(apt)等ほとんど違和感なく移行できますし、リリースが最近(2016年4月)なので、(今のところ)aptで入るパッケージも新しい物が多いです。

またUbuntu Wikiによれば、「Official image」とあるので、推測ですがメンテナンスなどのサポートにも恵まれているかと思います。

またこのUbuntuはRaspberry Pi 2に載っているCPU(ARMv7)に最適化されているとのこと。

今回は、Raspbianのとき同様、外付けSSDにルートファイルシステムを置きます。そのため、最初の手順が少し特殊かもしれません。

普通にmicroSDに焼いて使う方は通常のRaspbianと手順は全く同じです。こちらに一通りの手順を載せています。

外付けSSDに高速インストール

外付けディスクにルートファイルシステムをおく場合は

OSイメージをmicroSDに焼く→/boot/cmdline.txt と /etc/fstab を編集→ルートファイルシステムを外付けHDDにコピー(ddなど)→起動確認

という流れが一般的だとおもいます。

しかし、/(ルート)パーティションは容量が大きいため、microSD→SSD or HDDと2回焼くのは時間がかかり、面倒です。

従って今回は

OSイメージをSSD or HDDに焼く→/system-boot/firmware/cmdline.txtを編集→bootパーティションをmicroSDに移動→起動確認

という手順を取ります(fstabはパーティションラベルで管理されており編集不要です)。

つまり、SSD or HDDに先にOSイメージを焼いて、bootパーティションだけmicroSDに移します。

この方法だと、microSDに焼くのは容量が小さなbootパーティションだけで済み、容量が大きなルートファイルシステムを二度焼く手間が省けます。

早速紹介していきます。

以下では/dev/sdcをインストール先のSSD(HDD)、/dev/mmcblk0をmicroSDとします。また、OSイメージはUbuntu WikiのRaspberry Pi 2の16.04のイメージを使います。

まずインストール先のSSD or HDDをアンマウントしてフォーマットします。方法は割愛します。

次にmicroSDにOSを焼きます。僕の作業環境はUbuntuなので、Wikiに従って次のコマンドで焼きました。Windowsの人はDD for Windowsなどを使うと良いかと思います。

unxz ubuntu.img.xz
sudo ddrescue -D -d --force ubuntu.img /dev/sdc

焼き終えたら、「system-boot」というパーティションをmicroSDに移します。

sudo dd if=/dev/sdc1 of=/dev/mmcblk0

念の為、fdiskで外付けSSDの「system-boot」パーティションを削除しておきます。

sudo fdisk /dev/sdc
コマンド (m でヘルプ): d
Selected partition 1
パーティション番号 (1-2, default 2):1
Partition 1 has been deleted.
コマンド (m でヘルプ): w
コマンド (m でヘルプ): q

続いて「system-boot」の「cmdline.txt」を書き換えます。取り合えずSDをマウントします。

sudo mkdir /mnt/sdcard
sudo mount /dev/mmcblk0p1 /mnt/sdcard

今回はUUIDで起動するパーティションを指定したいので、/dev/sdc2(ルートファイルシステム)のUUIDを以下のコマンドで調べます。

blkid

調べたらcmdline.txtを開きます。

cd /mnt/sdcard
sudo vi cmdline.txt

cmdline.txtが開いたら

root=/dev/mmcblk0p2と書いてある箇所を、

root=UUID=xxxxxxxx

という感じに書き換えます。

終わったらmicroSDと外付けSSDをRaspberry Pi2に刺して起動します。作業が問題なく行われていれば、起動するはずです。

ちなみに、SSHサーバも最初から入っているので、最初からSSHで操作することも可能です。