
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がオススメです。
マイクロソフト キーボード ワイヤレス/セキリュティ(暗号化機能搭載)/防滴 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からアップデートする場合
イメージをダウンロードしてきます。
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 updatesudo apt-get install curl binutilsrpi-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-updatesudo 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のファイルを使用する場合
イメージをダウンロードしてきます。
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.imgsudo 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 updatesudo apt-get install curl binutilsrpi-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-updatesudo 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/disk2sudo 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/disk2Ubuntuでは以下のコマンドで書き込みができます。
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-configurationsudo dpkg-reconfigure tzdataパッケージリスト・パッケージの更新
sudo apt-get update && sudo apt-get upgrademDNSと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 vimhostnameの変更
mDNSを入れたのでhostnameを変更します。
ほかのhostnameと同じにならないように設定する必要があります。
今回は"raspberrypi001"に変更しています。
sudo vim /etc/hostnamesudo vim /etc/hosts/etc/hostnameの中身はこんな感じ。
raspberrypi001/etc/hostsの中身はこんな感じ。127.0.0.1のところだけ書き換えればよいでしょう。
#127.0.0.1 ubuntu127.0.0.1 raspberrypi001ここで一度再起動
sudo rebootssh接続テスト
ここからはsshで接続できるはずです。
同じネットワーク内で"HOSTNAME.local"(今回は"raspberrypi001.local")で接続できるようになっています。 MacやLinxからならターミナルを起動して以下のコマンドで接続できるはずです。
ssh ubuntu@raspberrypi001.localWindowsの場合はTeraTermで接続できます。
Wi-Fi接続に必要なパッケージのインストール
Wi-Fi接続に必要なドライバなど各種パッケージをインストールします。
sudo apt-get install linux-firmware wireless-tools wpasupplicantWi-Fi設定ファイルの編集
sudo vim /etc/network/interfacessudo vim /etc/wpa_supplicant/wpa_supplicant.confちなみに、以下のコマンドを実行することでWi-Fiのアクセスポイントをスキャンすることができ、プロトコル等を調べることができます。
sudo iwlist wlan0 scanwlan0がないよ!と言う旨のエラーが出たらifupしてあげればwlan0が起動します。
sudo ifup wlan0Wi-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 -hsudo fdisk /dev/mmcblk0Welcome 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: 0x0004f23a
Device Boot Start End Blocks Id System/dev/mmcblk0p1 * 2048 186367 92160 c W95 FAT32 (LBA) /dev/mmcblk0p2 186368 3667967 1740800 83 Linux
Command (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 30857215
Command (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のスペーサ取り付けると素敵なタワーになりますが、単体ならケースつけると便利です。 ヒートシンク&ケース付きが特におすすめです。
Raspberry Pi 3 Model B (Element14)
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
関連記事
- (Updated )Raspberry Pi 2にUbuntu 14.04をインストールする方法RaspberryPi2にのUbuntu14.04(Trusty)をインストールしてセットアップまで行ったのでそのメモ。
- (Updated )Raspberry Pi 3上でUbuntu 18.04 + ROS Melodicの動作確認をしましたRaspberry Pi 3上でUbuntu 18.04 + ROS Melodic Morenia(以下、ROS Melodic)の動作確認をしました。
- (Updated )Raspberry PiのUbuntu MATEでデバイスドライバをビルドする方法Raspberry PiのUbuntuMATEでデバイスドライバをビルドする方法をメモしておきます。
- Raspbianのミラーサーバ2019年12月時点で日本にあるRaspbian向けdebianパッケージのミラーサーバ一覧と、OSイメージのダウンロード先のメモ。
- Raspberry Pi 3B/3B+用Ubuntuイメージで初回起動に時間がかかる問題をなんとかする2019年6月現在公開されているRaspberry Pi 3 Model B/B+用64bitUbuntuイメージを使ってオフラインでUbuntuをセットアップしようとすると、外部ネットワークへの接続待ちで数分待つことがあります。長いんですよね…… 素直にLANケーブルを接続すればよいのですが、そうでなくても動くように