ラズベリーパイ(Raspberry Pi 3)で動かすソフトウェアの開発環境を
どこに構築しようかと考えた話です。
結果的にはVirtualBoxでUbuntu 20.04のVMを作成し、
その中に開発環境を構築しました。
また、VirtualBoxでシリアルポートの設定をすることで、
VMからラズパイにシリアル接続できるようにしました。
下の図は今回構築した開発環境の構成図です。
今回の記事では、
どんな経緯でこの開発環境の構成にしたか、
を話していきます。
ご参考にしていただければと思います。
この検討に至った背景
ラズパイで自分でビルドしたブートローダ(U-Boot)やOS(Linux)を動かすために、
どこかに開発環境を構築する必要がありました。
下はソフトウェアの入手から実行までの手順を書いたものです。
- ソフトウェアのソースコードを用意する
- ビルド(クロスコンパイル)する
- ビルド生成物をSDカードに入れる
- SDカードをラズパイにセットする
- シリアルコンソールでラズパイとの接続を確立する
- ラズパイの電源を入れる
今回、開発環境と言っているのは、
手順2のクロスコンパイルをする環境やそのソースコードを置く場所のことです。
開発環境の構築やビルド作業は、
失敗がつきものだったり、
手順を見返すためにもう一度やってみたかったりするので、
白紙に戻してやり直せるような環境が良いなと思っていました。
白紙に戻せないと、
何をインストールしたから何ができるようになったのか、
ということの整理ができないですからね。
開発環境の構築場所の検討結果
結論:LinuxをインストールしたVMを開発環境とする
ブートローダやOSは、Linux上に開発環境を構築するのが一般的で、
思いつく候補としては、
①お古のノートPCにLinuxをインストールする
②普段使っているWindows 10のWSLを使う
③普段使っているWindows 10 にVirtualboxをインストールしてVMにLinuxをインストールする
がありました。
前述した「白紙に戻してやり直せるような環境が良い」を考えると、候補①か候補 ③です。
さらに、起動の手軽さや置き場を考えると候補③が良いかなと思いました。
さらには、「この環境は取っておきつつ、白紙に戻して構築しなおしたい」
ということもあるかもしれないので、
やっぱりそのような融通も利く候補 ③がよさそうという結論に至りました。
VMの構築に慣れておくとやれることの幅が広がるどころか、
なにより面倒なことを省けるので飽きずに続けることができますね。大事なことです。
追加検討:ラズパイとのシリアル接続
ソースコードの置き場やビルド環境としてだけでなく、
ラズパイとシリアル接続する環境もVMに構築したいと思いました。
つまり、ラズパイとVMが仮想的なシリアルケーブルで接続されているような
環境を構築したいと思いました。
これには、
PCへのシリアルポートをVMへのシリアルポートに接続するように
Virtualboxを設定する必要があります。
設定はこちらの外部サイトを参考にさせていただきました。感謝です。
前提として、
PCとラズパイはシリアルケーブルで接続されていて、
PC(Windows 10)でUSBシリアルが使える状態になっている必要があります。
苦戦しつつも、PCとラズパイとのシリアルケーブルの接続に成功した話を
下の記事に書いています。ご参考まで。
VirtualBoxのシリアルポートの設定をすると、ラズパイにつながっているUSBシリアルは、
私のVM(Ubuntu 20.04)上では/dev/ttyS0として見えました。
/dev/ttyS0に対してシリアルコンソールで接続を確認できました。
Windows 10ではTeraTermを使うのが一般的ですが、
Linuxではcuやminicomを使うのが一般的ですね。今回はminicomを使いました。
おわりに
今回は、 「白紙に戻してやり直せるような環境が良い」ということを考えて、
VirtualBoxでUbuntu 20.04のVMを作成し、
その中にラズパイ上で動かすソフトウェアの開発環境を構築しました。
また、VirtualBoxでシリアルポートの設定をすることで、
VMからラズパイにシリアル接続できるようにしました。
今回構築した環境の構成を下記に示します。
これでハード的な環境は整いました。
今後はクロスコンパイラのインストールやブートローダやOSのビルド等、
ソフト的な準備を進めていこうと思います。
最後にお知らせです。
ラズベリーパイ(Raspberry Pi)をリモート経由でご利用いただける、
仮想ラズパイサービスをご提供しています。
ご興味持たれた方はこちらもご覧ください。
コメント