RaspberryPi2までは公式のファームウェアをmicroSDカードに書き込むだけで使えていました(RaspberryPi2にUbuntu14.04をインストールする方法 | Memoteki)が、RaspberryPi3からはそう簡単ではなくなってしまったので対応方法を2種類メモしておきます。
用意するもの
- Raspberry Pi 3 Model B
- 8GB以上、Class10以上のmicroSDHC
(Ubuntuのインストールだけなら4GB、Class6あれば十分) - 5V、2.5A以上供給できる電源
(RaspberryPi3から2.5A以上推奨になりましたが、実測値ではほとんどの場合0.5A以下でした。PCのUSB2.0ポートでもおそらく問題ないです。) - USBキーボード
- HDMI対応モニタ(とHDMIケーブル)
- LANケーブル
TranscendのmicroSDHCは相性問題があるとの話ですが、私の環境では今まで一度も問題が起きたことはありません。
16GB Class10 UHS-I対応のものがオススメです。リンク貼っておきます。
キーボードはTouchPadとセットになったものを用意しておくとRaspbianなどGUIの操作が必要になった場合にもそのまま使えて便利です。MicrosoftのAll-in-One Media Keyboardがオススメです。
[amazonjs asin=”B015J44QS8″ locale=”JP” title=”【Amazon.co.jp限定】Transcend microSDHCカード 16GB Class10 UHS-I対応 400× (無期限保証) Newニンテンドー3DS 動作確認済み TS16GUSDU1PE (FFP)”]
[amazonjs asin=”B01B1DV094″ locale=”JP” title=”マイクロソフト キーボード ワイヤレス/セキリュティ(暗号化機能搭載)/防滴 All-in-One Media Keyboard N9Z-00029″]
手順
書き込むイメージの準備
今回作成するイメージは2つの方法で作成できます。
- Ubuntu14.04をRaspberry Pi 2で起動し、カーネルとブートローダをアップデートする
- Ubuntu14.04のイメージにUbuntu MATE 16.04のイメージから抜き出したカーネルとブートローダのファイル類を書き込んで作成する
どちらでも作成できましたが、なんとなくRaspberry Pi 2でアップデートしたイメージを使用しています。
imgファイルの中身を書き換えた後、書き込みをしています。
imgファイルのマウントにはkpartxを使用するため、イメージの準備の際にはUbuntu 14.04 (64bit)マシンを使用しました。
Raspberry Pi 2からアップデートする場合
イメージをダウンロードしてきます。
ARM/RaspberryPi – Ubuntu Wiki
2015-04-06-ubuntu-trusty.zipを上記サイトからダウンロードします。159.3MBありました。
今回はDownloads直下にそのままunzipコマンドで2015-04-06-ubuntu-trusty.imgを展開しました。
「microSDの準備」の項目と同じようにして、Raspberry Pi 2にUbuntu14.04をインストールして起動します。
起動時に日付が1970年1月1日になってしまっているので以下のコマンドで正しい日付を設定します。これを実行しないとSSLの証明書関連でエラーが出てしまいます。
2016年7月1日20:30の例です。
sudo date -s "160701 20:30:00"
最低限必要なパッケージを用意します。
sudo apt-get update sudo apt-get install curl binutils
rpi-updateコマンドでカーネルを更新するのでrpi-updateをインストールしておきます。
以下のコマンドでは4.1.19-v7+を指定しています。rpi-firmwareのリポジトリのコミット履歴から該当するSHA(今回は’6e8b794′)を指定することでそのほかのバージョンも指定できます。
sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update sudo BOOT_PATH=/boot/firmware ROOT_PATH=/ rpi-update 6e8b794
カーネルのアップデートのあとは初期RAMディスクの設定をアップデート&ブートローダのアップデート禁止設定をします。
その前に 大きい方のパーティションの/bootディレクトリ以下にあるファイルを削除します。このとき、/boot/firmwareだけは残しておきます。 (起動すると/boot/firmware以下に小さい方のパーティションの中身が割り当てられるため、空です。空ですが、念のため。)
以下のコマンドで初期RAMディスクの設定をアップデートします。特にエラーは出ないですが、設定に必要なファイルはそろっていないのでうまくいっていない可能性が高いです。
sudo update-initramfs -c -k 4.1.19-v7+
以下のコマンドでapt-getで自動アップデートされないよう、設定します。
sudo apt-mark hold raspberrypi-bootloader-nokernel
ここまで設定したら、諸々のパッケージをアップデートし、問題なく再起動できることを確認します。
sudo apt-get upgrade
これでRaspberryPi3でも使えるイメージが完成しました。
ただ、このままほかのRaspberryPiにmicroSDを差し替えても、eth0が認識しません。
LinuxマシンにmicroSDを読み込ませるか、シャットダウン前に /etc/udev/rules.d/70-persistent-net.rules
を削除しておく必要があります。
所有者がrootなのでシャットダウン前に削除する場合は以下のコマンドで削除できます。
sudo rm /etc/udev/rules.d/70-persistent-net.rules
ここまで設定したイメージ、一応公開しておきます。(md5sum:a8b8bc20994ce6e89f6db9b80b23e139)
検証していないことがたくさんありますので、エラーが出る可能性があります。
使用する際は起動しなくなっても問題ない環境でテストしてからお願いします。
2017年6月25日追記。iragamoさんよりご指摘いただきました。
ユーザ名、パスワードともに変更していませんので、どちらも”ubuntu”でログインできます。
追記ここまで。
http://www.mediafire.com/download/lguvc0mgllyxy8l/2016-07-02-ubuntu-trusty.img
https://mega.nz/#!PVQXhbQb!SLIfMbeTJ97iYO3liPKPxzUAnLlPvPCDhu-cqEvg_UQ
Ubuntu MATE 16.06のファイルを使用する場合
イメージをダウンロードしてきます。
ARM/RaspberryPi – Ubuntu Wiki
2015-04-06-ubuntu-trusty.zipを上記サイトからダウンロードします。159.3MBありました。
Downloads直下にそのままunzipコマンドで2015-04-06-ubuntu-trusty.imgを展開しました。
Download Ubuntu MATE | Ubuntu MATE
ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xzを上記サイトからダウンロードします。1.1GBありました。
Downloads直下にubuntu-mate-16.04-desktop-armhf-raspberry-pi.imgを展開しました。
kpartxでimgファイルのデバイスマップを作成し、マウントします。
kpartxコマンドについてはこちら。kpartx(8) – Linux man page
sudo kpartx -av ~/Downloads/2015-04-06-ubuntu-trusty.img sudo kpartx -av ~/Downloads/ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img
ここでそれぞれ2つのパーティション、合計4つマウントされます。
2015-04-06-ubuntu-trusty.imgの
- BOOTパーティションの中身を丸ごと
- ROOTパーティションの /lib/modprobe.d の中身すべて
- ROOTパーティションの /lib/modules の中身すべて
以上3つをubuntu-mate-16.04-desktop-armhf-raspberry-pi.imgのものに置き換えます。
あとは2015-04-06-ubuntu-trusty.imgの
- ROOTパーティションの /boot
に今回は使わない3.18.0-20-rpi2のカーネルのファイルがありますので削除しておきます。
ここまでできたら、2015-04-06-ubuntu-trusty.imgをアンマウントしてから、以下のコマンドでデバイスマップを削除します。
sudo kpartx -dv ~/Downloads/2015-04-06-ubuntu-trusty.img
この後、「microSDの準備」の項目と同じようにして、Raspberry Pi 3にUbuntu14.04をインストールして起動します。
最低限必要なパッケージを用意します。
sudo apt-get update sudo apt-get install curl binutils
rpi-updateコマンドでカーネルを更新するのでrpi-updateをインストールしておきます。
以下のコマンドでは4.1.17-v7+を指定しています。rpi-firmwareのリポジトリのコミット履歴から該当するSHA(今回は’6e8b794′)を指定することでそのほかのバージョンも指定できます。
sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update sudo BOOT_PATH=/boot/firmware ROOT_PATH=/ rpi-update 6e8b794
カーネルのアップデートのあとは初期RAMディスクの設定をアップデート&ブートローダのアップデート禁止設定をします。
以下のコマンドで初期RAMディスクの設定をアップデートします。特にエラーは出ないですが、設定に必要なファイルはそろっていないのでうまくいっていない可能性が高いです。
sudo update-initramfs -c -k 4.1.19-v7+
以下のコマンドでapt-getで自動アップデートされないよう、設定します。
sudo apt-mark hold raspberrypi-bootloader-nokernel
ここまで設定したら、諸々のパッケージをアップデートし、問題なく再起動できることを確認します。
sudo apt-get upgrade
これでRaspberryPi3でも使え、更新までできるイメージができます。
※ここから先はRaspberry Pi 2のときとほぼ同じです。
microSDの準備
今回はMacで実行します。Linuxでも概ね同じようにできるようです。
- Installing operating system images on Mac OS – Raspberry Pi Documentation
- Installing operating system images on Linux – Raspberry Pi Documentation
WindowsではWin32 Disk Imagerなどを使えば簡単です。
microSDを指す前と指す後で2回以下のコマンドを実行します。
diskutil list
/dev/disk2 (external, physical)が増えており、これがmicroSDであることがわかります。
ここで違うdiskを選択すると、最悪の場合OS Xが起動しなくなる場合があります。
diskutil umountDisk /dev/disk2 sudo dd if=~/Downloads/2016-07-02-ubuntu-trusty.img of=/dev/rdisk2 bs=1m
ここで、ofに/dev/disk2ではなく、/dev/rdisk2を指定します。
rdiskはdiskと違い、アンバッファモードなのでバッファモードより書き込みが数倍速いです。
時間がかかりますが、Ctrl+Tできちんと動いている確認できます。
書き込みが終わったら、EjectしてmicroSDの準備完了です。
diskutil eject /dev/disk2
Ubuntuでは以下のコマンドで書き込みができます。
sudo dd if=~/Downloads/2016-07-02-ubuntu-trusty.img of=/dev/mmcblock00
接続
microSD、LANケーブル、HDMIケーブルを所定の位置に接続し、最後にmicroUSBの電源をつなぎます。
このときにHDMIケーブルでモニタとRaspberry Pi 3が接続されていないと途中から接続しても認識されません。
ssh接続テストを行うまでHDMI対応モニタとUSBキーボードを使用します。
キーボード、タイムゾーンの設定
デフォルトのログインユーザは”ubuntu”、パスワードも”ubuntu”です。
sudo dpkg-reconfigure keyboard-configuration sudo dpkg-reconfigure tzdata
パッケージリスト・パッケージの更新
sudo apt-get update && sudo apt-get upgrade
mDNSとOpenSSHサーバのインストール
マルチキャストDNS(mDNS)はMacやWindowsではBonjourと呼ばれているサービスです。
IPアドレスを直接入力しなくても同じネットワーク内で”HOSTNAME.local”が名前解決できるようになります、
Windowsで使うにはBonjour for Windowsが必要になります。
単体でもインストールできますが、iTunesのインストール時にインストールされます。
LinuxではAvahiを使います。
sudo apt-get install avahi-daemon openssh-server
お気に入りのエディタをインストール
VimでもEmacsでもnanoでも。
sudo apt-get install vim
hostnameの変更
mDNSを入れたのでhostnameを変更します。
ほかのhostnameと同じにならないように設定する必要があります。
今回は”raspberrypi001″に変更しています。
sudo vim /etc/hostname
sudo vim /etc/hosts
/etc/hostnameの中身はこんな感じ。
raspberrypi001
/etc/hostsの中身はこんな感じ。127.0.0.1のところだけ書き換えればよいでしょう。
#127.0.0.1 ubuntu 127.0.0.1 raspberrypi001
ここで一度再起動
sudo reboot
ssh接続テスト
ここからはsshで接続できるはずです。
同じネットワーク内で”HOSTNAME.local”(今回は”raspberrypi001.local”)で接続できるようになっています。
MacやLinxからならターミナルを起動して以下のコマンドで接続できるはずです。
ssh [email protected]
Windowsの場合はTeraTermで接続できます。
Wi-Fi接続に必要なパッケージのインストール
Wi-Fi接続に必要なドライバなど各種パッケージをインストールします。
sudo apt-get install linux-firmware wireless-tools wpasupplicant
Wi-Fi設定ファイルの編集
sudo vim /etc/network/interfaces
sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
ちなみに、以下のコマンドを実行することでWi-Fiのアクセスポイントをスキャンすることができ、プロトコル等を調べることができます。
sudo iwlist wlan0 scan
wlan0がないよ!と言う旨のエラーが出たらifupしてあげればwlan0が起動します。
sudo ifup wlan0
Wi-Fi設定の確認
Wi-Fiの設定ができたら、以下のコマンドでcompletedと言われるか確認します。
sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
最終行がこんな感じになります。
CTRL-EVENT-CONNECTED - Connection to xx:xx:xx:xx:xx:xx completed
オプションに-Bをつければバックグラウンドでの起動に切り替わります。
ファイルシステムの拡張
raspi-configならexpand_rootfsで済む部分ですが、Ubuntuでは手作業が必要です。
以下のコマンドで/dev/rootのsizeが1.7GBぐらいだと思います。
df -h
sudo fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.22.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): p # pを入力
Disk /dev/mmcblk0: 15.8 GB, 15798894592 bytes, 30857216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004f23aDevice Boot Start End Blocks Id System
/dev/mmcblk0p1 * 2048 186367 92160 c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 1740800 83 LinuxCommand (m for help): d # dを入力
Partition number (1-4): 2 # 2を削除するCommand (m for help): n # nを入力
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p # pを入力
Partition number (1-4, default 2): 2 # 2を新規パーティションに
First sector (186368-30857215, default 186368): # Enter
Last sector, +sectors or +size{K,M,G} (186368-30857215, default 30857215): # ENter
Using default value 30857215Command (m for help): w # wを入力
RaspberryPiでSDカード容量を最大まで使うようにする – hello-world.jp.net
開始と終了のセクターアドレスはデフォルトで正しく指定される場合がほとんどです。
一度再起動
sudo reboot
パーティション拡張
sudo resize2fs /dev/mmcblk0p2
これでセットアップは終了です。
あとは通常のUbuntuと同様に使用することができます。
このあと、ROS Indigoをインストールして、Raspberry Pi Mouse V2が動くところまでは動作確認できました。
そのほか
積み上げる際はM2.6のスペーサ取り付けると素敵なタワーになりますが、単体ならケースつけると便利です。
ヒートシンク&ケース付きが特におすすめです。
[amazonjs asin=”B01CCOXV34″ locale=”JP” title=”Raspberry Pi 3 Model B (Element14)”]
[amazonjs asin=”B01CSFZ4JG” locale=”JP” title=”Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab”]
参考サイト
m_mzr: Raspberry PI 3 and ROS lastvisit:2016/07/01
Raspberry Pi • View topic – [solved] Converting from rpi2 to rpi3? lastvisit:2016/07/01
コメント
コメント一覧 (4件)
投稿どうもありがとうございます。参考にさせていただきたいと思います。
Raspberry Pi2から構築したイメージファイルを利用させていただこうと思い、起動させてみましたが、login画面が表示されました。
rootのパスワードか、ユーザー名とパスワードを教えていただくことは可能でしょうか?
ubuntu ubuntuで入れました。お騒がせしました。
コメントありがとうございます。
Ubuntu公式のイメージから特に変更しておりません。
ご指摘の通り、以下の設定でログインできます。本文の方にも追記しました。
user : ubuntu
pass : ubuntu
[…] Raspberry Pi 3にUbuntu 14.04をインストールする方法 | Memoteki より: 2016/07/03 5:33 PM […]