Ubuntuの起動ディスクを作成する
必要なハードウェアが揃ったところで,
- ブートローダー
- カーネルイメージ
- カーネルモジュールの組み込まれたInitramfs
- Device Tree Blob
- Ubuntuのルートファイルシステム
Raspberry Pi 2はBootROMからSDカードの先頭パーティションにあるstart.
Raspberry Pi 2のカーネルはソースコードがGitHub上に公開されています。Ubuntuでこのカーネルを使うためには,
「Device Tree」
ルートファイルシステムは
microSDHCカードのフォーマット
まずはmicroSDHCカードをフォーマットし,
- 注4)
- 64MバイトにしているのはSnappyのイメージに合わせているというだけで,
カーネルその他がインストールできる容量であれば変更しても問題ありません。
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であれば,
- 注5)
- この状態でディスクを取り外すときは,
正しくアンマウントしてください。Unityの場合は, Launcherにデバイスアイコンが表示されるはずですので, それを右クリックして 「親ドライブを取り出す」 を選択し, アイコンが消えて通知が表示されるまで待てば問題ありません。
ブートパーティションの作成
ブートパーティションにはカーネルやブートローダーなどを配置します。今回は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/
最後にルートファイルシステムは書き込み可能なので