Raspberry Pi3でubuntu 14.04LTSを(設定編)
ここまででubuntu14.04が使えるようになりました。次はシリアルターミナルが使えるようように設定します。基本的にこの投稿のように作業をしますが、内容はこのようにします。ビットレートを合わせるための追加作業(3:)も必要です。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
« 2016年5月 | トップページ | 2016年7月 »
ここまででubuntu14.04が使えるようになりました。次はシリアルターミナルが使えるようように設定します。基本的にこの投稿のように作業をしますが、内容はこのようにします。ビットレートを合わせるための追加作業(3:)も必要です。
ここまでで二つのOSイメージが下記に置かれているはずです。
まずubuntu-mate16.04から必要なファイルをrp3下にコピーします。前回の続きなのでubuntuを入れたパソコンで作業します。
rp3の下に作業用のフォルダとしてbootとrootという二つのフォルダを作ります。これはもちろん別の名前でも構いません。これらはubuntu-mate16.04から必要なファイルを取り出し、一時保存するためのフォルダです。僕はGUIで作りました。それぞれのフォルダ(ディレクトリ)のフルパスは下記になります。
次にubuntu-mate-16.04-desktop-armhf-raspberry-pi.imgをダブルクリックしてマウントします。imgファイルはそのままでディスクのようにマウントすることができます。するとPI_BOOTとPI_ROOTという二つのパーティションがマウントされます。それぞれから下記のファイルをコピーしておきます。
■ PI_BOOTの中身全てを選択して/home/hanaokacyan/rp3/bootにコピー
これで準備完了なのでPI_BOOTとPI_ROOTをアンマウントしておきます。
次はubntu14.04のマイクロSDを書きます。マイクロSDアダプタを作業しているubntuコンピュータに接続し、新しい16GのマイクロSDをセットし、df -hコマンドでドライブ名を確認しておきます。僕の場合sdbでした。コンピュータのディスクがsdaですから、二番目のドライブとして認識されています。だいたいこうなるのではないかと思います。書き込みは下記コマンドで行います。例によって時間はかかります。(hanaokacyan,sdbは自分の環境に合わせる)
$ sudo dd bs=4M if=/home/hanaokacyan/rp3/2015-04-06-ubuntu-trusty.img of=/dev/sdb
書き込みが終わったらsyncコマンドを実行しマイクロSDを外し、再度差し込んで小さい方(67MBくらい)と大きい方(1.8GBくらい)の二つのパーティションがマウントされることを確認します。
ここで、マイクロSDが全て使えるようにパーティションを拡大します。以前の投稿で説明したラズパイ本体でやる方法は、なぜかうまくいかない場合もあるみたいなので、作業用パソコンでGPartedというフリーのディスク管理ソフトを使うのがいいと思います。
作業手順はこんな感じです。まずマイクロSDを差し込んでマウントし、Gpartedを起動してsdbの大きい方のパーティションを容量いっぱいまで拡張します。この辺は情報がたくさんあるので、そちらを参考にしてください。
ここからubuntu 14.04を書き込んだマイクロSDを、ラズパイ3で使用できるように「改造」します。
最初にラズパイ3で起動できるよう、"boot"パーティション(小さい方)の中身を16.04のものとそっくり入れ替えます。
■ GUIで小さい方(67MBくらい)のパーティションの中身をすべてゴミ箱へドラッグして消去、さっきコピーしておいた/home/hanaokacyan/rp3/bootの中身をドラッグしてコピー
次は"root"パーティション(大きな方)に、16.04からカーネル関係のファイルをコピーします。ここから先はGUIではやりにくいのでコマンドラインで作業します。一部スクリーンショットが古くてパーティション拡大されていないものがありますが、その辺は気にしないでください。
■ドライブ名を確認するためにdf -hコマンドを実行
hanaokacyan@T61:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 4.0K 1.9G 1% /dev tmpfs 388M 2.9M 386M 1% /run /dev/sda1 107G 31G 70G 31% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1.9G 92M 1.9G 5% /run/shm none 100M 64K 100M 1% /run/user /dev/sdb2 1.7G 420M 1.2G 27% /media/hanaokacyan/3aee2e0f-21f9-43c8-a4d3-e864f5d72d37 /dev/sdb1 64M 37M 28M 57% /media/hanaokacyan/AB3E-B34D
■そのパーティションの/lib/modprobe.dへ移動
$ cd /media/hanaokacyan/3aee2e0f-21f9-43c8-a4d3-e864f5d72d37/lib/modprobe.d
■16.04からコピーしておいたmodprobe.dの中には、aliases.confというファイル一つあるだけなので、これをマイクロSDの/lib/modprobe.dへコピー
$ sudo cp /home/hanaokacyan/rp3/root/modprobe.d/aliases.conf aliases.conf
■同じパーティションの/lib/modulesへ移動
$ cd /media/hanaokacyan/3aee2e0f-21f9-43c8-a4d3-e864f5d72d37/lib/modules
■同じく16.04からコピーしておいたmodulesの中には、4.1.19+と4.1.19-v7+の二つのフォルダがあるので、これらをマイクロSDの/lib/modulesへコピー
$ sudo cp -r /home/hanaokacyan/rp3/root/modules/4.1.19+ 4.1.19+
$ sudo cp -r /home/hanaokacyan/rp3/root/modules/4.1.19-v7+ 4.1.19-v7+
これで終了です。syncコマンド実行後、マイクロSDを外してください。念のため作業用パソコンも再起動してから、今の改造が反映されているかどうか確認しておきます。
今回はここまで、ここまでのマイクロSDをモニタとキーボードを接続したラズパイ3に入れて、以前の投稿のように起動することができます。次回は各種設定をします。
【後日追加】もっといい方法がありました。さきにこちらを見てください。
ROS indigoを使うには、ラズパイ3にubuntu 14.04LTSをインストールします。正式対応したバイナリーがないので、ラズパイ2用のモノを改造して起動できるようにします。僕が開発したわけではなく、元ネタはこちらのサイトで、これの追試ということです。まずは準備編として、必要ファイルや環境を用意します。
今回の作業は全てubuntuを入れたラップトップパソコンで行いました。ROSを使うには、コントロール用や開発用としてubuntuパソコンは必須です。僕はlenovoの中古をよく使っています。ubuntuとの相性も良く、タマ数も多いので入手しやすいと思います。
マイクロSDカードは16GBのものを用意しました。新品ならば問題ないですが、一度ラズパイで使ったものはパーティションの削除と再フォーマットが必要です。
最初に作業用のディレクトリをホームディレクトリの直下に作ります。僕はGUIで作り名前はrp3にしました。これは作業に必要なだけですから、後で消しても構いません。以降の説明はこのディレクトリがあるものとして書いてあります。rp3のフルパス表記は下記になります。僕のログイン名はhanaokacyanなので、以下の説明に出てくるフルパス表記ではhanaokacyanを皆さんのログイン名に読み替えてください。
/home/hanaokacyan/rp3
次は必要なファイルをダウンロード、解凍します。ファイルは全てrp3の直下に置くようにします。
ここからraspberry pi3用のubuntu MATE 16.04LTSをダウンロードします。ダウンロードページに進んだら、raspberry pi3用のイメージファイルを選択してダウンロードします。現時点でのファイル名は、ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xzで解凍すると ubuntu-mate-16.04-desktop-armhf-raspberry-pi.imgができます。解凍にはちょっと時間がかかるようです。これをrp3の直下に置きます。
次にラズパイ2用のubuntu 14.04LTSをここからダウンロードして解凍します。最近ラズパイ3でも使える16.04LTSも公開になっているようですが、ページの下の方にある14.04LTSを選択します。zipを解凍すると 2015-04-06-ubuntu-trusty.imgができます。同様にrp3の直下に置きます。
これで準備完了です。次回はubuntu 14.04LTSをマイクロSDに書き込み、ファイルを入れ替えラズパイ3をubuntuで起動できるようにします。
誰かがやってくれるのをいつまで待っていてもしょうがないので、自力でラズパイ3でturtlebotを動かしてみることにしました。ラズパイ2のクロックは900MHzですが、3では1200MHzと3割ほどスピードアップします。遅めだったマップ確定がスムーズになるのを期待してのことです。
ラズパイ2用のubuntu 14.04のブートセクションとライブラリの一部を、ラズパイ3用のUbutuMateのファイルと入れ替え、ラズパイ3でブートできるようにします。以前検討した方式です。この方式は、システムファイルを入れ替えてしまうので、apt-get upgrade (updateではありません)でシステムの更新ができません。現在の構成で固定することになります。また、「寄せ集め」のシステムですから、何か不具合が発生する可能性もあります。
ダメ元でいいからやってみようと、土日を潰して試してみました。Hanabot 2のラズパイ2を無効にし、kinectやroombaをラズパイ3に接続しました。実験の具合はこんな風です。
ラズパイ3はケースに入れてフレームに投げ込んであります。電源はモバイルバッテリーから供給しました。これはHanabot 2の5V電源が、最大1Aと少々小さめだからです。バッテリーは2Aくらい供給できますから、おかしな動作をした時に電源のせいではないかと疑わなくて済みます。
ROSのインストールは、少々手こずったところもありましたが、ubuntuの改造以外は、基本的にラズパイ2の時と同じ手順でできました。turtlebotのインストールも同様です。ただ、内蔵無線LANは残念ながら認識しませんでした。実験ではラズパイ2に使ったのと同じ無線LANプラグを使っています。
実際にマッピング、ナビゲーションなどを試してみたところ、特に問題なく動作しました。確かにマッピングでラズパイ2よりスムーズに部屋の輪郭が確定するようです。また、launchの実行も若干早くなりました。これは良いですね。
とりあえず、ラズパイ3でROS indigoが動きますし、turtlebotも使えます。パッケージもapt-get install で素直に取り込めます。実用的には十分だと思います。次回以降、今回のインストール手順を投稿していきたいと思います。
ラズパイ3は好評のようで、僕のまわりでも使い始める人が増えています。僕のturtlebotコンパチ機、Hanabot 2もラズパイ3にしたいところですが、簡単にはいきません。turtlebotを動かすにはROSのhydroかindigoが必要です。最近のjadeやkineticには対応していません。
ラズパイ3で提供されているubuntuのディストリビューションはUbuntuMateで、15.10と16.04LTSだけです。indigoの動く14.04LTSは提供されていません。
以前の投稿でラズパイ3で14.04LTSを動かす裏技を紹介しました。僕もこの方法でindigoを動かすことには成功しましたが、 apt-get upgrade(updateではありません)してシステムを更新しようとすると、当然ながら起動しなくなります。組み込みではOSのバージョンを固定するのは当たり前なので、そういう意味ではアリだと思いますが、教材として使うにはちょっとどうかなと思います。
と、なると誰かが、今後のメインストリームとなる16.04LTSとkineticでturtlebotを動かしていないかな、と探してみました。この議論によると「進行中」といった感じで、インストールスクリプトの紹介もあります。いずれ使えるようになるのではと思いますが今試してみるのはちょっと大変かもしれません。先日米国で開催されたMaker Faireに出展したみたいです。
もちろん、rasbianをインストールしたラズパイ3でROS indigoを動かすには、このサイトの手順で、ROSをソースからインストールすればよいです。ただし、パッケージをインストールするにはapt-get installではなく、ソースからインストールする必要があります。また、インストールできない場合もあるようです。残念ながらturtlebotもインストールで失敗しました。
さあ、どうしましょう。